запрос цикла php poll - PullRequest
       1

запрос цикла php poll

1 голос
/ 19 января 2010

Я хочу сделать многоэтапный опрос. Я хочу, чтобы вопросы отображались один за другим в последовательности, и вопросы должны быть извлечены из БД.

Я успешно получаю один вопрос из БД. но я хочу, чтобы он работал, когда пользователь нажимает «Отправить» для одного вопроса, и пользователь должен перейти к следующему вопросу.

$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 ]

1 голос
/ 19 января 2010

Вы можете сохранить номер вопроса в скрытом поле на форуме.

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.

0 голосов
/ 19 января 2010

Вероятно, самый простой способ сделать это, поскольку вы упомянули, что не хотите использовать несколько страниц, - это перечислить все вопросы на своей странице, но скрыть все, кроме первой.Затем, когда пользователь нажимает «следующий», он скрывает первое и показывает второе и т. Д.

$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():
    })
)}
0 голосов
/ 19 января 2010

Способ, которым я подхожу к этому, заключается в том, чтобы разместить следующий идентификатор вопроса в виде скрытого поля в вашей форме (я предполагаю, что у вас есть форма для ввода пользователем своего ответа?)

При первой загрузке страницы у вас не будет идентификатора вопроса, поэтому вы просто получите первый.Затем на той же странице вы напишите запрос, чтобы получить следующий идентификатор вопроса.Вы бы поместили это в скрытое поле:

<input type="hidden" name="questionID" value="<?php echo $nextID ?>">

Когда страница отправляется повторно, у вас есть $ _POST ['questionID'];переменная, которую вы можете использовать для создания следующего вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...