Динамическое выпадающее меню с жестко заданным выбором
Я искал на сайте (и через Google), но я думаю, что я мог бы перефразировать мою проблему.
Вот моя ситуация. У меня есть этот динамически заполненный раскрывающийся список (который работает), который может в некоторых случаях получить значение для отображения определенного параметра.
echo "<td><select id='bids_id' class='ui-widget-content ui-corner-all normalselect' style='width: 150px'>";
$sql = "SELECT
`bids`.`id`,
`bids`.`name`
FROM
`bids`
Inner Join `bids_primes` ON `bids`.`id` = `bids_primes`.`bid_id`
WHERE
`bids_primes`.`tid` = '". $db->real_escape_string($_SESSION['Current_TID']) ."'
";
$querybids = $db->query($sql);
while($row = $querybids->fetch_object()) {
echo "<option value='{$row->id}' ". ($row->id == $timeinfo->relatedbid ? "selected=selected" : "") .">{$row->name}</option>";
}
Теперь единственное, что я пытаюсь сделать, но без удачи, это добавить "жестко закодированный" выбор со значениями "0" и текстом "Other". Этот выбор также должен быть связан с той же механикой (где он может быть указан для предварительного выбора).
[ОБНОВЛЕНИЕ] Итак, чтобы помочь с контекстом моей ситуации, вот код, который предшествует этой части. Это PHP-файл, который вызывается из другого PHP-файла (тот же принципал, что и у div). Рассматриваемый PHP - это форма ввода, которая используется как для ввода новых данных, так и для изменения существующих данных (и это взаимодействует с базой данных).
Сценарий знает, добавляет ли он или модифицирует его на основе "entry_id", который он получает как параметр, немного как функция.
if(isset($_REQUEST['entry']) && ($_REQUEST['entry'] > 0)) {
$sql = "SELECT
`cap_plan`.`entryid`,
`cap_plan`.`startdate`,
`bids`.`name`,
`cap_plan`.`duration`,
`cap_plan`.`description`,
`cap_plan`.`relatedbid`
FROM
`cap_plan`
LEFT JOIN
`bids` ON `cap_plan`.`relatedbid` = `bids`.`id`
WHERE
`cap_plan`.`entryid` = '". $db->real_escape_string($_REQUEST['entry']) ."'
";
$timeinfo = $db->query($sql)->fetch_object();
}
else {
$timeinfo = new StdClass();
$timeinfo->entryid = 0;
$timeinfo->employee = $_SESSION['name'];
$timeinfo->startdate = date("Y-m-d");
$timeinfo->duration = "";
$timeinfo->description = "";
$timeinfo->relatedbid = "0";
}
Вот скриншот, чтобы проиллюстрировать все это: http://i.imgur.com/EYcXfO9.png
2 ответа
Если я правильно понимаю ваш вопрос, все, что вы хотите сделать, это вставить жестко запрограммированную опцию вверху списка, ДО динамически генерируемых вариантов.
Просто сделай это:
echo "<td><select id='bids_id' class='ui-widget-content ui-corner-all normalselect' style='width: 150px'>";
echo "<option value = '0'>Choose One</option>";
$sql = "SELECT etc etc etc
etc.
Обратите внимание, что вам не нужно указывать выбранный атрибут в первом стандартном теге параметра (параметр "Выбрать один"), поскольку он автоматически будет выбранным параметром, если больше ничего не выбрано. Я считаю, что это то, что вы хотели бы.
Однако я хотел бы назначить все значения переменной, а затем отобразить ее, чтобы все выглядело сразу. Как это:
$opt = "<td><select id='bids_id' class='ui-widget-content ui-corner-all normalselect' style='width: 150px'>";
$opt .= "<option value = '0'>Choose One</option>";
$sql = "SELECT etc etc etc";
$querybids = $db->query($sql);
while($row = $querybids->fetch_object()) {
$opt .= "<option value='{$row->id}' ". ($row->id == $timeinfo->relatedbid ? "selected=selected" : "") .">{$row->name}</option>";
}
echo $opt;
Я собираюсь поставить это здесь:
То, что значение равно 0, не означает, что оно будет первым в списке; он будет первым, потому что он первый в HTML.
В
<select>
элемент формы со всеми его параметрами, должен быть только один вариантselected
, Если это правда, и вы тестируете все варианты ДРУГОЕ, чем "другие", то ни один из ваших<options>
получитselected
атрибут, если опция, на самом деле, "другое". Итак, ваш первый вариант ("другой") будет выбран, потому что он первый.
Имеет ли это смысл?