как часть создаваемой мной 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>
Я предполагаю, что у вас есть проблема, так как вы не закрываете свой тег выбора после цикла. Может ли это сделать трюк?
<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>
Я бы предложил выполнить несколько шагов отладки.
Сначала запустите запрос непосредственно к БД. Подтвердите, что это приносит результаты. Даже с такой простой вещью вы можете обнаружить, что допустили ошибку, или таблица пуста, или какая-то странность.
Если все в порядке, попробуйте зацикливать и выводить содержимое $ row прямо в HTML, чтобы увидеть, что вы получаете в mysql_query - посмотрите, совпадает ли это с тем, что вы получили непосредственно в БД.
Если ваши данные выводятся на страницу, посмотрите, что не так в вашем HTML-форматировании.
Однако, если ничего не выводится из $row
, то выясните, почему mysql_query не работает, например. имеет ли пользователь право запрашивать эту БД, есть ли у вас открытое соединение с БД, может ли веб-сервер подключиться к БД и т. д. [что-то в этих строках часто может быть ошибочным]
Слегка изменив ваш запрос на
$sql = mysql_query("SELECT username FROM users") or die(mysql_error());
может помочь выделить любые ошибки: php manual
<?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>