as part of a HTML form I am creating I would like to have a dropdown list which will list all the usernames in my database.
I thought the following code would do the trick but the dropdown list is empty - could someone assist me in what i'm doing wrong? Thanks.
<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>
My guess is that you have a problem since you don't close your select-tag after the loop. Consider separating your database-related code from the markup, it will help you to spot such mistakes easily
<?php
...
// SQL part
$sql = mysqli_query($connection, "SELECT username FROM users");
$data = $sql->fetch_all(MYSQLI_ASSOC);
// HTML part
?>
<tr>
<td>Owner</td>
<td>
<select name="owner">
<option value=""></option>
<?php foreach ($data as $row): ?>
<option value="<?= htmlspecialchars($row['id']) ?>">
<?= htmlspecialchars($row['username']) ?>
</option>
<?php endforeach ?>
</select>
</td>
</tr>
Note that you have to either give the each value
attribute a unique value or omit this attribute altogether. I added the row id as such value.
Edit: move "(" before the 'foreach' command to after.