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