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]to$rowBus['bus_no']$rowBus[bus_id]to を置き換えます$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 に答える