我有一个表bus
,其中包含bus_id, bus_no
列。
我尝试使用多重选择回显多个,我尝试了以下代码,但重复了bus_no
。
请帮助我回复所有公共汽车,并在所选公共汽车旁边回显selected
。
<form name="editstudent" method="get" action="testmulti.php">
<select name="numBus[]" multiple>
<?php
$selBus=mysql_query("SELECT * FROM najdsy_bus order by bus_id");
while ($rowBus=mysql_fetch_array($selBus)) {
foreach ($numBus as $key=> $value) {
if ($rowBus['bus_id']==$value) {
$SelectedBus = "selected";
} else {
$SelectedBus = "";
}
echo '<option value="'.$rowBus['bus_id'].'"'.$SelectedBus.'>'.$rowBus['bus_no'].' '.$SelectedBus.'</option>';
}
}
?>
</select>
<br/>
<input type="submit" value="test">
</form>
答案 0 :(得分:2)
将$rowBus[bus_no]
替换为$rowBus['bus_no']
,将$rowBus[bus_id]
替换为$rowBus['bus_id']
这种变化的原因是$ rowBus是一个结构如此Array ([bus_id] => value)
的数组。当你看到它的键是一个字符串,所以要访问它你必须“告诉”php寻找它。
字符串可以在"some_string"
或'some_string'
中表示。由于密钥是一些没有任何特殊格式的文本以获得更好的性能,因此建议您使用'
代替"
。
答案 1 :(得分:1)
您似乎不应将echo '<option value="'...
放在foreach
内。将其更改为:
while ($rowBus=mysql_fetch_array($selBus)) {
$SelectedBus="";
foreach ($numBus as $key => $value){
if ($rowBus["bus_id"]==$value){
$SelectedBus="selected";
}
}
echo '<option value="'.$rowBus["bus_id"].'"'.$SelectedBus.'>'
.$rowBus["bus_no"].' '.$SelectedBus.'</option>';
}