php轮询循环查询

时间:2010-01-19 20:21:50

标签: php

我想分步进行多问题调查。 我希望问题依次显示在一起,问题应该从数据库中提取。

我成功从数据库中提取了一个问题。但我想让它发挥作用的方式是,当用户点击提交一个问题时,它应该将用户带到下一个问题。

$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>';

有人可以帮我解决这种查询的循环和构造吗?

我不想为这些问题制作单独的页面。

3 个答案:

答案 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():
    })
)}