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