PHPのシンプルな構文でランダムな掛け算の答えを入力し、正解か不正解を表示する方法は?

このQ&Aのポイント
  • PHPのシンプルな構文で、ランダムに出る掛け算の答えを入力し、別のファイルで正解か不正解という表示をする方法は、どのようになりますか?input type="hidden"部分の値の出力・受取りができず、正しく実行されません。
  • 質問の内容は、PHPのシンプルな構文を使用して、ランダムに出力される2つの数字の掛け算の答えをユーザーが入力し、別のファイルで正解か不正解と表示する方法についてです。ただし、input type="hidden"部分の値の出力・受取りがうまくいかず、正しく実行されない状況です。
  • 提供されたPHPのコードでは、ランダムに生成された2つの数字の掛け算の答えをユーザーが入力することができます。入力された答えと正解を比較し、正解か不正解を表示します。ただし、input type="hidden"部分の値の出力・受取りがうまくいかず、正しく実行されません。どこが間違っているのか教えてください。
回答を見る
  • ベストアンサー

PHPのシンプルな構文(初心者)

ランダムに出る掛け算の答えを入力して 別ファイルで正解か不正解という表示をする構文なのですが 「input type="hidden"」部分の値の出力・受取りができず 正しく実行がされません。 どこが間違っているのでしょうか? よろしくお願いいたします。 in.php -------------------------------------- <?php $saki = rand(1,9); $ato = rand(1,9); echo "$saki X $ato"; $seikai = $saki*$ato; ?> <html> <body> <form method="post" action="out.php"> <input type="text" name="kotae"> <input type="hidden" name="hid" value="<?php $seikai ?>"> ←※ <input type="submit" value="回答"> </form> </body> </html> -------------------------------------- out.php -------------------------------------- <?php $kotae = $_POST["kotae"]; $seikai = $_POST["hid"];     ←※ if($kotae == $seikai){ echo "正解です"; }else{ echo "間違っています。"; } echo "<hr>正解は{$seikai}です。"; ?> --------------------------------------

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

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 値が送信されない等のときは、実際に生成されているHTMLを参照してみてください。 <input type="hidden" name="hid" value="<?= $seikai ?>"> もしくは <input type="hidden" name="hid" value="<?php echo $seikai ?"> にする必要があります。 ようはHTMLに値を出力しないとダメということです。

okdayook
質問者

お礼

タイプミスがあったようで上手くいきました。 echoタグを使わないと値の受け渡しができないというのは 理解できないのですが とりあえずこの形を覚えておこうと思います。 ありがとうございました!!

okdayook
質問者

補足

早速のアドバイスありがとうございます。 教えていただいたとおりではout.php側の値の受取ができないようで やはり正しく結果が得られません。 「echo」で表示させるのではなく「post」での値の受け渡しが 問題のようです。 HTMLのソース参照ですが、まだはっきりは分からないのですが PHPソースは写っていないので確認の仕方が いまいち理解できていないのかもしれません。

その他の回答 (3)

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

どう考えても <input type="hidden" name="hid" value="<?php $seikai ?>"> ←※ じゃなく、 <input type="hidden" name="hid" value="<?=$seikai ?>"> もしくは <input type="hidden" name="hid" value="<?php echo $seikai ?>"> です。 >「echo」で表示させるのではなく「post」での値の受け渡しが >問題のようです。 以前も書きましたが、ブラウザ側でのhtmlソースでどういう値がセットされているかを確認すれば違いは一目瞭然のハズです。 #当然ですが、ブラウザでhtmlソースを確認するときには、phpスクリプトは #出てきません(出てくるようではphpが動作していない)。 正直、「わかった詐欺」を繰り返されても回答する方も困ります・・・ http://okwave.jp/qa/q8474877.html http://okwave.jp/qa/q8476736.html

okdayook
質問者

お礼

データの値の受け渡しに値を表示するechoタグが使われるのかは はっきり分からないのですが こういう形式でできるということで覚えようと思います。 ありがとうございました。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.3

こんにちは。 #2の方に補足いただいてますとおりで、 >やはり正しく結果が得られません。 >「echo」で表示させるのではなく「post」での値の受け渡しが >問題のようです。 ひとつひとつ切り分けていく必要があるのですが、まずは <input type="hidden" name="hid" value="<?php echo $seikai ?>">にする必要があることは間違いありません。 >HTMLのソース参照ですが、まだはっきりは分からないのですが >PHPソースは写っていないので確認の仕方が >いまいち理解できていないのかもしれません。 in.phpをブラウザで表示して、ソースの表示をします。 そこで<input type="hidden" name="hid" value="★ここがどうなってるか"> を確認するという手順です。 ここに値が入っていなければ、in.phpの問題、ここになんらかの値が入っているのであればout.phpの問題になります。

okdayook
質問者

お礼

タイプミスがあったようで 上手くいきました。 ありがとうございました。

回答No.2

#1の方の回答で基本的にはあっていると思いますが…。 <input type="hidden" name="hid" value="<?php $seikai ?>"> ←※ の部分を <input type="hidden" name="hid" value="<?php echo $seikai; ?>"> にしてみてどうですか? #1の回答だと ;(セミコロン)が入ってない気がしたので。 以前にもまったく同様の質問されていますよね? ここのソースで何をやろうとしているか理解できていますか? <?php echo $seikai; ?> の部分で $seikai の中身をHTMLの中へ出力させないといけません。 #1の方がおっしゃっているのは、うまく動かない時、 HTMLのソースに何が出力されてきているのかを調べてみて原因を追究しなさい、ということだと思います。 仮に、$seikai = 10 だとしたら、 ブラウザに実行したフォームのソースが <input type="hidden" name="hid" value="10"> と出力されているのか、異なっているのなら、valueが0なのか、空白なのか、それらによってどこが間違っているのかを推測していきます。 頑張ってください。

okdayook
質問者

お礼

タイプミスがあり#1の方のアドバイスで上手くいきました。 以前質問したときはファイル全体を<?php ?>タグでくくっていたのですが、 今回は復習としてhtmlタグ部分は<?php ?>タグで囲わないパターンで 実験してみました。 同じように値の受け渡しにechoタグを使わないといけないのは よく理解できないのですが とにかくありがとうございました。

関連するQ&A

  • シンプルなPHPのフォームテスト

    ランダムにでた計算の答えの値を フォームによって送信して正解か間違っているかを表示する PHPプログラムを考えてみたのですが上手くいきません。 in.php ------------------------------------------ <html> <body> <?php $saki = rand(1,9); $ato = rand(1,9); echo "計算:{$saki}X{$ato}="; $seikai = $saki*$ato; echo '<form action="out.php" method="post">'; echo '<input type="text" name="kotae">'; echo '<input type="hidden" name="hidden" value="$seikai">'; echo '<input type="submit" value="回答"></form>'; ?> </body> </html> ------------------------------------------ out.php ------------------------------------------ <html> <body> <?php $kotae = $_POST["kotae"]; $seikai = $_POST["hidden"]; if($kotae == $seikai){ echo "正解です"; }else{ echo "間違いです"; } ?> </body> </html> ------------------------------------------ in.phpファイルのインプットタグhiddenの所と out.phpファイルでの$_POST["hidden"]の受け取り部分が 間違っているのだと思いますが 正しくはどのようにしたらいいのでしょうか? もっとシンプルで分かりやすい書き方もあれば お教えください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 簡単なPHPの計算構文(初学者)

    以下はフォームから数字入力、演算子を選択して計算をする構文になります。 ------------------------------------------ <form action="" method="post"> <input type="text" name="saki"> <select name="select"> <option value="+">+ <option value="-">- <option value="*">X <option value="/">÷ <input type="text" name="ato"> <input type="submit" value="計算"> </form> <?php $saki = htmlspecialchars(@$_POST["saki"], ENT_QUOTES); $ato = htmlspecialchars(@$_POST["ato"], ENT_QUOTES); $keisan = @$_POST["select"]; if($keisan == "+"){ //←この部分から入れ替える $ans = $saki + $ato; echo "$saki + $ato = $ans"; }elseif($keisan == "-"){ $ans = $saki - $ato; echo "$saki - $ato = $ans"; }elseif($keisan == "*"){ $ans = $saki * $ato; echo "$saki x $ato = $ans"; }elseif($keisan == "/"){ $ans = $saki / $ato; echo "$saki ÷ $ato = $ans"; }else{ } ?> ---------------------------------------------------- この部分のif条件分岐を以下のシンプルな構文に変えたら 同じ結果が得られると思ったのですが上手くいきません。 ---------------------------------------------------- $kotae = "$saki $keisan $ato"; // ←※$keisanにはselectから選択された演算子が入っても計算されない? echo "$saki.$keisan.$ato ="; echo "$kotae"; ---------------------------------------------------- フォームで「+」を選択すれば「$keisan」に演算子「+」がそのまま入るので 自動的に「$saki+$ato」というような計算式になり「$kotae」に 計算結果が出ると思ったのですが 「$kotae = "$saki $keisan $ato"」は構文的に間違っているのでしょうか? ifを使わないシンプルな方法はないのでしょうか? よろしくお願いいたいます。

    • ベストアンサー
    • PHP
  • php初心者です。クイズについて

     phpでランダムに問題が表示され、それに答えると「正解!」、 「不正解!」となるようにしたいのですが。(単語カードみたいな)  問題をランダムに表示することは出来たのですが、問題に 対しての答えをどの様に記述すればいいのでしょうか? (下記のソースに追加・修正をして頂くか、参考となるサイト があれば教えて頂けないでしょうか?)  当方、phpをかじり始めたばかりなので、わかりやすく 教えて頂けると助かります。  どなたか、ご教授宜しくお願い致します。 <?php $quiz = array("りんごを英語で?", "いちごを英語で?", "とまとを英語で?"); shuffle($quiz); error_reporting(E_ALL & ~E_NOTICE); $kotae=$_POST["kotae"]; if ($_SERVER['REQUEST_METHOD']=="POST") { $message = ($quiz['answer'] == $_POST['kotae']) ? "正解!" : "不正解!"; echo $message; exit; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> </head> <body> <form action="" method="post"> <p>Q. <?echo current($quiz); ?> </p> <input type="text" name="kotae" size="50"><br><br> <input type="submit" value="回答する!"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • postのタイムラグ

    以下のソースでPOSTの値が取れないときがあるので困っています。 具体的にはページを表示してから30秒程度待ってからの クリックじゃないとPOSTの値が取れません。 GETの場合はページ表示後すぐにボタンをクリックしても大丈夫でした。 原因が分からず途方に暮れています。 お知恵をお貸しください。 PHP Version 5.2.3 <?php $P_data = $_POST["pg"]; print("POST=>".$P_data."<BR>"); $G_data = $_GET["pg"]; print("GET=>".$G_data."<BR>"); print <<< DOC_END <html> <head> </head> <body> DOC_END; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=1>"; echo"<input type=submit value=あ>"; echo"</form>"; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=2>"; echo"<input type=submit value=い>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=3>"; echo"<input type=submit value=う>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=4>"; echo"<input type=submit value=え>"; echo"</form>"; print <<< END </body> </html> END; ?>

    • 締切済み
    • PHP
  • hidden属性だけのフォーム

    hidden属性だけのフォームというのはちゃんと動作しますか? 自分のソースでは動作せず、送り先のPHPスクリプトでvar_dump()すると、$_POST['']の中身が NULL になってました。送信やリセットボタンを作らずに送信できるとすれば、どんな ソースになりますか? <?php echo '<form name="form1" method="POST" action="../../disp_access.php">'; echo '<input type="hidden" name="from" value="1">'; // どのページから飛んできたかを示す echo '<input type="hidden" name="browser" value="'.$referer.'">'; echo '<input type="hidden" name="ip" value="'.$ip.'">'; echo '</form>'; ?>

    • ベストアンサー
    • HTML
  • a hrefの値渡し

    今回も質問させていただきますが、よろしくお願いします。 a hrefを使って別のページに飛ぶときに、いっしょに二つの$変数名に入っている値を渡そうとしたいのですが、うまくいきません。 <html> (input.php) <head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <title>入力</title> </head> <?php $rand = $_POST['rand']; $charenge= $_POST['charenge']; ?> <body> <h1>値を入力してください</h1> <form action="judgement.php" method="POST"> <input type="text" name="num"/> <input type="submit" value="比較します"> <input type="hidden" name="rand value="<?php echo $rand?>"/> <input type="hidden" name="charenge" value="<?php echo $charenge?>"/> </form> </body> </html> <html> (judgement.php) <head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <title>比較結果</title> </head> <?php $rand = $_POST['rand']; $charenge = $_POST['charenge']; $num = $_POST['num']; ?> <body> <h1>比較結果</h1> <?php if($num == $rand){ print("あたりです。"); }else{ $charenge++; print("はずれです。 <br/>"); print("<a href=\"input.php\">入力ページ</a>からやり直してください"); } ?> </body> </html> 上のjudgement.phpのif文の中にある, <a href=\"input.php\">入力ページ</a>を どのように変えれば、$randと$charengeの値を input.phpに正しく渡すことができるのでしょうか? アドバイスをお願いします。

    • ベストアンサー
    • PHP
  • phpがうまく動きません。

    phpで4択のクイズを作りたいのですが 正解のラジオボタンを選んでもカウントされないのと 答え合わせを押すと正解だった箇所を赤く表示したいのですがなんて書けばよいのか どこにそのコードを入れるのかよくわかりません <状態> ・5つのデータがmyadminに保存されています ・データベースの内容は表示されます。 ・答え合わせを押すと正解のラジオボタンを選んだ数が表示されるようにしたいです ・保存ボタンは閉じても答えを保存するためにあります ・q_noは8ケタ固定であり、左から5つ目までは固定であと3桁は999問入れられるよう設定してあります ・q_ansはデータベースに答えの値(1~4)が入れてあります ・データベース名はproblemです <省略> $res_set = mysql_query($sql); while ($row=mysql_fetch_array($res_set)){ ?> <form method="POST" action="H2102.php"> <?php echo $row['q_no'] . " "; ?> <br> <?php echo $row['q_text'] . " "; ?><br><br> <br> <?php echo "ア"; ?> <input type="radio" name="q_ans" value="1"> <?php echo $row['q_point1'] . " "; ?> <br><br><br> <?php echo "イ"; ?> <input type="radio" name="q_ans" value="2"> <?php echo $row['q_point2'] . " "; ?> <br> <br><br> <?php echo "ウ"; ?> <input type="radio" name="q_ans" value="3"> <?php echo $row['q_point3'] . " "; ?> <br><br><br> <?php echo "エ"; ?> <input type="radio" name="q_ans" value="4"> <?php echo $row['q_point4'] . " "; ?> <br><br><br> <br> <input type = "submit" name="save" value="保存"> <?php if(isset($_POST['save'])){ $_SESSION['save'] = $_POST['q_ans']; //保存すると選んだ回答を保存 } ?> <?php } ?> </form> <form method="POST" action="H2102.php"> <input type = "submit" name="ans" value="答え合わせ"> <?php //正解かどうかをチェック if(isset($_POST['ans'])){ $a = $_SESSION['a']; if($row['q_no'] == $_POST['q_no'] && $_POST['q_ans'] || $_SESSION['save'] == $row['q_ans'] ){ $_SESSION['a'] = $a + 1; //q_noが一致かつ保存した値または選んだ解答(値)が一致していれば1問につき1つカウントする $a = $_SESSION['a']; } echo $a; //カウントされているかをチェック } ?> <input type = "submit" name="del" value="カウント初期化"> <?php if(isset($_POST['del'])){ session_unset(); } ?> </form> <br> <?php } ?> 足りない情報があれば追記します

    • 締切済み
    • PHP
  • fromからの値の受け渡しについて

    fromからの値の受け渡しについて 1) <form action="./mondai.php" method=post target="_blank"> <input type=hidden name="kotae" value="on"> 2) <form action="./mondai.php" method=post target="_blank" onClick="window.open('./mondai.php','newWin','width=500,height=400,toolbar=no,location=0,status=0,menubar=0,scrollbars=yes,resizable=yes'); return false;"> <input type=hidden name="kotae" value="on"> 1) で受け取ると、mondai.phpで、$kotae に on が入りますが、2) で行うと入りません。 2) で上手く値を受け取る方法はありますでしょうか。  アドバイスいただければ幸いです。

    • ベストアンサー
    • PHP
  • PHP 画面設計

    PHPでちょっと遊べるページを作ろうとしています。ですが、スタート画面を作り見に行くとエラーと文字化けだらけとなってしまいます。 <html> (start.php) <head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <title>トントン商店です</title> </head> <body> <?php echo<<<EOD <h1>トントン商店です</h1> <ul> <li>御用の方は下にある入口を押してね</li> <li>間違えて来た方は立ち去ってください</li> </ul> EOD; $rand = rand(0, 100); ?> <form action="input.php" method="POST"> <input type="submit" value="入口"/> <input type="hidden" name="rand" value="$rand"/> <input type="hidden" name="count" value="1"/> </body> </html> エラーが、 Warning: Unexpected character in input: ' ' (ASCII=27) state=5 in ~/opening.php on line 9 Notice: Undefined variable: B in ~/opening.php on line 9 Notice: Undefined variable: G in ~/opening.php on line 9 9以外にも11,12にも同じようなのが出ます。 また、乱数を入れたrandを次のページに渡そうとしましたが、次のページに乱数ではなく、$randという文字が表示されてしまいます。文字化けは、 .htmlに変えて少しいじれば直るのですが、rand()関数を使うため.phpでやりたいのですが、どうすればいいかわかりません。 エラーの対処と次のページへの渡し方について、誰か正しい書き方を教えてください。

    • ベストアンサー
    • PHP
  • PHP foreachのループの中でPOST送信

    現在掲示板を作っています。 <?php foreach ($result as $record){ $id = $record ["id"]; $title = $record ["title"]; ?> <form method="post" name="form1" action="contents.php"> <input type="hidden" name="id" value="<?php echo $id; ?>"> <a href="javascript:form1.submit()" ><?php echo $title; ?></a> </form> <?php } $dbInfo = null; ?> </form> テーブルのidとtitleをすべて取り出しています。 titleを一覧表示で全件表示させリンクを貼り、移動先にidをPOSTで送信し投稿内容がみられるようにしたいのですが、リンクを貼れても飛べなかったり、移動できてもなにも送信していない状態(ただ移動しただけ)だったり。 2つ目のphp直後の「}」を1つ目の中で閉じるとPOST送信しつつ移動できるのですが、1件しか表示されなくなってしまいます。 <form method="POST" name="con-id"> <input type="hidden" name="id" value="<?php echo $id; ?>"> <a href='contents.php'><?php echo $title; ?></a> </form> などもしてみましたが、POST送信はされませんでした。 なにか方法はありませんでしょうか? ここをこうした方がいい、など教えて頂きたいです。 よろしくお願いいたします。

    • 締切済み
    • PHP