我有结果要显示为下拉菜单。查询从表中选择id和name。
$usersQuery = "SELECT id, name
FROM users";
$usersResult = mysqli_query ($dbc, $usersQuery);
我想将此结果用作下拉菜单中的列表。这就是我到目前为止所做的。
<select id="dropdown" name="dropdown">
<option value="select" selected="selected">Select</option>
<?php
while ($usersRow = mysqli_fetch_array($usersResult, MYSQLI_ASSOC)){
foreach ($usersRow as $value){
echo "<option value=\"$value\"";
echo ">$value</option>\n";
}
}
?>
</select>
如果我只想将名称显示为用户的值和显示,这将正常工作。但我想要做的是使用选定的id作为select选项的“value”,我想显示为用户选择的名称。我试过这个,但它不起作用。
<select id="dropdown" name="dropdown">
<option value="select" selected="selected">Select</option>
<?php
while ($usersRow = mysqli_fetch_array($usersResult, MYSQLI_ASSOC)){
foreach ($usersRow as $id=>$name){
echo "<option value=\"$id\"";
echo ">$name</option>\n";
}
}
?>
</select>
任何帮助都会很棒。
提前致谢。
答案 0 :(得分:5)
mysqli_fetch_array()
是一个将查询结果转换为数组的函数。这意味着您可以像使用正常的数组值一样显示您的值。
<select id="dropdown" name="dropdown">
<option value="select" selected="selected">Select</option>
<?php
while ($usersRow = mysqli_fetch_array($usersResult, MYSQLI_ASSOC)){
echo "<option value=\"".$usersRow['id']."\"";
echo ">".$usersRow['name']."</option>\n";
}
?>
</select>
答案 1 :(得分:1)
不需要foreach
次迭代; mysqli_fetch_array()
已经提供了一个关联数组。每次获取后执行
// Assuming "id" is a numeric value
printf('<option value="%d">%s</option>', $usersRow['id'], $usersRow['name']);
答案 2 :(得分:0)
foreach
是不必要的 - 在mysqli_fetch_array
命令中使用while循环将返回数组中每行的所有结果 - 您可以像这样使用它:
while ($usersRow = mysqli_fetch_array($usersResult, MYSQLI_ASSOC)){
echo "<option value=\"".$usersRow['id']."\"";
echo ">".$usersRow['name']."</option>\n";
}