Как показать, какие элементы формы уже выбраны в PHP
Как я могу получить этот код, чтобы показать, какая опция уже выбрана?
Это в основном страница редактирования, которая извлекает информацию из базы данных и заполняет соответствующие поля.
У меня есть раскрывающееся меню, окно множественного выбора и переключатели на странице вместе с некоторыми элементами. Информация отображается в элементах нормально, но я не могу понять, как заставить s и переключатели отображаться выбранными, если они совпадают с информацией из базы данных.
код:
<select name="client">
<option value="empty">Change Client...</option>
<?php
$result2 = mysql_query("SELECT name FROM clients") or die("Database query failed: " . mysql_error());
while($row = mysql_fetch_assoc($result2)) {
$clientlist = $row['name'];
$clientname = htmlspecialchars($row['name']);
if ($_POST['client'] == $clientlist)
{
echo '<option value="' . $clientlist . '" selected="selected" >' . $clientname . '</option>' . '\n';
}
else{
echo '<option value="' . $clientlist . '" >' . $clientname . '</option>' . '\n';
}
}
?>
</select>
</p>
<p class="subheadsmall">Core Classification</p>
<?php
switch ($niche) {
case "brand":
echo '<input type="radio" name="niche" value="Brand" checked="checked" />Brand';
echo '<input type="radio" name="niche" value="Marketing" />Marketing';
echo '<input type="radio" name="niche" value="Communication" />Communication';
break;
case "marketing":
echo '<input type="radio" name="niche" value="Brand" />Brand';
echo '<input type="radio" name="niche" value="Marketing" checked="checked" />Marketing';
echo '<input type="radio" name="niche" value="Communication" />Communication';
break;
case "communication":
echo '<input type="radio" name="niche" value="Brand" />Brand';
echo '<input type="radio" name="niche" value="Marketing" />Marketing';
echo '<input type="radio" name="niche" value="Communication" checked="checked" />Communication';
break;
default;
echo '<input type="radio" name="niche" value="Brand" />Brand';
echo '<input type="radio" name="niche" value="Marketing" />Marketing';
echo '<input type="radio" name="niche" value="Communication" />Communication';
break;
}
?>
<p class="subheadsmall">Strategies</p>
<p class="sidebargrey">
<?php
$result = mysql_query("SELECT strategies FROM studies WHERE id = '$id';
if (!$result) {
die("Database query failed: " . mysql_error());
}
while($row = mysql_fetch_array($result)) {
$strategyname = $row['strategies'];
echo $strategyname.'<br />';
}
?>
<p class="subheadsmall">Add a strategy... (hold down command key to select more than one)</p>
<select name="strategies[]" multiple="multiple">
<?php
$result = mysql_query("SELECT * FROM strategies");
if (!$result) {
die("Database query failed: " . mysql_error());
}
while($row = mysql_fetch_array($result)) {
$strategylist = $row['name'];
$strategyname = htmlspecialchars($row['name']);
$pagelink = str_replace(" ","_",$strategylist);
echo '<option value="<a href="strategies.php?strategy=' . $pagelink . '">'.$strategyname.'</a>" >' . $strategyname . '</option>' . '\n';
}
?>
</p>
3 ответа
Вы должны - если возможно - изменить эту группу радиопечати на цикл for. Тогда вы можете сделать что-то вроде этого:
foreach ($possibleRadios as $key => $val)
{
echo '<input type="radio" name="' . $val->name . '" value="' . $val->id . '" ' . ($isSelected($val->id) ? 'selected="selected' : '') . ' />$val->prettyName';
}
Вы можете использовать JavaScript для этого. Мой пример использует jquery
Сначала дайте каждому из ваших флажков идентификатор так
echo '<input type="radio" name="niche" id="brand" value="Brand" />Brand';
echo '<input type="radio" name="niche" id="marketing" value="Marketing" />Marketing';
echo '<input type="radio" name="niche" id="communication" value="Communication" />Communication';
Тогда ваш JS будет
$( "brand" ).attr( "checked", true ); // this would check the brand box
Так что вы можете просто выписать их по мере необходимости.
Измените selected="selected" на только что выбранные. Похоже, что этот атрибут не требует назначения.
Возможно, вы также захотите проверить выводимый HTML-код, чтобы убедиться, что ваше назначение оценивается как true.