[php]checkboxの取得について~その1に続いて、気になったことをさらに書きたいと思います。
複数個にチェックを入れて、参照したら、valueが「13」と連続して出力されてしまいました。
coldfusionの場合、リスト化されるので、参照する場合、valueが「1,3」となって便利なのですが、あいにくphpには、それがないらしいので、再度、PHP checkboxの受け渡しPHPを参考にすると、
配列をカンマ区切りの文字データにしてやりたい時は、
via:PHP checkboxの受け渡しPHP
$color = implode(",", $_POST["color"]);
のようにimplode関数を使用する。
と書いてあったので、さらに[php]checkboxの取得について~その1で作ったプログラムを変更してみる。
<body> <form action="./test.php" method="post"> <input type="checkbox" name="foo[]" value="1">りんご<br> <input type="checkbox" name="foo[]" value="2">オレンジ<br> <input type="checkbox" name="foo[]" value="3">バナナ<br> <input type="hidden" name="flg" value="1"> <input type="submit" value="Run"> </form> <?php if($_POST["flg"] == 1){ ?> <?php /* フォーム変数が存在する場合 */ if($_POST["foo"] != ""){ $foo = implode ("," , $_POST["foo"]); print ("フォーム変数の値は、"); print ($foo); print ("です。"); /* フォーム変数が存在しない場合 */ }else{ print ("フォーム変数がありません。"); } ?> <?php } ?> </body> |
確かに、実行してみると、カンマ区切りで返してくれます。
しかも、うれしいことに、1個しかvalueがない場合、「1,」とは返さずに、「1」と返してくれること。
なので、配列の長さを意識せずに使えるという点。
うーん、だけど、チェックボックスに関する仕様がこうだと、トランザクション時に、プログラムがちょっと煩雑になってしまいそうです。
まぁーそこまで意識する必要はないと思うのですが。
0 コメント:
コメントを投稿