получить значение базы данных по нажатию кнопки один за другим

0

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

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

<?php
session_start();
$connection = mysqli_connect("localhost", "root", "", "oes_db");
$_SESSION['qno'] = 0;
if (!isset($_SESSION['qno']))
    $_SESSION['qno'] = 1;
else {
    if (isset($_POST['next'])) {
        $_SESSION['qno'] += 1;
    }
}
$select = "select * from oes_question where que_id='" . $_SESSION['qno'] . "'";
$result = mysqli_query($connection, $select);

if ($result) {
    while ($row = mysqli_fetch_array($result)) {
        $qno = $row['que_id'];
        $question = $row['que_desc'];
        $op1 = $row['ans1'];
        $op2 = $row['ans2'];
        $op3 = $row['ans3'];
        $op4 = $row['ans4'];
        $answer = $row['true_ans'];
    }
}
?>
<html>
    <body>
        <form name="exam" method="post" action="que.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>
    </body>
</html>
Теги:
database

2 ответа

0

Проблема заключается в вашей третьей строке, всегда, когда вы отправляете форму, ваша сессия является settees в 0 и когда вы суммируете + = 1, всегда ставьте 1.

Пытаться

session_start();
$connection = mysqli_connect("localhost", "root", "", "oes_db");
if (!isset($_SESSION['qno']))
    $_SESSION['qno'] = 1; //or 0 if your item start at 0
else {
    if (isset($_POST['next'])) {
        $_SESSION['qno'] += 1;
    }
}
0

Вы переопределяете $_SESSION['qno'] при каждом вызове страницы с 0 в строке 3. Прежде всего, это делает набор переменных, что означает !isset($_SESSION['qno']) всегда будет равным false. Поэтому вы всегда заходите в else и добавляете 1 к 0, когда у вас $_POST['next'], что означает каждый раз, кроме первого вызова.

if (!isset($_SESSION['qno'])) {
    // first call (no session exists): get first question
    $_SESSION['qno'] = 1;
} else if (isset($_POST['next'])) {
    // click on next button: increase question ID by 1
    $_SESSION['qno']++;
}
// neither first init nor next button: page load with existing session

Ещё вопросы

Сообщество Overcoder
Наверх
Меню