Как повторить ранее выбранную опцию в выпадающем списке в первую очередь? - PullRequest
2 голосов
/ 17 мая 2011

Я использую следующий бит ниже.Сначала я запрашиваю базу данных, чтобы увидеть все доступные опции, но это для формы редактирования, поэтому я хочу, чтобы в раскрывающемся меню отображалось ранее выбранное значение, поэтому я сделал другой запрос и получил выбор.Когда я сделаю это так, как показано ниже, он будет повторять ранее выбранный выбор после каждой доступной опции.КАК это исправить?

<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 ]

2 голосов
/ 17 мая 2011

Просто проверьте, равен ли $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 голос
/ 17 мая 2011

Вы можете заставить 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, соответствующему предыдущему выбору (т. Е. Дляранее выбранная запись и 0 для всех остальных, следовательно, сортировка по ней DESC делает ее первой в списке. И поскольку все остальные будут иметь эти поля равными 0, они будут отсортированы по второму полю, котороеagent_name ASC

1 голос
/ 17 мая 2011

Вы должны временно исключить выделение предыдущего типа, например:

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

?>
...