-3

我正在使用 MYSQL 进行测验现在我想要执行以下功能

1--> 我的数据库中有 250 个问题,但我想在 50 个问题后停止查询。(一次选择一个)

2-->我想在单击该按钮后添加按钮检查正确答案,用户可以在他的答案下看到“正确”和“错误”。

请帮帮我

我的测验提问代码

    <html>
<title>Quiz</title>
<body bgcolor="#666666"> </body>
<h1><center> Quiz </center></h1>
<?php
echo "Welcome Student";
echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
echo "<a href=logout.php>Logout</a>";
?>
<?php
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
$dataselect = mysql_select_db("quiz",$con);
if(!$dataselect)
{
die("Database namelist not selected".mysql_error());
}
?>
$query = "SELECT * FROM question ORDER BY RAND() LIMIT 0,1";
$result = mysql_query($query) or die("Error processing query. ".mysql_error());
echo "<form method = 'post' action = 'submit.php'>";
echo "<table border = '1'>";
while($data = mysql_fetch_array($result))
{
        echo "".$data['Question']."<br>";
        echo "<input type = 'radio' name='radio' value='Option1'>";
        echo "".$data['Option1']."<br>";
        echo "<input type = 'radio' name='radio' value='Option2'>";
        echo "".$data['Option2']."<br>";
        echo "<input type = 'radio' name='radio' value='Option3'>";
        echo "".$data['Option3']."<br>";
}
echo "<tr><td align = 'center'><input type = 'submit' name = 'go' value = 'GO'></td></tr>";
echo "</table>";
echo "</form>";

在上面的代码中,用户一次被问一个问题,从 DB 中随机选择,然后这个代码将他的答案存储到 DB

<?php
$connection = mysql_pconnect("localhost", "root", "") or die ("Error connection. ".mysql_error());
mysql_select_db("quiz", $connection) or die("Error selecting db. ".mysql_error());
$Option['Option1'] = false;
$Option['Option2'] = false;
$Option['Option3'] = false;
$Option[$_POST['radio']] = true;
 $order= "INSERT INTO radio (Option1,Option2,Option3) VALUES ('".$Option['Option1']."','".$Option['Option2']."','".$Option['Option3']."')";
  $result=mysql_query($order) or die(mysql_error());
?>
<html>
<title>Answer Submission</title>
<body bgcolor="#666666"></body>
<center><b><h2>Your Answer Has Been Submitted Successfully Please Click On NEXT To Move Towards Next Question"</h2><br>
<br>
<br>

 <button onClick="window.location.href='Quiz.php'"><center><h3>NEXT</h3></center></button>
 <center><b><h2>Your Answer Has Been Submitted Successfully Please Click On Result To Get Your Results Till Yet"</h2><br>
  <button onClick="window.location.href='studresult.html'"><center><h3>NEXT</h3></center></button>
 </html>

但我不知道如何限制它在 50 个问题后停止的查询:/

4

1 回答 1

0

首先:请注意,您的代码对 SQL 注入是开放的!您应该清理用户输入。

如果您想记住用户已经回答了多少问题,您需要将该信息存储在某个地方。如果您的用户在页面上没有帐户,则没有安全的方法来执行此操作,您需要存储此客户端 - 这样用户就可以通过使用第二个浏览器来欺骗您。

一种方法是 PHP 的会话库(http://www.php.net/manual/en/book.session.php);每当用户回答问题时,您将他的会话计数器增加一:

session_start();
if(!isset($_SESSION['questions_answered'])) {
  $_SESSION['questions_answered'] = 1;
} else {
  $_SESSION['questions_answered']++;
}

在你问一个问题之前,你检查一下柜台:

session_start();
if(isset($_SESSION['questions_answered']) && $_SESSION['questions_answered'] >= 50) {
    echo 'You have already answered 50 questions';
} else {
    // ask him a question
}

为了向用户显示他的分数,您应该将他的会话 id ( session_id()) 连同他的答案一起存储在数据库中。当用户单击检查按钮时,您会向数据库查询他的答案,检查它们并显示结果。

要将会话 ID 存储在数据库中,您应该添加另一列,例如添加userSessionId到表中。插入数据时,只需将用户的会话 ID 添加到查询中:

$query = "INSERT INTO
        radio (questionId, userSessionId, Option1, Option2, Option3)
    VALUES (
        ".$questionId.",
        ".session_id().",
        '".$Option['Option1']."',
        '".$Option['Option2']."',
        '".$Option['Option3']."')";

此外,您应该使用问题 ID 并将其与答案一起存储,否则您将无法检查答案...

于 2013-05-29T16:44:53.320 回答