• ベストアンサー

チェックボックスの受け渡し

以前こちらでも質問をさせて頂き、無事に解決をしたと思ったのですが、 どうにでもできないことが有りましたのでご質問をさせて頂きました。 チェックボックスを使用し、複数選択された項目を 次のページに受け渡す時 例えば -form.php- <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="aaa" />aaa</span> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="bbb" />bbb</span> -kakunin.php- $sejyutu = $_POST['sejyutu']; if(isset($sejyutu) and count($sejyutu)>0){ $str_sejyutu = ""; for($i=0;$i<count($sejyutu);$i++){ if($i == 0){ $str_sejyutu .= $sejyutu[$i]; } else{ $str_sejyutu .= " " . $sejyutu[$i]; } } } ?> という形でやっているのですが、kakunin.phpで表示がされません。 foreach分も使ってみたのですが、それでもまた表示がされません。 あともう一点あるのですが、例えば form.phpからkakunin.phpに情報を飛ばし、またその情報を修正のために form.phpに戻す場合、チェックボックスで予め選択された項目を 保持したまま戻ることはできるのでしょうか? どなたかお分かりになるかたがいましたらご教授お願いできないでしょうか。宜しくお願い致します。

noname#130289
noname#130289
  • PHP
  • 回答数4
  • ありがとう数0

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

#2です。 たとえばこんな感じで ・form.php <?PHP $sejyutu=$_REQUEST['sejyutu']; foreach($sejyutu as $val){ $checked["sejyutu"][$val]=" checked"; } print <<<eof <form action="kakunin.php" method="post"> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="aaa"{$checked['sejyutu']['aaa']} />aaa</span> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="bbb"{$checked['sejyutu']['bbb']} />bbb</span> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="ccc"{$checked['sejyutu']['ccc']} />ccc</span> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="ddd"{$checked['sejyutu']['ddd']} />ddd</span> <input type="submit"> </form> eof; ?> ・kakunin.php <?PHP $sejyutu=$_REQUEST['sejyutu']; if(is_array($sejyutu)) foreach($sejyutu as $val){ $str_sejyutu .= ($str_sejyutu==""?"":" ").$val; $vars.=($vars==""?"?":"&").urlencode("sejyutu[]")."=".urlencode($val); } print <<<eof {$str_sejyutu}<br> [ <a href="form.php{$vars}">戻る</a> ] eof; ?>

その他の回答 (3)

  • wish46
  • ベストアンサー率78% (29/37)
回答No.3

>表示については無事にできることができました!どうもありがとうございます。 >ただどうしても項目を保持したまま前のページに戻すことができません。 PHPのバージョンはいくつですか? 一応PHP4.3以上なら確認できているのですが。 それとご自身で作成されたスクリプトを省略せずに載せるか 参考URLに載せてもらえませんか? >formタグの中にこのような記述だけではやりえい無理なのでしょうか? ><input type="hidden" name="sejyutu" value="<?php echo $str_sejyutu; ?>"> この方法でもできなくはないですが文字列の分解とか検証処理が増えると思うのですが・・・

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

<form action="kakunin.php" method="post"> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="aaa" />aaa</span> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="bbb" />bbb</span> <input type="submit"> </form> ときちんとpostを指定していますか? formから送るときにGETになっているというおちでは? >もう1点 form.phpにパラメータをわたして、form側にそれを表示する ソースを書いておけばよいでしょう。

noname#130289
質問者

補足

ご返答ありがとうございます。 表示については無事に解決することが出来ました。 ただし、その form.phpにパラメータをわたして、form側にそれを表示する についてはもう少し詳しくお伺いできないでしょうか? 宜しくお願い致します。

  • wish46
  • ベストアンサー率78% (29/37)
回答No.1

print文が抜けているとかはないですか? (たぶん ないとは思いますが) 一応サンプルとして作ってみました。 1ページ処理しているので、ご自身で分割するとかしてください。

参考URL:
http://www.n-athome.com/sample.txt
noname#130289
質問者

補足

返信が遅くなってしまい申し訳ございません。 こちらで頂きましたサンプルを確認させて頂きました。 表示については無事にできることができました!どうもありがとうございます。 ただどうしても項目を保持したまま前のページに戻すことができません。 formタグの中にこのような記述だけではやりえい無理なのでしょうか? <input type="hidden" name="sejyutu" value="<?php echo $str_sejyutu; ?>">

関連するQ&A

  • チェックボックス 複数選択 MYSQL

    PHP習い始めたのですがどうしても分からない問題がありましたので 質問をさせて頂きました。 現在チェックボックスで複数選択された情報をMYSQLに反映させようとしているのですがどうしても複数選択された項目の内、一つしかMYSQLに反映されません。 こちらがスクリプトの一部になります。 <span class="checkbox"><input name="check[]" type="checkbox" value="aaa" />aaa</span> <span class="checkbox"><input name="check[]" type="checkbox" value="bbb" />bbb</span> <span class="checkbox"><input name="check[]" type="checkbox" value="ccc" />ccc</span><br /> //MYSQL $sql = "insert into table values('$check[]')"; 配列を使うとまでは調べて分かったのですが、そこからがどうしても 分かりません。どなたご存知になるかたがおりましたら 是非お伺い出来ませんでしょうか。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • チェックボックス複数選択 mysql受け渡し

    PHPを習いはじめたのですが分からない所がありましたので質問をさせて頂きました。 チェックボックスを作り複数選択されたデータをMYSQLに受け渡したいのですがどうしてもうまくいきません。受け渡しが出来たかと思えばARRAYのみ表示されてしまい、重要な内容が一切表示されません。 こちらがスクリプトになります。 <tr> <td>(チェックボックス)<br />順番不問</td> <td> <span class="checkbox"><input name="check1[]" type="checkbox" value="aaa" />aaa</span> <span class="checkbox"><input name="check1[]" type="checkbox" value="bbb" />bbb</span> </tr> </td> //mysql $sql = "insert into table values('$check1')"; 多分この$sql分のなにかが間違ってると思うですがいくらやっても 出来ません、、 mysql の設定はカラムはcheck1となっており、text, 値はnullとなっております。 どのなたか複数チェックボックスで表示された項目をMYSQLのデータベースに移行できる方法をご存知の方お伺い出来ませんでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • チェックボックス 複数選択

    現在PHPを勉強しているのですがどうしてもわからなくなってしまったので 質問をさせて頂きます。 現在自分が作ろうとしているのは 登録フォーム→確認ページ→登録完了ページ(MYSQLに接続)の流れになっております。 その中でチェックボックスでつまずいております。 こちらにそのコードを一部を記載させて頂きます。 どこで困っているかと申しますと、登録フォームから確認ページまでは 複数選択されたチェックボックスを表示されることができたのですが、 確認ページから登録ページに変わる際に文字化けなどをし、 mysqlに接続して登録した際も文字化けになってしまいます。 他にも変数の受け渡しもうまく出来ていないと思います。 自分の中の結論としては確認ページのhiddenあたりが間違ってるのでは ないかと思ってるのですが何度試してみてもうまくいきません。 大変困っており、誰かご存知の方、もしくはこういう風に変更した方がいいとかありましたらご教授をお願い出来ませんでしょうか? 1,登録フォーム <tr> <td>施術(チェックボックス)<br />順番不問</td> <td> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="aaa" />aaa</span> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="bbb" />bbb</span> </td> </tr> 2,登録確認ページ $sejyutu = $_POST["sejyutu"]; <?php if (trim($sejyutu) == "" || !isset($sejyutu)){ echo "施術が選択されておりません。"; $flag_sejyutu=0; } elseif (empty($sejyutu)){ echo "施術が選択されておりません"; $flag_sejyutu=0; } else { if(isset($sejyutu) and count($sejyutu)>0){ $sejyutu_value = ""; for($i=0;$i<count($sejyutu);$i++){ if($i == 0){ $sejyutu_value .= $sejyutu[$i]; } else { $sejyutu_value .= " " . $sejyutu[$i]; } } } print mb_convert_encoding(trim($sejyutu_value),"sjis","euc-jp") ; $flag_sejyutu=1; } ?> <?php if($flag_sejyutu==1) { ?> <form action="reg_complete.php" method ="post"> <input type="hidden" name="sejyutu_value[]" value="<?php echo $sejyutu_value; ?>"> } 3,登録完了ページ $sejyutu = $_POST['sejyutu_value']; それからmysqlに接続。

    • ベストアンサー
    • PHP
  • チェックボックスとテキストの受け渡し

    やりたい事は20件位の表示の中から納品書を印刷する為に選択し数量変更をして 確認画面をだしたいのですが... チェックボックスのチェックされているデーター、テキストボックスのデーター 両方ともデーターを受け取る事はできたのですが、チェックボックスはチェックされているデーターだけで、テキストボックスは最初から、全く別のレコードのデーターが入ってしまいます。どうしたらチェックされたレコードのテキストを受け取れるか教えて下さい。 sentaku.asp <input type="checkbox" name="chk" value="<%=RS.fields("注文番号")%>"> <INPUT size="10" type="text" name="su" maxlength="10" value="<%=RS.fields("注文残")%>"> kakunin.asp <% For i = 1 To Request.Form("chk").Count chuno1 = Request.Form("chk")(i) nousu1 = Request.Form("su")(i) next %>

  • javascriptでチェックボックスの選択状況をチェックする方法につ

    javascriptでチェックボックスの選択状況をチェックする方法について質問です。 チェックボックスを <input type="checkbox" name="chk[]" value="1"> <input type="checkbox" name="chk[]" value="2"> のようにした場合、チェックボックスが1か所以上選択されているかどうかは、 var count = 0; for (var i=0;i<document.myform.elements['chk[]'].length;i++){ if(document.myform.elements['chk[]'][i].checked){ count++; } } if(count==0){ window.alert("チェックしてください!"); } のようにすればチェック可能ですが、inputタグで <input type="checkbox" name="chk1[]" value="1"> <input type="checkbox" name="chk1[]" value="2"> <input type="checkbox" name="chk2[]" value="A"> <input type="checkbox" name="chk2[]" value="B"> のように「name」の配列名が変化する場合はどのようにすればチェック可能でしょうか?

  • チェックボックスから配列を使って値を受け取る方法

    チェックボックスから配列を使って値を受け取る方法について、 以下の通りに試してみたのですが、上手く行かず、 配列$fCに値が入りません。 どなたか原因を教えていただけないでしょうか。 ------------------------------------------------ hoge.html <form action="hoge.php"> <input type="checkbox" name="fC[]" value="hoge"> hoge <br> <input type="checkbox" name="fC[]" value="foo"> foo <br> <input type="checkbox" name="fC[]" value="bar"> bar <br> <input type="submit" value="OK"> </form> ---------------------------------------------------------- ------------------------------------------------- hoge.php <? for( $i=0; $i<count($fC); $i++ ) { print $i ." ::: " . $fC[$i] . "<br>\n"; } ?> ----------------------------------------------------------

    • ベストアンサー
    • PHP
  • チェックボックスのチェックについて

    submit時に一つでもチェックがなければアラートを表示 チェックがあれば進む・・・としたいです。 <form action=next.html name=form1> <input type=checkbox name=checkbox1 value=1> <input type=checkbox name=checkbox2 value=2> <input type=checkbox name=checkbox3 value=3> <input type=checkbox name=checkbox4 value=4> <input type=checkbox name=checkbox5 value=5> ~以下50まで続きます <input type=submit value=submit> </form> function countChecked(form1) { var total = 0; var max = 50; for (var index = 0; index < form1.checkbox.length; index++) { total += form1.checkbox[index].checked ? 1 : 0; } if(countChecked(document.form1)) > 0) { return true; } else { alert("no"); return false; } return(total); } 過去に似たような質問を参考に作ってみましたがダメでした。 チェックボックスの名前の付け方が悪いのでしょうか。

  • チェックボックスのデータの受け取り方について

    以下のようなチェックボックスを作ったとき、 test.phpではどうやって受け取ればよいのでしょうか? nameがそれぞれ違う場合は分かるのですが... 教えてください。 <form method="POST" action="test.php"> <input type="checkbox" name="color" value="red">赤</input> <input type="checkbox" name="color" value="blue">青</input> <input type="checkbox" name="color" value="white">白</input> <input type="checkbox" name="color" value="black">黒</input> <input type="submit" value="送信" > </form>

    • ベストアンサー
    • PHP
  • チェックボックスの使い方

    VBスクリプトでよくわからないところがあるので教えてください。たくさんのチェックボックスがあるので、For i To ~Next の構文を使って効率よくチェックされたものだけSQLの構文に取り入れて検索しようとしたのですがうまくゆきません。どのようにしたらよいでしょうか。 今試してみたのは、検索条件の設定画面で、 <input type=checkbox name=tatemono(0) value=自社使用>自社使用 <input type=checkbox name=tatemono(1) value=事業用>事業用 <input type=checkbox name=tatemono(2) value=電算センター >電算センター というようなチェックボックスを 検索処理用ページで SQL="SELECT * FROM [データ] " 'チェックボックスのチェック数が0でなければWHERE文をいれるflagをTrueにしておく If Request.Form("tatemono").Count>0 Then SQL=SQL & "WHERE " flag=True End If 'チェックボックスを最初から調べてチェックされていたらその項目がyesになっているという条件をSQL文に追加する For i=1 To Request.Form("tetemono").Count If Request.Form("tatemono")(i)<>"" Then fldname=Request.Form("tetemono")(i) If flag=True Then SQL = SQL & "AND" Else SQL = SQL & "WHERE" End If SQL= SQL & fldname & "=Yes" End If Next とやってみたのですが、ぜんぜん駄目みたいです。 根本的にどこか間違ってますよね・・・。 直すところを教えてください。 お願いします。

  • 複数あるチェックボックスの入力チェックするには?

    チェックボックスの入力チェックスクリプトを探しており、下記のようなスクリプトをネット検索で見つけました。 <!-- <script type="text/javascript"> function chNull(msg,obj) { if(!obj) return true; if((obj.type || obj[0].type) == 'checkbox'){ var flag = 0; if(obj.length){ for(var i=0; i<obj.length; i++) { if(obj[i].checked) flag = 1; } } else { if(obj.checked) flag = 1; } if(flag == 0) { alert(msg + 'を選択してください。'); return false; } } return true; } --> </script> <form method="POST" action="■.cgi" onSubmit="return chNull('チェックボックス',a);"> <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 </form> 同じnameのチェックボックス群がひとつしかないときはこれで問題ないのですが、 下記のようにnameが複数ある場合にはこのスクリプトのどの部分を変えればよいのでしょうか? <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 <input type="checkbox" name="b" value="B1" />B1 <input type="checkbox" name="b" value="B2" />B2 <input type="checkbox" name="c" value="C1" />C1 <input type="checkbox" name="c" value="C2" />C2 できればこのスクリプトをベースとして使用したいと思っています。どなたかお分かりの方がいらっしゃいましたらお教え下さいませ。 よろしくお願い致します。