1

我有一个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>
4

2 回答 2

2

替换$rowBus[bus_no]$rowBus['bus_no']$rowBus[bus_id]$rowBus['bus_id']

这种变化的原因是 $rowBus 是一个具有这样结构的数组Array ([bus_id] => value)。如您所见,它的键是一个字符串,因此要访问它,您必须“告诉” php 来查找它。

字符串可以用"some_string"或表示'some_string'。因为 key 是一些没有任何特殊格式的文本以获得更好的性能,所以建议您使用'而不是".

于 2012-04-29T11:37:17.883 回答
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>';
}
于 2012-04-29T11:40:13.230 回答