Использование PHP для заполнения <select> </ select>?

<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» на имя столбца, которое вы выбираете.