• ベストアンサー

値の表示のやり方

PHP初心者です。 チェックボックスを利用し、複数選択が出来る項目を作っています。 配列を使わずに、チェックをしていただいたものだけを取り出し、確認画面で表示しています。 その際、<input type='checkbox' name='key01'><input type='checkbox' name='key02'>など、nameを変えてPOSTで1つずつ値を取り出し、 $_SESSION['key']=($_POST['key01'].$_POST['key02'])等として、ひとつにまとめようとしています。 この時、確認画面で改行や区切りのマーク等をいれてわかりやすく表示したいのですが、当然チェックが入るものと入らないものが出てきますので、表示のしかたが上手くいかなくて困っています。 何かいい方法とかないでしょうか? そもそも、値だけ取り出したてセッション管理したいと言う考え方がまちがっているのでしょうか? 補足として、選択項目は10個ほどです。 また、現在は何の区切りもなくつながって表示されている状態です。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30334
noname#30334
回答No.2

えーっと、下記の質問の続きですかね? http://oshiete1.goo.ne.jp/qa2802096.html >値だけ取り出したてセッション管理したいと言う考え方がまちがっているのでしょうか? 時と場合によります。 今回の場合、10個の選択肢は、順不同の並列な関係と思われますので、 値だけ取り出して、カンマ(,)やタブ(\t)で連結すると良いでしょう。 先の質問後、配列を使うのをやめているようですが、 チェックが入っているものだけを取り出すのなら、配列を使った方が良いと思います。 まぁ、他に理由があるのかもしれないので、 配列を全く使わない方法で書いてみます。 (注)全角スペースでインデントしてますので、コピペする場合、注意して下さい。 <?PHP  session_start();  if (!empty($_POST['key01'])) {   $_SESSION['key'] = $_POST['key01'];  }  if (!empty($_POST['key02'])) {   if (empty($_SESSION['key'])) {    $_SESSION['key'] = $_POST['key02'];   }else{    $_SESSION['key'] .= "\t" . $_POST['key02'];   }  }  // key03以降も同様にして連結していく...  //表示  print $_SESSION['key']; ?>

hakkarin
質問者

お礼

ありがとうございました。 希望していた表示が出来ました。 仰るとおり、前の質問の続きなんですが、当初、配列を使用して確認画面で表示するって事だけだったのですが、急遽仕様が変わったみたいで、個別にDBに格納していくと言う事になってしまいまして・・・ 配列を使用しても問題なかったのかもしれませんが、初心者なもので、わかりやすい方法を模索中という感じです。 ホントにありがとうございました。

その他の回答 (1)

  • maura
  • ベストアンサー率46% (48/104)
回答No.1

key01 と key05 がチェックされたとして <?php $check = array(); /* TEST -- initialize */ $_POST['key01'] = 1; $_POST['key05'] = 1; for ($i=1;$i<=10;$i++){ $check[$i]=0; $keyName = sprintf("key%02d", $i); if ( isset($_POST[$keyName]) ){ $check[$i] = 1; } } print join(',', $check); ?>

hakkarin
質問者

お礼

早速の回答ありがとうございました。 参考になりました。 ありがとうございました。

関連するQ&A