繁体   English   中英

如何在下拉菜单中首先回显先前选择的选项?

[英]How to echo previously selected option in drop down first?

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

<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_id等于$previousname (也许是$previousid吗?),然后回显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查询中。

您应该暂时不要选择previos。..像这样:

<?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,它不会自我重复:

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

?>

您可以强制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 ,因此,通过它进行排序, DESC使其在列表中排在首位。而且由于所有其他字段的该字段等于0 ,它们将按第二个字段(即agent_name ASC排序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM