• 締切済み

PHPのフォームの処理について

PHPで以下のようなフォームを作り、回答に一つでも選択肢Cが含まれていた場合、 送信ボタンを押した後、BADを返し、 その他の場合はGoodを返すような仕組みを作りたいと考えています。 PHPでどのように記述すれば良いでしょうか? Ifとelseを使えばよいのでしょうか? 最近勉強を始めたばかりでど素人です。どうか、教えていただけませんでしょうか? 質問1*****? 選択肢A 選択肢B 選択肢C 質問2*****? 選択肢A 選択肢B 選択肢C 質問3*****? 選択肢A 選択肢B 選択肢C 送信

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

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

提示されたhtmlソースだと、ANo.1で "C" と書いた部分(選択肢Cのときのvalue属性値)が "1" になっているというだけですね。 ∴ "C" → "1" にするだけでいいです。

kaikaikaiji
質問者

お礼

ありがとうございました!

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

どういうデータがPOSTされるのか書かれていない(htmlソースとして提示されていない)ので、phpソースを書くことが出来ません。 選択肢Cがチェックボックス(もしくはラジオボタン)で、選択したときに送信される値が"C"だと仮定するならば $bad = false; foreach ($POST as $val) { if ($val === "C") { $bad = true; } } if ($bad) { print "BAD"; } else { print "Good"; }

kaikaikaiji
質問者

お礼

情報不足で恐縮です。以下のようなデータがPOSTされます。以下の内容を、ご回答いただいたソースに当てはめてもうまくいくでしょうか?どこかを間違えたのだと思いますが、上手く動作しませんでした。。もう一度教えていただけませんでしょうか? <form name="input" action="receiver.php" method="post"> 名前は?<br> <input type="text" name="username"> <br> お友達といつも仲良く遊べていますか?<br> <select name="ques1"> <option value="3">いつも仲良く遊んでいます! <option value="2">大体いつも仲良く遊んでいますが、時々遊べていません! <option value="1">いつも喧嘩しちゃいます。。 </select> <br <br> お部屋はきれいに片づけていますか?<br> <select name="ques2"> <option value="3">いつもきれいです! <option value="2">少しちらかっています。 <option value="1">足の踏み場がありません! </select> <br> <br> 嘘をついたりしませんか?<br> <select name="ques3"> <option value="3">いつも正直です。 <option value="2">たまに嘘をついてしまいます。 <option value="1">しょっちゅう嘘をついてしまいます。。 </select> <br> <br> 今年はサンタさんに何をお願いしますか?<br> <select name="ques4"> <option value="3">おもちゃです! <option value="2">ぬいぐるみです! <option value="1">現金です。。 </select> <br><br> <input type="submit" value="Good or Bad?"> </form> </body> </html>

関連するQ&A

  • PHP 送信されたフォームについて

    HTMLから送信されたフォームがうまくうけとれないので質問させていただきます。 HTML側でチェックボックスを用いてphp側に送ったところうまく結果が反映されません。 HTML側で以下のソースを書き <input type="checkbox" name="kaitouran321" value="a">a <input type="checkbox" name="kaitouran322" value="b">b <input type="checkbox" name="kaitouran323" value="c">c php側で <?php print(htmlspecialchars($_POST['kaitouran321'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran322'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran323'], ENT_QUOTES, 'UTF-8')); ?> および <?php if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') ?> $i++; と書きました。htmlキャラはしっかり受け取ってくれるのですが、if文で書いた方は反応してくれません(iが+1されない)。選択肢がひとつの時、if文は反応するので条件の書き方がおかしいのでしょうか? 回答お願いします。

    • 締切済み
    • PHP
  • PHPのフォームの複数選択で。。。

    すいません当方PHPかなりの初心者で。。。。 入力→確認→送信のような流れのフォームを作成しているのですが。。。 メールフォームで複数選択が可能な場合フォームの受け取り側のPHPはどのように記載すればいいのでしょうか? □A □B □C □D □E □F ↑のようなフォームを作りチェックされたものを 【フォーム側】 <input type="checkbox" value="A" name="is[]">A <input type="checkbox" value="B" name="is[]">B <input type="checkbox" value="C" name="is[]">C <input type="checkbox" value="D" name="is[]">D <input type="checkbox" value="E" name="is[]">E <input type="checkbox" value="F" name="is[]">F 【確認画面のPHP】 // フォームの値を取得します。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ // 「magic_quotes_gpc = On」のときはエスケープ解除 if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $$k = $v; } } else { exit(); } //中略// // 確認画面表示箇所 <? $is_value = $_POST["is"]; foreach($is_value as $v){ echo $v ." <br> "; } ?> //中略// // 送信PHPへの受け渡し場所 <input type="hidden" name="service" value="<?= $is_value ?>"> ↑この部分の記載の仕方がわかりません。。。 確認画面で表示させたものを関数に格納して送信PHPの方に受け渡ししたいのですが。。。 どのようにどのあたりに記載したらいいのでしょうか? わかりにくい質問かもしれません。。。 なにとぞなにかお気づきの点がありましたらご教授ねがえると助かります。。。 よろしくお願いします。

    • 締切済み
    • PHP
  • phpでのメールフォームの画像表示について

    メールフォームを作成しているのですが、そこで画像の選択があります。 確認画面では画像の値(id="***")のみ表示させることができるのですが、選択した画像(jpg)も表示させたいと考えています。 PHPを使用していまして、フォームには下記のように記述しました。 <input type="radio" name="test" id="test01" value="radio" <? if( strcmp($DISP["test"],'test01')==0 ){ echo( 'checked="checked"' ); } ?> /> 確認画面にはこのように記述しました。 <? if( $DISP["test"] ){ echo $DISP["test"]; }else{ echo "&nbsp"; } ?> 画像も表示させたい場合は、どのように記述すればよいか解りません。 お解りになる方、よろしくお願いします。

    • ベストアンサー
    • PHP
  • php言語の脆弱性について

    php言語の脆弱性について パスワード認証において、phpのstrcmp, strcasecmpといった関数には脆弱性があると聞きます。 そこで、具体的にどのような脆弱性があるのかお伺いしたいと思います。 たとえば、認証画面にパスワードの送信フォームがあり、パスワードが分からない場合 $pass = **** if (isset($_POST['pass'])) if (strcasecmp($_POST['pass'], $pass) == 0) echo "Correct!"; else echo "Incorrect" というプログラムになっていた場合、送信フォームにどのような文字列を渡せば認証が通るのでしょうか。 また、認証が通る仕組みについても教えていただけたらと思います。

  • 繰り返し処理をうまく使えないでしょうか?

    PHP4を使用しています。 フォームで名前がchk1~chk10のまでのチェックボックスがあるとします。 そのチェックボックスにチェックが付いていた場合には1、 チェックが付いていない場合には2を書き出したいとします。 if ($chk1==1){ echo "1"; }else{ echo "2"; } if ($chk2==1){ echo "1"; }else{ echo "2"; } ・・・ とずっと記述すれば可能だと思うのですが、 それをうまく繰り返し処理を使って出来ないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP GETで飛ばす変数の中身

    PHP GETで飛ばす変数の中身 a.php→b.phpへ進むボタンを押したとき、 a.phpのフォーム入力でエラーがあった場合はa.phpへ戻るページを作っています。 各フォームの入力チェックは正規表現で判定し、 誤った入力がされた場合は$input2="2"; 正しい入力の場合(else)は$input2=""; のような形で変数に値を代入しています。 ※$input2には「何も入らない」か「2」が入るようにしているつもりです。 入力エラー時にa.phpへ戻る記述は ------------------------------------------------------------------------------ if($input1=="1"||$input2="2"||$input3="3"){   header("Location:a.php?SID&input1=$input1&input2=$input2&input3=$input3"); } ------------------------------------------------------------------------------ のような形にしています。(長ったらしい部分は省いています。) ところが、エラーがないときにa.phpに戻ってb.phpに進まなくなってしまいました。 アドレスバーをみると【input2=1】となっており、なぜか$input2に「1」が入ってしまっているようです。 $input2には「何も入らない」か「2」が入るように記述しているつもりなのですが、 「1」が入ってしまう理由がよく分かりません。 エラーがない場合はb.phpへ進みたいので、「何も入らない」状態にしたいです。 なぜ「1」が入ってしまうのかお分かりの方がいらっしゃれば教えて頂けると嬉しいです。 ※PHPは勉強し始めたばかりなので、不足している点などあればご指摘下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのパス指定

    初めてphpを触っています。 いくつかの処理を外部ファイルにしたいのですが パスの指定が悪いのか、同じ階層に置いたり、いろいろ試してもfatal error ばかりです。 どこが悪いのか、教えていただけないでしょうか? サンプルとして、moto.phpのなかのincludeフォルダー内の外部ファイル:func.phpを実行することとします。 moto.php <?php require "./include/func.php"); $a = 2; $b = 1; $c = $a - $b * $a; echo return_word($a); echo "<br>"; //改行 echo return_word($b); echo "<br>"; //改行 echo return_word($c); ?> func.php <? php function return_word ( $data ){ if ( $a==1){ return "a"; }else if ($a==2){ return "b"; }else{ return "c"; } } ?> コマンドラインから php moto.php を実行すると <? php function return_word ( $data ){ if ( $a==1){ return "a"; }else if ($a==2){ return "b"; }else{ return "c"; } } ?> Fatal error: Call to undefined function return_word() in C:\xxxxxx\php\moto.php on line 9 となってしまいます。 外部ファイルは見えているようなのに、どうして関数がundefined になってしまうのでしょうか? phpの基本的なことなのかもしれませんが よろしくアドバイスお願いできればと思います。

    • ベストアンサー
    • PHP
  • フォームでボタンクリック後にそのページに内容を表示する

    a.htmというファイルの中でフォームを使用しています。 フォームで送信のボタンを押すとフォームの内容を反映した文をphpを使用してb.phpに表示させています。 送信ボタンを押すとb.phpのページに飛んでしまいますが、a.htmの送信ボタンの次の行くらいにb.phpの内容を表示させるようにしたいです。 どのように記述すればできるでしょうか?

  • PHPでPOST時に別のフォームに飛ばしたい

    タイトルのとおりなのですが、 a.phpからb.phpにpostで飛ばすと、表示されるのはb.phpになります。 でもしたいことは、b.phpにpostしたいけど、 最終表示させたいのはc.phpです。 ただし、b.phpにはc.phpに遷移する記述はできず、 a.phpからpostだけして、c.phpに移行することは可能でしょうか?

    • ベストアンサー
    • PHP
  • PHPのif文「POSTしていない場合」

    PHPの初心者です。 HTMLのフォームでsubmitが押されたかの判定を if (isset($_POST['submit'])){ print"押されました"; }else{  print"押されてません"; } という、形でやってきたのですが、 yes側に押していない場合を設定してelse側に押した場合を記述したいのですが、if文で「submitが押されていなかったら」とはどのように書けばいいでしょうか?

    • ベストアンサー
    • PHP