Как заполнить HTML-раскрывающийся список значениями из базы данных - PullRequest
25 голосов
/ 05 ноября 2011

как часть формы 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>

Ответы [ 6 ]

32 голосов
/ 05 ноября 2011

Я предполагаю, что у вас есть проблема, так как вы не закрываете свой тег выбора после цикла.Может ли это сделать трюк?

<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>
15 голосов
/ 31 октября 2012

Ниже код хорош. Он был предоставлен кем-то еще по имени aaronbd на этом форуме

7 голосов
/ 05 ноября 2011

Я бы предложил выполнить несколько шагов отладки.

Сначала запустите запрос непосредственно к БД.Подтвердите, что это приносит результаты.Даже с такой простой вещью вы можете обнаружить, что допустили ошибку, или таблица пуста, или какая-то странность.

Если все вышесказанное в порядке, попробуйте зацикливаться и выводить содержимое $ rowпросто прямо в HTML, чтобы увидеть, что вы получаете обратно в mysql_query - посмотрите, соответствует ли оно тому, что вы получили непосредственно в БД.

Если ваши данные выводятся на страницу, посмотрите, что не так в вашем HTML-форматировании.

Однако, если ничего не выводится из $row, выясните, почему mysql_query не работает, например, имеет ли пользователь разрешение запрашивать эту БД, у вас есть открытое соединение с БД, может ли веб-сервер подключиться?в БД и т. д. [что-то в этих строках часто может быть ошибочным]

Небольшое изменение запроса на

$sql = mysql_query("SELECT username FROM users") or die(mysql_error());  

может помочь выделить любые ошибки: php manual

3 голосов
/ 24 августа 2017
<?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>
3 голосов
/ 04 февраля 2014
<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>
1 голос
/ 17 апреля 2019

Вместо этого используйте концепцию ООП.Создайте класс с функцией

class MyClass {

...

function getData($query) {
    $result = mysqli_query($this->conn, $query);
    while($row=mysqli_fetch_assoc($result)) {
        $resultset[] = $row;
    }       
    if(!empty($resultset))
        return $resultset;
} }

, а затем используйте объект класса для вызова функции в вашем коде

<?php 

    $obj = new MyClass();
    $row = $obj->getData("select city_name from city"); 
?>
<select>
    <?php foreach($row as $row){ ?>
        <option><?php echo $row['city_name'] ?></option>

<?php  } ?>
</select>

Полный код и описание можно найти здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...