Как заполнить выпадающий список HTML со значениями из базы данных
как часть формы HTML, которую я создаю, я хотел бы иметь раскрывающийся список, в котором будут перечислены все имена пользователей в моей базе данных.
Я думал, что следующий код будет делать трюк, но выпадающий список пуст - может ли кто-нибудь помочь мне в том, что я делаю неправильно? Спасибо.
<tr>
<td>Owner</td>
<td>
<select name="owner">
<?php
$sql = mysqli_query($connection, "SELECT username FROM users");
while ($row = $sql->fetch_assoc()){
?>
<option value="owner1"><?php echo $row['username']; ?></option>
<?php
// close while loop
}
?>
</td>
</tr>
Ответы
Ответ 1
Я предполагаю, что у вас есть проблема, так как вы не закрываете свой тег select после цикла. Может ли это сделать трюк?
<select name="owner">
<?php
$sql = mysqli_query($connection, "SELECT username FROM users");
while ($row = $sql->fetch_assoc()){
echo "<option value=\"owner1\">" . $row['username'] . "</option>";
}
?>
</select>
Ответ 2
Ниже приведен хороший код. Он был предоставлен кем-то другим по имени aaronbd на этом форуме.
<?php
$conn = new mysqli('localhost', 'username', 'password', 'database')
or die ('Cannot connect to db');
$result = $conn->query("select id, name from table");
echo "<html>";
echo "<body>";
echo "<select name='id'>";
while ($row = $result->fetch_assoc()) {
unset($id, $name);
$id = $row['id'];
$name = $row['name'];
echo '<option value="'.$id.'">'.$name.'</option>';
}
echo "</select>";
echo "</body>";
echo "</html>";
?>
Ответ 3
Я бы посоветовал выполнить несколько шагов отладки.
Сначала запустите запрос непосредственно к БД. Подтвердите, что это приносит результаты. Даже с такой простой вещью вы можете обнаружить, что допустили ошибку, или таблица пуста, или какая-то странность.
Если вышесказанное в порядке, попробуйте зациклить и отобразить содержимое $ row непосредственно в HTML, чтобы увидеть, что вы получаете обратно в mysql_query - посмотрите, соответствует ли оно тому, что вы получили непосредственно в БД.
Если ваши данные выводятся на страницу, посмотрите, что не так в вашем HTML-форматировании.
Однако, если из $row
ничего не выводится, выясните, почему mysql_query не работает, например, имеет ли пользователь разрешение запрашивать эту БД, есть ли у вас открытое соединение с БД, может ли веб-сервер подключиться к БД и т.д. [Что-то на эти строки часто бывают хитрыми]
Слегка изменив ваш запрос на
$sql = mysql_query("SELECT username FROM users") or die(mysql_error());
может помочь выделить любые ошибки: руководство по PHP
Ответ 4
<select name="owner">
<?php
$sql = mysql_query("SELECT username FROM users");
while ($row = mysql_fetch_array($sql)){
echo "<option value=\"owner1\">" . $row['username'] . "</option>";
}
?>
</select>
Ответ 5
<?php
$query = "select username from users";
$res = mysqli_query($connection, $query);
?>
<form>
<select>
<?php
while ($row = $res->fetch_assoc())
{
echo '<option value=" '.$row['id'].' "> '.$row['name'].' </option>';
}
?>
</select>
</form>
Ответ 6
Вместо этого используйте концепцию ООП. Пожалуйста, следуйте article-
Как заполнить HTML-раскрывающийся список из таблицы MySQL с помощью функции Php?