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