- ベストアンサー
同じページでフォームデータを受取る方法
同じフォームでデータを送信させたいと考えています。 サーバ環境変数の $_SERVER['PHP_SELF'] を使用すれば 出来そうなところまではたどり着いたのですが、具体的な 記載方法が分かりません。 やりたい事としましては、まず最初の画面で1行ずつ何かデータを 表示させて、チェックボックスで複数選択可能な状態にします。 書式方法が分からないところですが、チェックボックスで選択した データのみを、input type='submit'を使って同じフォームでデータ を送信させて、チェックボックスにて選択したデータのみを画面に 表示させたいと考えています。 どなたかお分かりになる方がいらっしゃいましたら、簡単な具体例 として記載方法を教えて頂けないでしょうか。
- みんなの回答 (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>"; ?>
その他の回答 (2)
- mpx
- ベストアンサー率71% (149/209)
>> 簡単な具体例として記載方法を教えて頂けないでしょうか。 例を示します <?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">
補足
返答有難う御座います。 教えて頂いた内容でほぼ希望は満たせているのですが、 結果画面には、チェックボックスで選択したデータのみを 表示させたいと考えています。 最初の画面で表示するチェックボックスの選択画面は 結果画面には表示させない方法をご存知でしたら教えて 頂けますでしょうか。
inputタグにname属性を入れればできますよ。 <input type="submit" name="check">に変更して、あとはPHPの仕事です。 そのプログラムの書き方はこんな感じです。 <?php (中略) if ($_POST['name']=="check") { print $_POST['hoge']."<BR>"; (中略) } なお、同様の質問が過去に投稿されており、if ($_POST['name']=="check")のところは「if ($_POST['Submit'])」としても大丈夫なようです。
補足
返信有難う御座います。 申し訳御座いません。PHPの知識が乏しいため、 おっしゃって頂いている事は何となくは分かるのですが、 具体的にスクリプトに起こすことが出来ず、困っています。 大変申し訳御座いませんが、何か簡単なチェックボックスの 画面部分を加えたスクリプトを教えて頂けると助かります。
お礼
ご丁寧に返答を有難う御座いました。 助かりました。