0

複数選択ボックスに変更したいドロップダウンメニューがあります。以下のコードは、1 つのオプションのみを選択した場合 (以前の方法) に機能しますが、2 つを選択すると、2 つのうち 1 つしか表示されません。両方のオプションが選択されていることを表示するにはどうすればよいですか?

<?php $makes = array("volvo","Saab","Opel","Audi","BMW") ?>


<form method="post" name="store" action="<?php $_SERVER['PHP_SELF'] ?>" >
<select multiple="multiple" name="cars">
<?php foreach ($makes as $make){echo "<option value=\"$make\">". $make ."</option>";           $vehicles = $_POST['cars'];} ?>
    <input name="submit" type="submit">
    </select>
</form>
<?php 


if($_POST['submit']){
  echo $vehicles;
}
?>
</body>
</html>
4

3 に答える 3

1

HTML の複数選択ボックスから結果の配列を取得したいということを正しくお読みいただければ幸いです。

ところで、あなたのコード スニペットは正しくありません。HTML の <form> 終了タグは、終了 <select> タグの後にある必要があります。PHP の for() ループに次のような記述がある理由がわかりません。

$vehicles = $_POST['cars'];

次のように、HTML タグの name 属性を配列にする必要があります (このコードはテストしていないことに注意してください)。

<select multiple="multiple" name="cars[]">
<?php 
    foreach ($makes as $make) {
        echo "<option value=\"$make\">". $make ."</option>";
    }
?>
</select>

<?php 
    if($_POST['submit']) {
        print_r($_POST['cars']);
     }
?>

PHP.net - select multiple HTML タグからすべての結果を取得するにはどうすればよいですか?

于 2012-11-09T07:21:01.387 に答える
0

if($_POST['submit']){ print_r($vehicles); で試すことができます。何か問題があれば教えてください..

于 2012-11-09T07:48:59.910 に答える
0

あなたの質問からは完全には明らかではありませんが、次のコードのビットが1つの値のみをエコーすることを意味していると思います:

if($_POST['submit']){
  echo $vehicles;
}

[]選択した車を配列に変換するには、名前の末尾に追加する必要があります。

<select multiple="multiple" name="cars[]">

次に、echo各選択に対してforeachループを使用できます。

foreach ($_POST['cars'] as $car)
    echo $car.'<br />';
于 2012-11-09T07:22:58.627 に答える