您好,我正在开发一个基于在线测验的应用程序,但是在接受测试时却遇到了一个问题。我正在不同的表中插入问题和多项选择,效果很好。对于删除和删除也可以正常工作。考试时出现的问题。
例如,如果我添加了问题并从中途删除了一个问题,那么在参加考试时我们不会得到下一个问题。这是我的表格。
Questions Database Table:
question_number question_no text status
1 1 html 1
2 2 php 1
3 2 html 0
4 3 html 1
选择数据库表:
id question_number is_correct text status
1 1 1 abc 1
2 1 0 abc 1
3 1 0 abc 1
4 1 0 abc 1
5 2 0 abcdfd 1
6 2 1 abcdsf 1
7 2 0 abcdsf 1
8 2 0 abcsdfg 1
9 3 1 abchdfgh 0
10 3 0 abfdhdfc 0
11 3 0 afdhgbc 0
12 3 0 adfhbc 0
13 4 1 abchdfgh 1
14 4 0 abfdhdfc 1
15 4 0 afdhgbc 1
16 4 0 adfhbc 1
这里总共有4个问题,其中3个处于活动状态,一个处于非活动状态,因此我需要显示这些活动问题。但是对我来说,对于第三个问题,它只显示两个问题,显示的内容如下图所示。
这是此代码:
<?php
$query ="SELECT * FROM questions where status='1'";
//Get results
$results = $mysqli->query($query) or die($mysqli->error.__LINE__);
$total = $results->num_rows;
?>
<a href="question.php?n=1" class="start">Start Quiz</a>
Question.php文件:
<?php
$number = (int) $_GET['n'];
$query = "SELECT * FROM `questions` WHERE status='1'";
//Get result
$results = $mysqli->query($query) or die($mysqli->error.__LINE__);
$total = $results->num_rows;
$query = "SELECT * FROM `questions`
WHERE question_number = $number AND status='1'";
//Get result
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$question = $result->fetch_assoc();
$query = "SELECT * FROM `choices`
WHERE question_number = $number AND status='1'";
//Get results
$choices = $mysqli->query($query) or die($mysqli->error.__LINE__);
?>
<div class="current">Question <?php echo $question['question_number']; ?> of <?php echo $total; ?></div>
<p class="question">
<?php echo $question['text']; ?>
</p>
<form method="post" action="process.php">
<ul class="choices">
<?php while($row = $choices->fetch_assoc()): ?>
<li><input name="choice" type="radio" value="<?php echo $row['id']; ?>" /><?php echo $row['text']; ?></li>
<?php endwhile; ?>
</ul>
<input type="submit" value="Submit" />
<input type="hidden" name="number" value="<?php echo $number; ?>" />
</form>
如果我这样给出网址,则显示问题
http://www.example.com/admin/question.php?n=4
然后它显示第四个问题,如果在URL n = 3中则不显示问题。