Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何首先在下拉列表中回显先前选择的选项?_Php_Option - Fatal编程技术网

Php 如何首先在下拉列表中回显先前选择的选项?

Php 如何首先在下拉列表中回显先前选择的选项?,php,option,Php,Option,我正在使用下面的位。我首先查询数据库以查看所有可用选项,但这是一个编辑表单,因此我希望下拉列表显示以前选择的值,因此我进行了另一次查询并获得了选择。当我按照下面的方式进行操作时,它会在每个可用选项后重复先前选择的选项。如何解决这个问题 <option>Select Sales rep</option> <?php $query="select agent_id, agent_name from agent_names where agent_id='$ad' o

我正在使用下面的位。我首先查询数据库以查看所有可用选项,但这是一个编辑表单,因此我希望下拉列表显示以前选择的值,因此我进行了另一次查询并获得了选择。当我按照下面的方式进行操作时,它会在每个可用选项后重复先前选择的选项。如何解决这个问题

<option>Select Sales rep</option>
<?php

$query="select agent_id, agent_name from agent_names where agent_id='$ad' 
order by agent_name asc";
$result=mysql_query($query);
while(list($agent_id, $agent_name)=mysql_fetch_row($result)) {
    echo "<option value=\"".$previousname."\">".$previousselection."</option>
    <option value=\"".$agent_id."\">".$agent_name."</option>";
}


?>
选择销售代表

只需检查
$agent\u id
是否等于
$previousname
(也许您的意思是
$previousid
?),如果是,则回显selected=“selected”:

while(list($agent\u id,$agent\u name)=mysql\u fetch\u row($result)){
$selected=$agent\u id==$previousname;
回显“$agent_name.”;
}

另一个选项是在while循环之前输出上一个选中的项,并在sql查询中排除它。

您应该将上一个选项从while中删除。。像这样:

<?php

$query="select agent_id, agent_name from agent_names where agent_id='$ad' 
order by agent_name asc";
$result=mysql_query($query);
echo "<option value=\"".$previousname."\">".$previousselection."</option>";
while(list($agent_id, $agent_name)=mysql_fetch_row($result)) {
    echo "<option value=\"".$agent_id."\">".$agent_name."</option>";
}


?>
$query = "SELECT agent_id, agent_name FROM agent_names WHERE agent_id='$ad' 
ORDER BY agent_id = '{$previousname}' DESC, agent_name ASC";

您可以强制MySQL在列表中首先返回所需的结果,如下所示:

<?php

$query="select agent_id, agent_name from agent_names where agent_id='$ad' 
order by agent_name asc";
$result=mysql_query($query);
echo "<option value=\"".$previousname."\">".$previousselection."</option>";
while(list($agent_id, $agent_name)=mysql_fetch_row($result)) {
    echo "<option value=\"".$agent_id."\">".$agent_name."</option>";
}


?>
$query = "SELECT agent_id, agent_name FROM agent_names WHERE agent_id='$ad' 
ORDER BY agent_id = '{$previousname}' DESC, agent_name ASC";
这会告诉MySQL首先按照
agent\u id
匹配前面的选择进行排序(即,对于先前选择的记录,它将是
1
,对于所有其他记录,它将是
0
,因此按它排序
DESC
将使它在列表中位于第一位。由于所有其他记录的此字段将等于
0
,因此它们将按第二个字段排序,即
代理名称ASC