我创建了一个页面(exam.php),我想逐个显示问题。
当学生在提交答案后点击下一步时,我希望它显示下一个问题。
<?php
if(!isset($_SESSION['qno']))
$_SESSION['qno'] = 1;
else{
if(isset($_POST['next']))
{
$_SESSION['qno'] += 1;
}
}
$sql ="select * from question where question_id= ' ".$_SESSION['qno']." ' ";
$query=mysql_query($sql);
while($row = mysql_fetch_assoc($query))
{
$question =$row['question'];
$op1 = $row['option1'];
$op2 = $row['option2'];
$op3 = $row['option3'];
$op4 = $row['option4'];
}
?>
它可以工作,但在这段代码中我使用question_id来显示数据。问题出现之后,当管理员删除一些由于question_id差距而无法正常工作的问题时。
我初始化question_id = 1;那么这个问题的最佳解决方案是什么?
答案 0 :(得分:0)
您可以使用LIMIT选择问题而不是问题ID。
select *
from `question`
ORDER BY `question_id`
LIMIT $SESSION[$q_no],1;
答案 1 :(得分:0)
首先,您必须将每个页面的当前ID传输到下一个页面。你是通过$_SESSION["qno"]
完成的。
现在您必须更改查询并运行此程序:
$sql ="select top 1 * from question where question_id>{$_SESSION['qno']} order by question_id";
$query=mysql_query($sql);
while($row = mysql_fetch_assoc($query))
{
$_SESSION['qno']=$row["question_id"];
$question =$row['question'];
$op1 = $row['option1'];
$op2 = $row['option2'];
$op3 = $row['option3'];
$op4 = $row['option4'];
}