2011-11-05 46 views
15

填充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> 

回答

21

我的猜测是你有问题,因为你没有关闭循环后的选择标记。这可以做到这一点吗?

<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> 
+1

添加了一个示例来清理代码。 –

+0

已将代码修改为上述但仍然是同样的问题 - 我很难过。 – Bernard

+0

@Bernard - 执行print_r($ row)查看该行的全部内容,以确保查询获取了“用户名”列。 – donutdan4114

3

我建议遵循几个调试步骤。

首先直接对数据库运行查询。确认它带来的结果。即使有这样简单的事情,你也可以发现你犯了一个错误,或者桌子是空的,或者有些古怪。

如果以上情况正常,则尝试循环并将$ row的内容直接回显到HTML中,以查看您在mysql_query中找回的内容 - 查看它是否与您直接在数据库中获得的内容匹配。

如果你的数据输出到页面上,那么看看你的HTML格式有什么问题。

但是,如果没有从$ row输出,那么找出为什么mysql_query不工作,例如没有用户有权限查询该数据库,你有一个开放的数据库连接,可以将Web服务器连接到数据库等[在这些线路上的东西往往是一个疑难杂症]

稍微改变您的查询

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

可能有助于突出任何错误:http://php.net/manual/en/function.mysql-error.php

+0

谢谢克里斯这帮我找到了错误输出 – Bernard

8

下面的代码是不错..它是由另一个叫 aaronbd在link

<?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>"; 
?> 
给出
+0

你能告诉我为什么选择使用“>”吗?以及它是如何工作的 –

+3

@SmitSaraiya“>”用作标准html语法的选项。 – Imon

2
<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> 
+0

如果你添加了一些行解释你在做什么,或者你和用户的解决方案有什么区别,这不会有什么坏处。 – nKn

1
<?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> 
相关问题