• ベストアンサー

値の表示のやり方

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

  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
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

  • phpでチェックボックスでの値の表示について

    HTMLで作成したテキスト、セレクト、チェックボックスなどに、選択されたもの全てをPOST送信で受け取って PHPにてパラメータをチェックしてから 確認画面(HTML)に表示してPHPにてDB登録するというプログラムを作ってます。 HTML側で <input type="checkbox" name="genre[0]" value="1" >国語 <input type="checkbox" name="genre[1]" value="2" >算数 <input type="checkbox" name="genre[2]" value="3" >理科  <input type="checkbox" name="genre[3]" value="4" >社会 として例えば、 <?php $genre = $_POST["genre"]; foreach ($genre as $key => $value){ print($value); } ?> で表示するとチェックした数字が表示されます。 (国語をチェックした場合 1) これを 国語 と表示させるにはどうすればいいんでしょうか? DBに登録する際は数字でいいんですが。

    • ベストアンサー
    • PHP
  • チェックボックスのデータ受け渡し

    アンケートフォームを作成しています。 アンケートの中で、チェックボックスを利用して業種を選んでもらう項目を作ろうと思うのですが、取得したデータの確認表示が上手くいかなくて困っています。 フォームの流れとしては 入力画面→確認画面→送信完了画面 と言う流れになります。 入力画面で下記のようなフォームを作ったのですが、確認画面で表示させる方法を教えていただきたいと思います。 <form name="form1" method="post" action="input.php"> <input name='check[] 'type='checkbox' id='check'value='飲食業'> 飲食業 <input name='check[] 'type='checkbox' id='check' value='小売業'> 小売業 <input name='check[] 'type='checkbox' id='check' value='サービス業'> サービス業 <input name='check[] 'type='checkbox' id='check' value='建築・不動産業'> 建築・不動産業 <input name='check[] 'type='checkbox' id='check' value='コンサルティング業'> コンサルティング業 <input name='check[] 'type='checkbox' id='check' value='その他'> その他 </form> 業種選択の他にも名前や会社名などの項目もあり、それらはセッションを利用し確認画面へ受け渡しています。 この業種選択の項目も、その他の項目と同じようにセッションを利用し、確認画面へ受け渡すことは可能でしょうか? 『飲食業、小売業、その他』のように、チェックしたもの全てを確認表示するような形にしたいのですが・・・ 宜しくお願いします

    • ベストアンサー
    • PHP
  • []を付けずにcheckboxの値を複数受信

    カテゴリをPHPとするか迷いましたが、 こちらに質問させていただきます。 <input type="checkbox" name="hiragana[]" value="a">あ <input type="checkbox" name="hiragana[]" value="i">い <input type="checkbox" name="hiragana[]" value="u">う とした場合、 $checked=$_POST['hiragana']; print_r($checked); などとして使えることはわかるのですが、 角括弧をつけず、 <input type="checkbox" name="hiragana" value="a">あ <input type="checkbox" name="hiragana" value="i">い <input type="checkbox" name="hiragana" value="u">う としたときに、同様に配列として取得する(すべてのチェックされた項目を取得する) 方法はあるのでしょうか? このようにした場合、 $checked=$_POST['hiragana']; print_r($checked); や print_r($_POST); すると、最後にチェックされた値しか入っていないようです。 (上書きされているようですが...) HTTPヘッダを見ると、 hiragana=a&hiragana=i&hiragana=u のように、すべて送信はされているのは確認できるのですが... 後者のような角括弧をつけていないタイプのcheckboxを使って ちゃんとチェックされた値をすべて受信して動作していると 思われるサイトを目にするので どうすればできるのかと思い質問させて頂きました。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • フォームで受け取った値のPHP表示方法

    フォームのチェックボックスから選択したメニューを 同じページに表示するというPHPのサンプル練習ですが 複数選択した場合、適切に「と」が入るようにするには どのような方法があるのでしょうか? 以下のサンプルの場合だと1つの場合でも 複数選択の場合でも全てに「と」が入ってしまいます。 「echo $_POST["check"][$i]」の次に if条件文のような物を付ければよいと思い試しているのですが なかなか上手く行きません。 初学者ですが何か分かりやすく簡単な方法があれば お教えください。 よろしくお願いいたします。 ---------------------------------------------------------- <?php if(isset($_POST["check"])){ for($i=0; $i<count($_POST["check"]); $i++){ echo $_POST["check"][$i]."と"; ←※※※ } echo "が好きです。"; } ?> <html> <body> <form method="post" action=""> <input type="checkbox" name="check[]" value="きつねうどん">きつねうどん <input type="checkbox" name="check[]" value="カレーうどん">カレーうどん <input type="checkbox" name="check[]" value="ざるそば">ざるそば <input type="checkbox" name="check[]" value="天ぷらうどん">天ぷらうどん <input type="submit" value="何が好き"> </form> </body> </html> -----------------------------------------------------------

    • ベストアンサー
    • PHP
  • PHPで返信メールにチェックボックスの値を表示したいのですが。。。

    PHPで返信メールにチェックボックスの値を表示したいのですが。。。 PHP初心者です。 request.phpという資料請求用のWEBページを作成しており、お問い合わせ項目内に 以下の様なチェックボックスを設けました。 <tr> <th>ご希望される商品</th> <td> <input type="checkbox" name="kibo[]" value="a-set" /> Aセット<br /> <input type="checkbox" name="kibo[]" value="b-set" /> Bセット<br /> <input type="checkbox" name="kibo[]" value="c-set" /> Cセット<br /> <input type="checkbox" name="kibo[]" value="d-set" /> Dセット </td> </tr> 入力後の内容確認画面では、 <tr> <th>ご希望される商品:</th> <td class="subheader_txt_l"><?php echo implode(' / ', $_POST['kibo']);?></td> </tr> として、選択した項目が表示されるところまではできましたが、送信ボタン後、確認メールが 送られてくる仕組になっているのですが、メール本文内では【ご希望される商品】欄が空っぽで 返ってきます。。。 ちなみにメール本文作成の処理では、 $body .= '【氏名】        '.$_POST['name1']."\n". '【メールアドレス】   '.$_POST['mail']."\n". '【住所】        '.$_POST['zyuusyo']."\n". '【ご希望される項目】  '.$_POST['kibo']."\n". '【お問い合わせ内容】  '.$_POST['comment']."\n\n". 値取得にあたり特別な関数が必要なのでしょうか。 ご教授頂けますと幸いです。よろしくお願いします。

    • ベストアンサー
    • PHP
  • リクエストパラメータの値によってJavaScriptでスタイルを変更する場合

    いつも参考にさせて頂いてます。 早速なのですが以下のことが分からず困っています。 親画面から子画面へ遷移する。 その際、チェックボックスの値を複数個POSTで送信する。 子画面で受け取った値をhiddenにそのまま保持し、 孫画面にそのままPOSTで送信する。 JSPを使っているのですがこういったことは可能なのでしょうか? ■親画面 <form method="POST" name="data2" action="child.jsp">   <input type="checkbox" id="check" name="check" value="1>   <input type="checkbox" id="check" name="check" value="2">   <input type="checkbox" id="check" name="check" value="3">   <input type="submit" value="送信"> </form> ■子画面 window.onload = function(){   //画面遷移時にリクエストパラメータをhiddenにセット   document.data.check2.value = <%= request.getParameterValues("check") %>; } ~略~ <form method="POST" name="data2" action="grandchild.jsp">   <input type="hidden" id="check2" name="check2" value="">   <input type="submit" value="送信"> </form> こんな感じで孫画面へそのまま渡せるのかな?と思ったのですが うまく行きませんでした。 アドバイスなどありましたら宜しくお願いします。

  • FORMの値を返す方法です。

    こんにちは。質問させてください。 フォームを作成したのですが思うような値を得られませんでした。チェックボックスA~Eの中で、たとえばAとCにチェックをいれて送信すると受信側に返される値は 「selection=A&selection=C&submit=~」となるのですが、これを 「selection=A,C&submit=~」というようにselection=を一つにまとめてカンマで区切って表示できたらと思っています。 どうかご存知の方がいらっしゃいましたら、教えてください。よろしくお願いします。 ------以下のように作成しました---------- <form method="post" action="mailto:@.ne.jp"> <br>選択<br> <input type="checkbox" name="selection" value="A">A<br> <input type="checkbox" name="selection" value="B">B<br> <input type="checkbox" name="selection" value="C">C<br> <input type="checkbox" name="selection" value="D">D<br> <input type="checkbox" name="selection" value="E">E<br> <input type="submit" name="Submit" value="送信"> <input type="reset" name="Submit2" value="リセット"> </form>

  • PHPでのフォームバリデートと値保持について

    いつもお世話になってます。PHP+Apache(+MySQL)の環境です。 フォーム(ラジオ、チェック、プルダウン、テキスト)に入力された内容をチェックし,すべて正しければ確認画面、間違いがあればフォーム画面にもどるが、その際、正しい項目の入力内容は保持したまま、さらに、間違いの項目に対して、エラーの内容を各項目のところ(ページ上部にまとめて表示するのではなく)に表示したいです。 要は、フォームの各種要素の値を保持する方法 と 入力規則の各種(値有無、条件合致等)チェックとフラグ表示をしたいです。 フォーム入力 └値有無チェック   ├全てあたいがあれば─内容確認┬送信(完了)   │                    └もどって修正(値保持したまま)   └値抜け、違反(チェックボックスで指定選択数オーバー、文字数オーバー等)があれば・・・      └入力画面にもどる(正しい項目は値保持、間違っている部分にはエラー内容のフラグ表示) <状況>フォームから値を受信し、空白の場合に当該項目に”未回答です!!”というメッセージを表示するところまでできています。違反なく入力されたところにメッセージは表示されませんが、値が消えます(保持されません)。 #vali.php if(!isset($_POST['exec'])){ include('temp/anc.php'); exit; } if(isset($_POST['exec'])){ function HTMLsc($str){中身省略します} $ErrorMsg = array(); $ErrorCnt = 0; for($i=1; $i<5; $i++){ $num = "q".$i; $$num = HTMLsc($_POST["$num"]); if(empty($$num)){ $ErrorMsg["$i"] = "未回答です"; $ErrorCnt++; }else{ /*この部分に作り込むのかなぁ?*/ } } if($ErrorCnt != 0){ include('temp/anc.php'); exit; } include('temp/comp.php'); } ----------- #anc.php <!-- 項目ごとに簡単に記述します --> <? if(isset($ErrorMsg[1])){echo $ErrorMsg[1];}?> <h3>問1.元気ですか?</h3> <input type="radio" name="q1" value="1">はい <input type="radio" name="q2" value="2">いいえ <? if(isset($ErrorMsg[1])){echo $ErrorMsg[1];}?> <h3>問2.朝なに食べた?</h3> <input type="checkbox" name="q2[]" value="1">ごはん <input type="checkbox" name="q2[]" value="2">パン <input type="checkbox" name="q2[]" value="3">みそ汁 <input type="checkbox" name="q2[]" value="4">牛乳 <? if(isset($ErrorMsg[1])){echo $ErrorMsg[1];}?> <h3>問3.起きてまず何する?</h3> <select name="q3"> <option value="1">顔洗う</option> <option value="2">歯磨く</option> <option value="3">ぼーっとする</option> </select> <input type="checkbox" name="q2[]" value="4">牛乳 <? if(isset($ErrorMsg[4])){echo $ErrorMsg[4];}?> <h3>問4.なんか書いて</h3> <input type="text" name="q4" value="<?php echo $_POST["q4"];?>"> <input type="submit" name="exec" value="終了・確認"> ※ラジオボタンの数、チェックボックスの数、プルダウン項目数は変化に耐えうる構造がよいです。参考サイトの紹介でもOKです。結構探しましたが単独での参考しかありませんでした

    • ベストアンサー
    • PHP
  • チェックボックスのperlでの値の渡し方と、postgreSQLでのデータ書込みについて教えて下さい。

    今、下記のような複数選択可のチェックボックスを 作成していまして、perlでの値の渡し方と、 postgreSQLでのデータ書込みについて悩んでいます。 良かったら教えて下さい。 <INPUT type="checkbox" name="test" value="A">A<BR> <INPUT type="checkbox" name="test" value="B">B<BR> <INPUT type="checkbox" name="test" value="C">C<BR> というチェックボックスのうち、AとCにチェックをつけたと します。その際、perlでデータを引き継いだ場合、 testには、AとCが入っているのでしょうか? また、サーバに書き込む際に、データはどのように保存される のでしょうか? 1つの名前では無理なのでしょうか?またその場合、postgreSQL のデータ項目名も3つ名前を用意しておかないといけないので しょうか?編集画面を作成する際に、そのサーバの 項目から値をひっぱりだして、checkedを表示させたいのですが、 <INPUT type="checkbox" name="test" value="A" checked>A<BR> <INPUT type="checkbox" name="test" value="B">B<BR> <INPUT type="checkbox" name="test" value="C" checked>C<BR> と出るようにしたいのですが、何か良い方法がありましたら、 教えて下さい。お願いします。

    • ベストアンサー
    • Perl
  • チェックボックスの値を(1,0)のようにすべて送信する方法

    formをsubmitすると、チェックボックスの値は、 チェックされた項目のvalue値が配列の形で送信されますよね。 たとえば、 <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="111" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="222" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="333" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="444"> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="555" CHECKED> だと、 [111,222,333,555] のように。 今回は、表形式でデータを表示し、 チェックされた行の、他の列の値(フィールド)も取得したいのです。 他の列のフィールドは、チェックされていない行でも入力されている可能性があります。 そうすると、そのフィールドの値も配列にして送ってしまうと、 チェックボックスの値と数が合わなくなり、横方向での関連付けが出来なくなってしまいます。 なので、チェックボックスの送信値を、配列の要素数は全件で、 チェックされたかされていないかということが分かるように することは不可能でしょうか? JavaScriptは規約により、使うことが出来ない状況で困っています(><) 何か案があれば教えてください。

    • ベストアンサー
    • HTML