Как заполнить выпадающий список 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>