我正在使用PHP&我想要的MySql

时间:2013-05-29 14:56:58

标签: php mysql

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

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

2 - >我想在点击该按钮后添加按钮Check Correct Answers,用户可以看到“正确”和&在他的回答下“错了”。

请帮帮我

我的测验代码

    <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&amp;中随机选择的一个问题。比此代码将他的答案存入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个问题后停止的查询施加限制:/

1 个答案:

答案 0 :(得分: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())与他的答案一起存储在DB中。当用户单击检查按钮时,您向DB查询其答案,检查它们并显示结果。

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

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

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