初学者、学習中のものです。
今回利用している学習教材です。
selectボックスにmultiple属性を作ると複数個の値を送受信したいと思っています。
ひとつしか選択出来ない通常のセレクトボックスでなく
複数個を選択できるmultiple属性をつけ複数個選択した場合、ここでは配列として扱っています。
まず(index.php)内でフォームを作成します。
selectタグ内にmultiple属性をつけ、
name属性は配列を表す大カッコをつける。と解説してあります。
よって
<select name="colors[]" multiple>
と記述しています。
しかしそれを受ける(result.php)では
$colors = filter_input(INPUT_GET,'colors',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
と大カッコがついていません。
これはfilter_input()関数の第四引数に 配列を受け取るという意味の
FILTER_REQUIRE_ARRAY がついているために第二引数には[]大カッコをつけずに
'colors'だけでよいということなのでしょうか?
この記述で結果としては添付した画像のようにうまくいっています。
初学者ですので、送信する際につけるname属性と受信するためのname属性が異なるというのが
気になります。
どなたか配列を送信する際にはname属性に[]大カッコをつけ、受ける際のname属性には[]大カッコ
をつけなくてよいのか、簡潔に教えてください。
よろしくお願いいたします。
(index.php)
php
1<?php 2 3 4 <form action="result.php" method="get"> 5 6 <!-- multipleをつけ、name属性に配列を表す大カッコ --> 7 <select name="colors[]" multiple> 8 9 <option value="orange">Orange</option> 10 <option value="pink">Pink</option> 11 <option value="gold">Gold</option> 12 </select> 13 <input type="submit" value="Send"> 14 </form> 15<?php 16 17include('../●●●/▲▲.php'); 18 19
(result.php)
php
1<?php 2 3$colors = filter_input(INPUT_GET,'colors',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY); 4$colors = empty($colors)? '選択してください': implode(',',$colors); 5 6?> 7 <p><?= h($colors); ?></p> 8 <p><a href="index.php">Go Back</a></p> 9 10 11 12<?php 13 14include('../●●●/▲▲.php'); 15
<ブラウザ表示>multiple属性のついたセレクトボックス
<表示結果>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/26 01:10