- 締切済み
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 } ?> 足りない情報があれば追記します
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- utun01
- ベストアンサー率40% (110/270)
そういった処理はJavascriptで書くのをお勧めします。 PHPのみで記述すると、そういった一部のパラメータ変更だけでもページ自体のリフレッシュが必要になりますしね。 ただ、Javascriptでやる場合、ソースを見られると答えが分かってしまうのが難点でしょうか。 Ajaxでやると結局より複雑になってしまいますしね。 ちなみに、jQueryを使うと非常に簡単に書けますよ。 以下、サンプル。(適当な感じなので、もし使われる際はいろいろ弄ってみて下さい) <html> <head> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript"> ans = 0; //初期化 $(document).ready(function(){ ans = 1; //正解用(DBから引っ張ってくる?) }); function btnaction(){ user_ans = $("input[name=q_ans]:checked").val(); if(ans == user_ans){ alert("正解!"); } else { alert("間違い"); } } </script> </head> <body> <form> <input type="radio" name="q_ans" value="1">ans_1<br /> <input type="radio" name="q_ans" value="2">ans_2<br /> <input type="radio" name="q_ans" value="3">ans_3<br /> <input type="radio" name="q_ans" value="4">ans_4<br /><br /> <input type = "button" name="act" value="正解は?" onClick="btnaction()"> </form> </body> </html>