Как повторить ранее выбранный параметр в раскрывающемся списке?

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

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


?>


person KPO    schedule 17.05.2011    source источник


Ответы (2)


Просто проверьте, равно ли $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.

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

person mkilmanas    schedule 17.05.2011