Я пытаюсь позволить пользователям выбирать состояние из раскрывающегося списка в форме, но хотя запрос работает, БД подключена, раскрывающийся список не отображает список.
Не уверен, что это актуально, но я использую Windows Server, IIS 10 и последние версии PHP и MySql.
<div class = "form-group col-md-3">
<label for = "state">State</label>
<select class = "form-control" name = "state" id = "state">
<?php
// Query to find STATE
$sql1 = "SELECT * FROM codetable WHERE category = 'state'";
$result1 = $conn->query($sql1);
$row1 = mysqli_fetch_array($result1);
while($row1 = mysqli_fetch_array($result1))
{
echo '<option value = " '.$row1['code'].' "> '.$row1['description'].' </option>';
}
?>
</select>
</div>
Я ожидаю, что список из БД будет в раскрывающемся списке, но он пуст (нет раскрывающегося списка).
Не ставьте пробелы вокруг значения параметра.
Видите ли вы варианты, если используете View Source
?
Избавьтесь от $row1 = mysqli_fetch_array($result1);
перед циклом while и замените цикл этим...
while($row1 = mysqli_fetch_array($result1))
{
?>
<option value = "<?php echo $row1['code']; ?>"><?php echo $row1['description']; ?></option>
<?php
}
Повторение HTML не является хорошей практикой. Разбивайте его тегами PHP, когда это возможно, это значительно облегчит отладку вашего кода.
Дополнение: как отобразить запись БД в форме редактирования и при этом позволить раскрывающемуся меню работать с обновлениями?
удалить свой первый
$row1 = mysqli_fetch_array($result1);
линия & поместите две переменные (результат и строку1) в var_dump, чтобы получить отладку
Почему у вас есть дополнительный вызов
mysqli_fetch_array()
перед циклом? Это пропустит первую строку.