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

时间:2011-05-17 18:22:58

标签: php option

我使用下面的跟随位。我首先查询数据库以查看所有可用选项,但这是一个编辑表单,所以我希望下拉显示以前选择的值,所以我做了另一个查询并得到了选择。当我按照下面的方式进行操作时,它会在每个可用选项后继续重复之前选择的选项。你想解决这个问题吗?

<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>";
}


?>

3 个答案:

答案 0 :(得分:2)

只检查$agent_id是否等于$previousname(也许你的意思是$previousid?)和echo selected =“selected”如果是这样的话:

while(list($agent_id, $agent_name)=mysql_fetch_row($result)) {
    $selected = $agent_id == $previousname;
    echo "<option " . ($selected ? "selected=\"selected\"" : "") . " value=\"".$agent_id."\">".$agent_name."</option>";
}

另一种选择是在while循环之前输出之前选择的项目,并在sql查询中将其排除。

答案 1 :(得分:1)

你应该暂时选择以前的选择..像这样:

<?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>";
}


?>

甚至可能添加一个if if它不会重复它自己:

$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)) {
  if ($agent_id != $previousname) {
    echo "<option value=\"".$agent_id."\">".$agent_name."</option>";
  }
}

?>

答案 2 :(得分:1)

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

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

这首先告诉MySQL按agent_id匹配先前的选择进行排序(即先前选择的记录为1,所有其他记录为0,因此按{{1}进行排序首先在列表中使它。并且由于所有其他字段都将等于DESC,因此它们将按第二个字段排序,即0