- ベストアンサー
PHPでテスト形式のプログラムを作成中
- ラジオボタンA,B,C,Dを使って選択し、NEXTボタンを押したら次の問題を表示し、回答をSESSIONの配列に書き込むプログラムを作っています。
- 配列の番号と中身がクリックしたときの一つしか表示されないので、全部の回答がSESSIONに保存されているかどうか分かりません。
- データベースに接続し、問題と回答を保存する処理も追加したいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ざっくりと書いてみました。 問題をデータベースから取得する代わりに定型の文字列で代用しています。また回答を保存するのはセッションのみです。適宜改変してみてください。 <?php // セッション初期化 session_start(); if (!isset($_SESSION['answer'])) { $_SESSION['answer'] = array(); } // データベース準備 //$db=mysql_connect("localhost","接続ID","パスワード"); //mysql_set_charset('utf8', $db); //mysql_select_db("データベース名", $db); $sikenbango = 'Q_111'; // 戻り if (isset($_POST['ret'])) { $qno = $_POST['ret'] - 1; } else { if (isset($_POST['no'])) {// 開始?途中? $qno=$_POST["no"]; if (isset($_POST['answer'])) { $_SESSION['answer'][$qno] = $_POST['answer']; } else { $_SESSION['answer'][$qno] = 'no select'; } $qno++; } else { $qno=1; } } if ($qno > 80) { // 80問終了 foreach ($_SESSION['answer'] as $key=>$val) { print $key . '->' . $val . '<br />' . PHP_EOL; } } else { // 出題Form // $res = mysql_query("SELECT * FROM `MONDAI` WHERE SIKENBANGO='$sikenbango' AND MONDAIBANGO='$qno'") or die('sql error'); // $row = mysql_fetch_array($res); $row = array('mondai' => 'テスト用問題' . $sikenbango . ' - ' . $qno); print '第 ' . $qno . ' 問目<br />' . PHP_EOL; print $row['mondai'] . '<br />' . PHP_EOL; print '<form method="post" action="" style="display:inline;">' . PHP_EOL; print '<input type="hidden" name="no" value="' . $qno . '">' . PHP_EOL; print '<input TYPE="radio" NAME="answer" VALUE="1">ア' . PHP_EOL; print '<input TYPE="radio" NAME="answer" VALUE="2">イ' . PHP_EOL; print '<input TYPE="radio" NAME="answer" VALUE="3">ウ' . PHP_EOL; print '<input TYPE="radio" NAME="answer" VALUE="4">エ' . PHP_EOL; print '<input type="submit" name="submit" value="Next">' . PHP_EOL; print '</form>' . PHP_EOL; if ($qno > 1) { print '<form method="post" action="" style="display:inline;">' . PHP_EOL; print '<input type="submit" name="submit" value="最初から">' . PHP_EOL; print '</form>' . PHP_EOL; print '<form method="post" action="" style="display:inline;">' . PHP_EOL; print '<input type="hidden" name="ret" value="' . $qno . '">' . PHP_EOL; print '<input type="submit" name="submit" value="戻る">' . PHP_EOL; print '</form>' . PHP_EOL; } }
お礼
ありがとうございます。参考になりました! また機会がありましたら宜しくお願いします。