如何在 php 中每次单击按钮时逐一显示数据库中的项目
How to display items from database one by one each time a button is clicked in php
嗯,我有一个页面,我想在其中一个一个地显示存储在数据库中的项目。一个接一个地点击一个按钮,下一个项目就会出现。
(项目是顺便提一下我的问题)。
所以我为此编写了代码。我遇到的问题是循环只工作一次。我的意思是,当单击下一个按钮时,我将显示下一个项目,但随后我再次单击“下一步”,但没有任何反应。这是代码..
<?php
$qno=1;
require_once('connect.php');
if(isset($_POST['next'])){
$qno+=1;
}
$q="select * from `uquestion` where `qno`='$qno' and
`uname`='{$_SESSION['user']}'";
$result=mysqli_query($con,$q);
if ($result) {
while($row=mysqli_fetch_array($result)){
$qno = $row['qno'];
$question = $row['question'];
$op1 = $row['op1'];
$op2 = $row['op2'];
$op3 = $row['op3'];
$op4 = $row['op4'];
$answer = $row['answer'];
}
}
?>
<form name="exam" method="post" action="exam.php">
<!--My Current page name is "exam.php" -->
<?php echo $question ?> <br>
<input type="radio" name="question1" value="op1"> <?php echo $op1; ?> <br>
<input type="radio" name="question1" value="op2"> <?php echo $op2; ?> <br>
<input type="radio" name="question1" value="op1"> <?php echo $op3; ?> <br>
<input type="radio" name="question1" value="op1"> <?php echo $op4; ?> <br>
<input type="submit" name="previous" value="Previous">
<input type="submit" name="next" value="Next">
</form>
您的问题是每次 运行 exam.php 页面时,您都将 $qno
设置为 1。
因此,您第一次 运行 您的代码时,$qno
将为 1,因为 $_POST['next']
未设置 ,将显示问题编号 1。当你点击下一步时,再次 $qno
将再次变为 1 这次因为 $_POST['next']
是 set,问题编号 2将被显示。从现在开始,您将只会看到 问题编号 2。
因此,您的解决方案之一是将问题编号存储在会话变量中。你的代码将是这样的:
<?php
session_start();
require_once('connect.php');
if(!isset($_SESSION['qno']))
$_SESSION['qno'] = 1;
else{
if(isset($_POST['next'])){
$_SESSION['qno'] += 1;
}
}
$q="select * from `uquestion` where `qno`='".$_SESSION['qno']."' and `uname`='{$_SESSION['user']}'";
?>
嗯,我有一个页面,我想在其中一个一个地显示存储在数据库中的项目。一个接一个地点击一个按钮,下一个项目就会出现。 (项目是顺便提一下我的问题)。
所以我为此编写了代码。我遇到的问题是循环只工作一次。我的意思是,当单击下一个按钮时,我将显示下一个项目,但随后我再次单击“下一步”,但没有任何反应。这是代码..
<?php
$qno=1;
require_once('connect.php');
if(isset($_POST['next'])){
$qno+=1;
}
$q="select * from `uquestion` where `qno`='$qno' and
`uname`='{$_SESSION['user']}'";
$result=mysqli_query($con,$q);
if ($result) {
while($row=mysqli_fetch_array($result)){
$qno = $row['qno'];
$question = $row['question'];
$op1 = $row['op1'];
$op2 = $row['op2'];
$op3 = $row['op3'];
$op4 = $row['op4'];
$answer = $row['answer'];
}
}
?>
<form name="exam" method="post" action="exam.php">
<!--My Current page name is "exam.php" -->
<?php echo $question ?> <br>
<input type="radio" name="question1" value="op1"> <?php echo $op1; ?> <br>
<input type="radio" name="question1" value="op2"> <?php echo $op2; ?> <br>
<input type="radio" name="question1" value="op1"> <?php echo $op3; ?> <br>
<input type="radio" name="question1" value="op1"> <?php echo $op4; ?> <br>
<input type="submit" name="previous" value="Previous">
<input type="submit" name="next" value="Next">
</form>
您的问题是每次 运行 exam.php 页面时,您都将 $qno
设置为 1。
因此,您第一次 运行 您的代码时,$qno
将为 1,因为 $_POST['next']
未设置 ,将显示问题编号 1。当你点击下一步时,再次 $qno
将再次变为 1 这次因为 $_POST['next']
是 set,问题编号 2将被显示。从现在开始,您将只会看到 问题编号 2。
因此,您的解决方案之一是将问题编号存储在会话变量中。你的代码将是这样的:
<?php
session_start();
require_once('connect.php');
if(!isset($_SESSION['qno']))
$_SESSION['qno'] = 1;
else{
if(isset($_POST['next'])){
$_SESSION['qno'] += 1;
}
}
$q="select * from `uquestion` where `qno`='".$_SESSION['qno']."' and `uname`='{$_SESSION['user']}'";
?>