【问题标题】:Display 2 array values in 1 drop down entry在 1 个下拉条目中显示 2 个数组值
【发布时间】:2026-02-09 15:05:01
【问题描述】:

我从我的MYSQL 表中选择了两列,名为Route 和Step。每个 Route 都有多个与之关联的 Step(s)。我想创建一个下拉菜单,其格式类似于以下内容:(Route:Step)。我将两列中的所有值存储到一个临时数组中。我怎样才能以我所说的格式显示结果?我已经有一个只有步骤的下拉菜单,但我也希望显示路线。

    // Get step and route list according to flow
    $d_step_list = array();
    $query= "SELECT routes.route, steps.step ".
        "FROM steps ".
        "LEFT JOIN routes_steps_cross ON steps.serial_step = routes_steps_cross.serial_step ".
        "LEFT JOIN routes ON routes.serial_route = routes_steps_cross.serial_route ".
        "LEFT JOIN flows_routes_cross ON flows_routes_cross.serial_route = routes.serial_route ".
        "LEFT JOIN flows ON flows.serial_flow = flows_routes_cross.serial_flow ".
        "WHERE flows.serial_flow = $s_flow AND routes_steps_cross.active = 1 ".
        "ORDER BY routes.serial_route, steps.serial_route ";
        if ($show_query == 1) { print "<font size=\"-1\">".$query."</font><br>\n";}
        $result = mysql_query($query) or die('Query failed: ' . mysql_error());         
    // First fill with blank data.
    $d_step_list[] = "";
  while ($temp_data = mysql_fetch_row($result)) {
        $d_step_list["route"] = $temp_data[0];
        $d_step_list["step"] = $temp_data[1];           
    }   





             print "<tr>\n";
            print "<th bgcolor=\"#E9E9E9\"><font size=\"-1\">Disposition Step</th>\n";              
            print "<td align=\"center\"><font size=\"-2\">\n";
            print " <br><select name=\"d_step\">\n";
            foreach($d_step_list as $step1_selected) 
            {
                if ($d_step == $step1_selected) 
                {
                    print "<option value=\"$step1_selected\" selected=\"1\">$step1_selected\n";
                } 
                else 
                {  
            print "<option value=\"$step1_selected\">$step1_selected\n";
                }
            } 
            print "</select>\n";
            print "</td>\n";                
            print "</tr>\n";

【问题讨论】:

    标签: php mysql arrays database drop-down-menu


    【解决方案1】:

    每次循环都会覆盖相同的数组值。应该是:

    while ($temp_data = mysql_fetch_assoc($result)) {
        $d_step_list[] = $temp_data['route'].":".$temp_data['step'];       
    }   
    

    注意,需要将元素设置为字符串,以便稍后与$d_step进行比较,打印时可以在字符串中展开。

    【讨论】:

    • 工作就像一个魅力。谢谢!抱歉,但是我该如何将元素设置为字符串?另外,我不确定“稍后将其与 $d_step 进行比较,以便在打印时将其扩展为字符串”的确切含义。提前致谢!
    • 按照您编写原始代码的方式,您似乎试图将$d_step_list 设为二维数组,每个结果位于一行中,路径和步骤位于不同的列中。但后来您尝试打印$step1_selected,就好像它只是一个Route:Step 字符串,而不是array ([route]=&gt;Route, [step]=&gt;Step)