[英]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.