我想分步进行多问题调查。 我希望问题依次显示在一起,问题应该从数据库中提取。
我成功从数据库中提取了一个问题。但我想让它发挥作用的方式是,当用户点击提交一个问题时,它应该将用户带到下一个问题。
$query = "SELECT qid, qtitle FROM questions where qid = $qid";
$result = mysql_query($query) or die("ERROR: $query.".mysql_error());
// if records are present
if (mysql_num_rows($result) > 0) {
$row = mysql_fetch_object($result);
// get question ID and title
$qid = $row->qid;
echo '<div id=ques>';
echo '<h2>'.$row->qtitle .'</h2>';
echo '</div>';
有人可以帮我解决这种查询的循环和构造吗?
我不想为这些问题制作单独的页面。
答案 0 :(得分:1)
您可以将问题编号存储在论坛的隐藏字段中。
if (isset($_POST["qnum"])) {
$questionNum = (integer) $_POST["qnum"];
} else {
$questionNum = 0;
}
$query = "SELECT qid, qtitle FROM questions where qid = $qid";
$result = mysql_query($query) or die("ERROR: $query.".mysql_error());
// if records are present
if (mysql_num_rows($result) > $questionNum) {
for ($_i = 0; $_i < $questionNum; $_i += 1)
$row = mysql_fetch_object($result);
// get question ID and title
$qid = $row->qid;
echo '<input type="hidden" value="$qnum" />';
echo '<div id=ques>';
echo '<h2>'.$row->qtitle .'</h2>';
echo '</div>';
}
假设您使用的是HTML表单。如果没有,您可以将它们存储在$ _SESSION变量中。
答案 1 :(得分:0)
我接近这个问题的方法是将下一个问题ID作为隐藏字段发布到您的表单上(我假设您有一个表单供用户输入他们的答案?)。
第一次加载页面时,你不会有问题ID,所以你只需抓住第一个。然后在同一页面中,您将编写一个查询以获取下一个问题ID。你把它放在隐藏的领域:
<input type="hidden" name="questionID" value="<?php echo $nextID ?>">
重新提交页面时,您有一个$ _POST ['questionID']; 您可以用来生成下一个问题的变量。
答案 2 :(得分:0)
可能最简单的方法,因为你提到你不想使用多个页面,就是列出你页面上的所有问题,但是除了第一个之外都隐藏了所有问题。然后,当用户点击“下一步”时,它会隐藏第一个并显示第二个,依此类推。
$query = "SELECT qid, qtitle FROM questions ORDER BY qid ASC";
$result = mysql_query($query) or die("Error: $query.".mysql_error());
while ($row = mysql_fetch_object($result)) {
echo "<div class='question' id='$row->qid'><h2>$row->qtitle</h2></div>";
}
echo "<button type='button' id='button'>Next</button>";
然后你可以使用jQuery编写这样的代码:
$(function() {
$current_question = 1;
$(".question").each (function () {$(this).hide();})
$("#"+current_question).show();
$("#button").click(function() {
$("#"+current_question).hide();
current_question++;
$("#"+current_question).show():
})
)}