• ベストアンサー

同じページでフォームデータを受取る方法

同じフォームでデータを送信させたいと考えています。 サーバ環境変数の $_SERVER['PHP_SELF'] を使用すれば 出来そうなところまではたどり着いたのですが、具体的な 記載方法が分かりません。 やりたい事としましては、まず最初の画面で1行ずつ何かデータを 表示させて、チェックボックスで複数選択可能な状態にします。 書式方法が分からないところですが、チェックボックスで選択した データのみを、input type='submit'を使って同じフォームでデータ を送信させて、チェックボックスにて選択したデータのみを画面に 表示させたいと考えています。 どなたかお分かりになる方がいらっしゃいましたら、簡単な具体例 として記載方法を教えて頂けないでしょうか。

  • PHP
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.3

>> 結果画面には、チェックボックスで選択したデータのみを表示させたいと考えています。 以下参照 <?php print "<html><body>"; if (isset($_POST['cbox'])){ foreach($_POST['cbox'] as $val){ $val=htmlspecialchars($val); print "チェック${val}が選択されました<br>\n"; } } else { print <<<_FORM_ <form action="" method="post"> <input type="checkbox" name="cbox[]" value="1">チェック1<br> <input type="checkbox" name="cbox[]" value="2">チェック2<br> <input type="checkbox" name="cbox[]" value="3">チェック3<br> <input type="submit"> </form> _FORM_; } print "</body></html>"; ?>

khaii21
質問者

お礼

ご丁寧に返答を有難う御座いました。 助かりました。

その他の回答 (2)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> 簡単な具体例として記載方法を教えて頂けないでしょうか。 例を示します <?php print <<<_FORM_ <html><body> <form action="" method="post"> <input type="checkbox" name="cbox[]" value="1">チェック1<br> <input type="checkbox" name="cbox[]" value="2">チェック2<br> <input type="checkbox" name="cbox[]" value="3">チェック3<br> <input type="submit"> </form> _FORM_; if (isset($_POST['cbox'])){ print "<hr>"; foreach($_POST['cbox'] as $val){ $val=htmlspecialchars($val); print "チェック${val}が選択されました<br>\n"; } } print "</body></html>"; ?> >> サーバ環境変数の $_SERVER['PHP_SELF'] を使用すれば出来そうなところまではたどり着いたのですが・・・ $_SERVER['PHP_SELF'] をFormのactionに使うと脆弱性の問題があります。空欄にするか $_SERVER['SCRIPT_NAME']を使いましょう 上記サンプルでは、formの行を下記に変更してもOKです <form action="${_SERVER['SCRIPT_NAME']}" method="post">

khaii21
質問者

補足

返答有難う御座います。 教えて頂いた内容でほぼ希望は満たせているのですが、 結果画面には、チェックボックスで選択したデータのみを 表示させたいと考えています。 最初の画面で表示するチェックボックスの選択画面は 結果画面には表示させない方法をご存知でしたら教えて 頂けますでしょうか。

noname#87667
noname#87667
回答No.1

inputタグにname属性を入れればできますよ。 <input type="submit" name="check">に変更して、あとはPHPの仕事です。 そのプログラムの書き方はこんな感じです。 <?php (中略) if ($_POST['name']=="check") { print $_POST['hoge']."<BR>"; (中略) } なお、同様の質問が過去に投稿されており、if ($_POST['name']=="check")のところは「if ($_POST['Submit'])」としても大丈夫なようです。

khaii21
質問者

補足

返信有難う御座います。 申し訳御座いません。PHPの知識が乏しいため、 おっしゃって頂いている事は何となくは分かるのですが、 具体的にスクリプトに起こすことが出来ず、困っています。 大変申し訳御座いませんが、何か簡単なチェックボックスの 画面部分を加えたスクリプトを教えて頂けると助かります。

関連するQ&A

  • チェックによる送信データ

    HTMLのフォームからPOST送信した時、サーバに行くデータを教えてください。 フォームにはチェックボックスと、2つのグループのラジオボックスがあります。 チェックボックスはチェックされていないとそのデータは送信されませんよね? ラジオボックスは選択されたものだけが送られ、選択されないものは送られないのですか? ラジオボックスでそのグループ内にチャックが無ければそのグループの情報は何も送られませんか?

    • ベストアンサー
    • CGI
  • 送信フォームを2つ用意する方法

    基本的な事が分かりません。 よろしくお願いします。 以下のような送信フォームを2つ用意しています。 <form action=pagingall6.jsp method=GET> ページ:<input type=text size=3 name=page> <input type=submit value="go" name=btn2> 2つのnameは別にしていますがactionの先は同じページ(self)としております。 こういう送信フォームは全て埋めないとうまく動かないのでしょうか? やってみると、片方のテキストボックスに未記入だとエラーが出ます。規則みたいなものが少し弱いので、よろしくお願いします。m(_ _)m

    • ベストアンサー
    • HTML
  • メール送信フォームで。

    CGI初心者です。 下記メールフォームで「内容確認画面を出さないで送信する」の文を削除して、 チェックボックスも削除したいのです。 ただ、フォーム上では削除されているように見えても、送信ボタンをクリックすると、すぐ確認画面が自動的に出てくるようにするにはどうたしら良いのでしょうか。 cgiファイルの設定で行うのでしょうか? 質問に不備がありましたら、補足致しますので、よろしくお願いします。 <input type="submit" VALUE="確認"> <input TYPE="reset" VALUE="リセット"> <input type="checkbox" name="no_check" value="on">内容確認画面を出さないで送信する</font>

    • ベストアンサー
    • CGI
  • フォームからのデータ送信方法

    どのカテゴリーに質問させていただいていいのか見当がつかなかったのでこちらに 投稿させてもらいました 見よう見まねでフォームからのデータ送信を試みています。 やり方に検討がつかずヒントをもらえたらと思います 最終目標はショッピングカートへのデータ送信です 一つの商品をカゴに入れるには下記のような形だというところまではわかりました <form action="/products/detail.php" method="post" name="a11" id="a11" > <input type="hidden" name="mode" value="cart" /> <input type="hidden" name="product_id" value="137" /> <input type="hidden" name="product_class_id" value="634" /> <input type="checkbox" name="quantity" value="1" /> <input type="submit" value="購入する" /> しかし、商品にはグループが3つあり、さらに各グループには9つの商品あります なので合計27個の商品の中から3つを選んでもらう形をとりたいのです どれを選んだのかがわかるように一覧の中から選択してもらいたいです Aグループ (商品1、商品2、商品3・・・・) Bグループ (商品10、商品11、商品12・・・・・) Cグループ (商品19、商品20、商品21・・・・・) という感じです 各グループの中からは一つしか購入できないので、 ラジオボタンで選択してもらい、それをフォームにてデータを送信 確認画面を経て、ショッピングカートへ送信という流れを取りたいと考えています ラジオボタンで選択後に商品の情報をカートに送るためにはどうすればよいでしょうか? 素人考えで、例えば、ボックスみたいのをつくり、その中に情報を記入、 それをなんらかの形で呼び出す みたいな感じでできる方法がないかと探しています お手数ではありますが、参照プログラムを記述していただけるとありがたいです 質問の仕方も下手で申し分けありませんが、足らない部分は随時追加させていただきますので、 必要な情報等もございましたらお教えいただければと思います どうぞよろしくお願いいたします

    • 締切済み
    • CSS
  • チェックボックスをクリックしたら、テキストに入力出来る様にしたいです

    今メールフォームを作っています。 チェックボックスにチェックしたら、テキストフィールドに記入しないと、 エラーがでる様にJavascriptでチェックをかけたいのですが教えて頂けませんでしょうか。 下記のようなフォームにしたいです。 ■フォーム これをあなたは何処で知りましたか? チェックボックス1 新聞 チェックボックス2 テレビ チェックボックス3 その他 テキストフィールド その他を選んだ方は記入して下さい。 このチェックボックスは必須にして、 チェックボックス1~3までのどれかをチェックしないとアラートを表示したいです。 また、チェックボックス3を選択したのにテキストフィールドに入力していない場合も アラートを表示したいです。 上記のalertは送信ボタン<input name="submit" type="submit" value="情報を送信する"> を押した際に出したいです。 この様なチェックボックスのグループを同じフォームに2つ作りたいです。

  • フォーム処理について

    以下のようなプログラムにおいて、一度submit(解析する)ボタンを押すとvalue属性で指定しているデータが格納されず、"on"という文字列が格納されてしまいます。なぜでしょうか? /* print "<form method=\"post\" action=\"".$_SERVER[PHP_SELF]."\" name=\"content\">"; __while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)){ ____print "<input type=\"checkbox\" name=\"noun[]\" value=\"DBに格納済みのデータ(1)"\">".左のデータ(1)."<br>"; __} print "<input type=\"submit\" value=\"解析する\">"; print "</form>"; */ 具体的な問題は以下になります。 1.2つのチェックボックスをチェックし、「解析する」ボタンを押したあとのnoun[]配列の中身は、Array([0]=> on [1]=> on)です。 2.次に同じチェックボックスにチェックをいれ、再度「解析する」ボタンを押して配列の中身を確かめてみると、Array([0]=> データ [1]=> データ) という感じで、2度目で実際のデータが格納される状態です。どうしたら、1度目の動作でチェックしたデータを配列に格納できるのでしょうか? どなたかアドバイスをお願い致します。

    • ベストアンサー
    • PHP
  • フォームからsubmitをした後再読込させない

    ほぼ初心者でフォームからの申込みを作っています 現在 <form name="a11" action="/products/detail.php" method="post" > <input type="hidden" name="mode" value="cart" /> <input type="hidden" name="product_id" value="137" /> <input type="hidden" name="product_class_id" value="634" /> <input type="checkbox" name="quantity" value="1" /><br /> <input type="submit" value="受講する" onClick="alert('カゴに入れました');value='受講する'" /> </form> というフォームが数十個あるのですが、 一つチェックボックスにチェックを入れて送信するとページの再読み込みがされて チェックボックスのチェックが消えてしまいます どのチェックボックスにチェックを入れたかは残したまま、次のsubmitを押させたいのです 申込み者がどのフォームにチェックを入れて送信をしたかを見れるようにして 次のページに飛ばしたいのです どうかご教授願います HTMLの項目で質問させていただきましたが、JavaScriptのプログラム例など 併せてご教授いただけますと助かります どうぞよろしくお願いいたします

  • フォーム送信後の更新ボタンでも$_POST変数が初期化されない

    フォームのサブミット後にプログラムが走るようになっているtest.phpがあるのですが、フォーム送信後に更新ボタンを押しても再度ポストされるようになってしまっています。 ブラウザの更新ボタンを押したときには、ポストせずにフォームをクリアしたいのですが、どうすればできますでしょうか? <form method="post" action="<?php print($_SERVER['PHP_SELF']); ?>"> <input type=text name=aaa> <input type="submit" name="submit" value="submit"> </form> <?php if($_POST['submit']) { 処理 } ?>

    • ベストアンサー
    • PHP
  • フォームに入力したデータの受け渡しについて

    左右に分かれたフレームを使用したページ作成を検討しています。 左フレーム内のフォームへ入力したテキストやチェックボックスのデータを、 右フレームに設置した1つのテキストエリアへコピーボタンで受け渡しを行う方法を探しています。 テキストボックス1行だけの受け渡しはできるのですが、 複数のテキストエリアやチェックボックスを使用した場合の受け渡し方法をご教示いただきたけますでしょうか? 左フレームとしては↓のような内容を想定しています。 <html> <form> テキスト:</br> <input type="text" name="aaa" /></br> ラジオ:</br> <input type="radio" name="bbb" value="radio1" checked="checked" /> ラジオ1 <input type="radio" name="bbb" value="radio2" /> ラジオ2</br> チェック:</br> <input type="checkbox" name="ccc" value="check1" /> チェック1 <input type="checkbox" name="ccc" value="check2" /> チェック2</br> 選択項目:</br> <select name="ddd"> <option>A</option> <option>B</option> </select></br> テキストエリア</br> <textarea name="eee" rows="2" cols="15">テキストエリア1</textarea> </br> <input type="submit" value="送信" />  <input type="reset" value="リセット" /> </form> </html> よろしくお願いいたします。

  • POSTデータをフォームに残す方法

    同一フォーム内PHPへ、フォームをポストした際、 フォーム入力チェックを行い誤りがあれば、 元のフォームに入力したデータを残したいのですがどのようにすればよいでしょうか? 結果によって分岐せずに、フォームに必ず値が残ると言う方法でもかまいません。 //ここから <form method="post" action =""> <table> <tr> <td><input name="title" size="20"></td> <td><input type="submit" name="send" value=" 登録 "></td> </tr> </table> </form> <?php if(len_check($_POST['title'])>8){ echo "文字数オーバーです。"; //フォームに値を戻す処理。 }else{ echo "入力した文字={$_POST['title']}"; //フォームの値は破棄。 } function len_check($s){ return strlen(bin2hex($s)) / 2; } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう