2008/10/05

[php]checkboxの取得について~その2

[php]checkboxの取得について~その1に続いて、気になったことをさらに書きたいと思います。

複数個にチェックを入れて、参照したら、valueが「13」と連続して出力されてしまいました。

coldfusionの場合、リスト化されるので、参照する場合、valueが「1,3」となって便利なのですが、あいにくphpには、それがないらしいので、再度、PHP checkboxの受け渡しPHPを参考にすると、

配列をカンマ区切りの文字データにしてやりたい時は、
$color = implode(",", $_POST["color"]);
のようにimplode関数を使用する。

via:PHP checkboxの受け渡しPHP

と書いてあったので、さらに[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 コメント:

コメントを投稿