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