<select name="select"> </select>
Я хочу заполнить вышеуказанный тег значениями из базы данных.
Я написал PHP-код до этого.
while($row=mysql_fetch_array($result)) { }
вwhile($row=mysql_fetch_array($result)) { }
$ row извлекает правильные значения .. как добавить его в <select>
помогите … Я новичок в программировании
Что-то вроде этого:
echo '<select name="select">'; while($row=mysql_fetch_array($result)) { echo '<option value="' . htmlspecialchars($row['column_for_value']) . '">' . htmlspecialchars($row['column_for_label']) . '</option>'; } echo '</select>';
вecho '<select name="select">'; while($row=mysql_fetch_array($result)) { echo '<option value="' . htmlspecialchars($row['column_for_value']) . '">' . htmlspecialchars($row['column_for_label']) . '</option>'; } echo '</select>';
Конечно, вам решать, какие элементы из $row
следует использовать для значения и текста каждого <option>
Просто убедитесь, что вы избегаете данных, которые поступают из вашего БД, особенно если он может содержать HTML; поскольку вы выводите HTML, это можно сделать с помощью htmlspecialchars
или htmlentities
.
Обратите внимание, что это может привести к нескольким дополнительным параметрам, которые я не использовал в моем примере, – это может быть полезно, в зависимости от используемой кодировки.
Вы можете видеть, что доступно для использования, делая это в то время:
var_dump($result); exit;
Это напечатает первый результат и его содержимое массива. Затем вы можете увидеть, какое поле вы хотите использовать для заполнения опции. Оттуда вы сделаете что-то вроде:
foreach ($result['field'] as $field) { print '<option value="'.$field.'">$field</option>'; }
Конечно, это очень простой пример, и, как другие отметили, вы можете очистить данные, прежде чем вводить их в форму.
$selected_value="selected_value"; echo '<select name="select">'; while($row=mysql_fetch_array($result)) { if($selected_value==htmlspecialchars($row['column_for_value'])) $selected=' selected'; else $selected=''; echo '<option value="'.htmlspecialchars($row['column_for_value']).'"'.$selected.'>' .htmlspecialchars($row['column_for_label']). '</option>'; } echo '</select>';
в$selected_value="selected_value"; echo '<select name="select">'; while($row=mysql_fetch_array($result)) { if($selected_value==htmlspecialchars($row['column_for_value'])) $selected=' selected'; else $selected=''; echo '<option value="'.htmlspecialchars($row['column_for_value']).'"'.$selected.'>' .htmlspecialchars($row['column_for_label']). '</option>'; } echo '</select>';
Некоторое дополнение к коду Pascal MARTIN, для автоматического выбора некоторого предопределенного значения
Я редактировал последнюю запись, и она отлично работает. Единственная проблема, с которой я столкнулся, – это когда пользователь отправил форму, в которой выпадающий список пуст … Кто-нибудь знает простое решение
echo '<select name="course" id="course" >'; while( $option = mysql_fetch_array($course_results)) { echo "<option value=".htmlspecialchars($option['cid']).">".htmlspecialchars($option['cname'])."</option>"; } echo "</select>";
Все приведенные выше ответы будут работать, но не являются правильными и требуют дополнительной работы. Вы не должны использовать эхо для вывода на экран, и вам не нужно. В приведенном ниже примере предполагается, что вы используете объекты, содержащие данные, но вы получаете идею.
<select name="sales_person"> <?php foreach ($sales_people as $sales_person){?> <option value="<?=$sales_person->first_name?> <?=$sales_person->last_name?>"><?=$sales_person->first_name?> <?=$sales_person->last_name?></option> <?php }?> </select>
Дело в том, что вам не нужно выделять html
echo "<select>"; while( $option = mysql_fetch_array($result)) { echo "<option>".htmlspecialchars($option['column'])."</option>"; } echo "</select>";
echo '<select>'; while($row=mysql_fetch_array($result)) { echo '<option>'.$row['whatever_index'].'</option>'; } echo '</select>';
Замените «whatever_index» на имя столбца, которое вы выбираете.