PHPで Form select要素の複数選択の値を受け取る方法
- select multiple属性

HTML Formのselectタグにmultiple属性を指定したときに、複数選択したデータをphpで受け取ることができます。
プルダウンメニューを「shift」または「Ctrl」ボタンを押しながらクリックすると複数選択することができます。

HTML

selectタグの複数選択の値を受け取るには、selectタグにmultiple属性を指定して、 selectタグのname属性の値の後に配列であることを表わす[]を付けます。【例】xxxxx[]
<form action='./yyyyy.php' method='POST'>
  <select name="xxxxx[]" multiple>   <!-- nameの書き方に注意、配列であることを表わす[]を付けます。 -->
    <option value="1">select 1</option>
    <option value="2">select 2</option>
    <option value="3">select 3</option>
  </select>
  <input type="submit" name="send" value="送信">
</form>

PHP

PHPは、「送信」ボタンが押されたとのみ実行します。
<?php
  if (isset($_REQUEST['send'])) {  //送信ボタンがクリックされた場合実行
    print_r($_REQUEST["xxxxx"]);
  }
?>

これまでのまとめ PHP

これまでのHTMLおよびPHPをまとめて、.phpファイルを作成しました。

<!DOCTYPE html>
<html>
<!-- http://alphasis.info/2012/11/php-gyakubiki-form-post-multiple/ -->
<head>
<meta charset = “UFT-8”>
<title>フォームからデータを受け取る</title>

<style>
select{
  background:#f5f5f5;
}
</style>

</head>
<body>
<h1>PHP で select要素の複数選択の値を受け取る方法(デモ)<br> - select multiple属性</h1>
<form method="post" action="#">
<label>● 好きな果物(Windowsの場合は、「Shift」または「Ctrl」キーを押しながら、複数選択します)</label><br>
<select name="fruits[]" multiple  size="10">
<option value="アボカド">アボカド</option>
<option value="あんず">あんず</option>
<option value="いちご">いちご</option>
<option value="イチジク">イチジク</option>
<option value="梅">梅</option>
<option value="オレンジ">オレンジ</option>
<option value="柿">柿</option>
<option value="かぼす">かぼす</option>
<option value="キウイフルーツ">キウイフルーツ</option>
<option value="栗">栗</option>
<option value="グレープフルーツ">グレープフルーツ</option>
<option value="さくらんぼ">さくらんぼ</option>
<option value="ザクロ">ザクロ</option>
<option value="じゃばら">じゃばら</option>
<option value="スイカ">スイカ</option>
<option value="すだち">すだち</option>
<option value="ドラゴンフルーツ">ドラゴンフルーツ</option>
<option value="ドリアン">ドリアン</option>
<option value="パイナップル">パイナップル</option>
<option value="パッションフルーツ">パッションフルーツ</option>
<option value="バナナ">バナナ</option>
<option value="パパイヤ">パパイヤ</option>
<option value="びわ">びわ</option>
<option value="ブドウ">ブドウ</option>
<option value="プラム">プラム</option>
<option value="ブルーベリー">ブルーベリー</option>
<option value="マンゴー">マンゴー</option>
<option value="マンゴスチン">マンゴスチン</option>
<option value="みかん">みかん</option>
<option value="ミラクルフルーツ">ミラクルフルーツ</option>
<option value="メロン">メロン</option>
<option value="桃">桃</option>
<option value="ゆず">ゆず</option>
<option value="洋梨">洋梨</option>
<option value="ライチ">ライチ</option>
<option value="りんご">りんご</option>
<option value="レモン">レモン</option>
<option value="和梨">和梨</option>
  </select><br>
<label>● 好きな色</label><br>
        <input type="checkbox" name="colors[]" value="白色">白
        <input type="checkbox" name="colors[]" value="黒色">黒
        <input type="checkbox" name="colors[]" value="赤色">赤
        <input type="checkbox" name="colors[]" value="青色">青
        <input type="checkbox" name="colors[]" value="黄色">黄
        <input type="checkbox" name="colors[]" value="緑色">緑
        <input type="checkbox" name="colors[]" value="桃色">桃
<br>
<input type="submit" name="send" value="送信" style="margin-top:5px">
</div>
</form>
<br>
<hr>
<?php
if (isset($_REQUEST['send'])) {  //送信ボタンがクリックされた場合
    $c1 = 0;
    $c2 = 0;

  // セレクトボックス 果物

    echo "▼ 好きな果物<br>";
    $fruits = $_POST["fruits"];
    foreach($fruits as $value) {
     echo "$value";
     echo "<br>";
     $c1 = $c1 + 1;
    }

  // チェックボックス 色

    echo "▼ 好きな色<br>";
    foreach( $_POST[colors] as $value ){
      echo "{$value}<br>";
    $c2 = $c2 + 1;
   }

} else {
    //送信ボタンがクリックされていない場合
    echo "<br><span style='color:navy'>好きな果物と色を選んで送信ボタンはクリックしてください!</span>";
}
?>

</body>
</html>


サイト内関連リンク