PHP:如何使选择框工作,以及如何停止下拉菜单选择,从重置为按钮单击时的第一个选项

PHP:如何使选择框工作,以及如何停止下拉菜单选择,从重置为按钮单击时的第一个选项,php,drop-down-menu,listbox,Php,Drop Down Menu,Listbox,我对PHP还是比较陌生的,我遇到了一些问题 我设置了一个参数化查询,它使用选定的区域和选定的子系统打印报告。用户从带有5个硬编码区域的选择框中选择区域。然后他们从下拉菜单中选择一个子系统,查询数据库中的行 我没有复制下面的所有代码,只是相关部分 以下是我在列表框的函数页面上的代码: <?php function listbox($query, $name, $previous, $db){ $result=mysqli_query($db,$query) or die("Query

我对PHP还是比较陌生的,我遇到了一些问题

我设置了一个参数化查询,它使用选定的区域和选定的子系统打印报告。用户从带有5个硬编码区域的选择框中选择区域。然后他们从下拉菜单中选择一个子系统,查询数据库中的行

我没有复制下面的所有代码,只是相关部分

以下是我在列表框的函数页面上的代码:

<?php

function listbox($query, $name, $previous, $db){

 $result=mysqli_query($db,$query) or die("Query ($query) is incorrect!");
 print "<select name=\"$name\">\n";
 while ($row = mysqli_fetch_row($result)){ //Table body
 if($row[0] == $previous){
 print "\t<option value=\"$row[0]\" selected=\"selected\">$row[0]</option>\n";
 }else{
 print "\t<option value=\"$row[0]\">$row[0]</option>\n";
 }
 }
 print "</select>";
 }
?>

以下是我在调用函数页的索引页上的代码:

<?php

$default = "";
$previous = "";
$name4 = "region";
$name1 = "sub";


?>

    <select name="<?php print $name4 ?>" size="5">
    <option value="Option 1" selected>West</option>
         <option value="Option 2">North Central</option>
         <option value="Option 3">South Gulf</option>
          <option value="Option 4">North East</option>
    <option value="Option 5">South Atlantic</option>
</select>

<?php listbox($SubsystemListbox_strSQL, $name1, $previous, $db) ?>


 if(isset($_POST['Submit'])){


$ByRegionCap_strSQL = "CALL `unit_costs_db`.`Subsystem_Average_Capital_Costs`('{$_POST[$name4]}', '{$_POST[$name1]}');";

}


重新加载页面时,所有HTML元素都会返回初始状态。
您必须通过HTTP POST获取select的内容,并将其设置为正确选项“selected”

是否将表单提交到同一脚本

然后你可以做smth,比如:

<select name="<?php print $name4 ?>" size="5">
  <option value="Option 1" <?=$_POST[$name4] == 'West' ? 'selected' : ''?>>West</option>
  <option value="Option 2" <?=$_POST[$name4] == 'North Central' ? 'selected' : ''?>>North Central</option>
  <option value="Option 3" <?=$_POST[$name4] == 'South Gulf' ? 'selected' : ''?>>South Gulf</option>
  ...
</select>
西部 >南湾 ...

如果是另一个脚本,您可以在会话中保存数据,并通过$\u会话而不是$\u POST进行访问。

可能与此无关,但我看到的第一件事是打印选项的方式:

print "\t<option value=\"$row[0]\">$row[0]</option>\n";
打印“\t$row[0]\n”;
PHP不允许对数组执行此操作。您需要断开您的字符串:

print "\t<option value=\"".$row[0]."\">".$row[0]."</option>\n";
打印“\t”。$row[0]。“\n”;
或使用大括号:

print "\t<option value=\"{$row[0]}\">{$row[0]}</option>\n";
打印“\t{$row[0]}\n”;
要保留选定的值,您需要跟踪它们并手动选择所需的值。在您的情况下-检查$previous变量是否正确填充了数据