我正在设计一个在线测试系列。我希望当用户选择答案时,应该通过存储在数据库中的答案进行验证,并根据正确和错误的选择转到下一个问题。我正在使用php和mysqli。有人能告诉我如何获取用户所选答案的ID并使用正确答案进行验证吗?这是html
<form method="POST" name="try" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">;
<h4> <?php echo $_SESSION["Question"] ?> </h4>
<input type="radio" name="options" value="A" id="A"> <?php echo $_SESSION["OpA"] ?> </input><br>
<input type="radio" name="options" value="B" id="B"> <?php echo $_SESSION["OpB"] ?> </input><br>
<input type="radio" name="options" value="C" id="C"> <?php echo $_SESSION["OpC"] ?> </input><br>
<input type="radio" name="options" value="D" id="D"> <?php echo $_SESSION["OpD"] ?> </input><br>
<input type="radio" name="options" value="E" id="E"> <?php echo $_SESSION["OpE"] ?> </input><br>
<button type="button" class="btn" name="submit" value="submit" >Submit</button>
<?php
$conn = mysqli_connect($servername, $username, $password);
mysqli_select_db( $conn , 'myDB' );
echo "<form method='get' action=" .htmlspecialchars($_SERVER['PHP_SELF']) . ";>";
$sql = "SELECT * FROM QUANT_MEDIUM ORDER BY RAND() LIMIT 1";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$_SESSION['ans'] = $row['Correct'];
$_SESSION['Question'] = $row['Ques'];
$_SESSION['OpA'] = $row['Option_A'];
$_SESSION['OpB'] = $row['Option_B'];
$_SESSION['OpC'] = $row['Option_C'];
$_SESSION['OpD'] = $row['Option_D'];
$_SESSION['OpE'] = $row['Option_E'];
}
}
?>
<?php
if (isset($_POST['submit']) and ! empty($_POST['submit']))
{
if (isset($_POST['options']))
{
$radio_input = $_POST['options'];
echo $radio_input;
}
}
else
{
echo "wrong";
}
?>
答案 0 :(得分:0)
在查看可能的解决方案之前,您必须确定要完成检查的位置。你标记了问题&#34; jquery&#34;所以我猜你对客户端选项以及服务器端选项感兴趣。
客户端 如果要根据实现方式对客户端进行检查,则用户可以通过检查代码来查看正确的答案。如果这没有问题,您可以通过在客户端进行检查来获得最快的用户体验。
最简单的选择,但很容易&#34; hack&#34;将是为radiobutton添加一个额外的属性。像&#34;纠正&#34;或者。单击提交按钮时,您可以使用jquery检查所选单选按钮是否具有&#34;正确&#34;属性并使用该信息执行您想要的任何操作。
您也可以让前端对服务器进行查询以进行检查。这将更安全,但上述方法是最简单的。
服务器端 如果您希望客户端无法事先得到答案,那么您最好进行检查服务器端。在这里,您可以删除提交按钮上的&#34; onclick&#34;并让表单对服务器进行实际发布,并让服务器检查并显示下一个问题,如果给定的答案是正确的。 为了让服务器知道正在检查哪个问题,您可以添加一个带有问题ID的隐藏字段。
答案 1 :(得分:0)
验证可以使用php在服务器端完成。解决方案是不使用提交按钮,让服务器负责检查提交给服务器的内容。因此,提交按钮可以替换为以下内容:
<input type="submit" name="submit" value="submit" class="btn"></input>
验证可以使用以下代码完成:
<?php
if (isset($_POST['submit']) and ! empty($_POST['submit']))
{
if (isset($_POST['options']))
{
$radio_input = $_POST['options'];
//echo $radio_input;
if($radio_input == $_SESSION['ans'])
echo "correct";
else
echo "incorrect";
}
}
?>