Есть ли способ вернуть обратно вопрос и ответ из базы данных, не выполненный правильно в тесте пользователем?

0

Я пишу короткую викторину php викторины. Если вопрос задан неправильно, я хочу, чтобы код мог вернуть номер вопроса и предполагаемый ответ, а для правильного вопроса я хочу увеличить оценку

Пока что кодирование работает, но когда я попытался добавить номер неправильного вопроса и его правильный ответ в массив $ неправильный_ответ, я получил стек и не могу разобраться

<?php include 'database.php'; ?>
<?php session_start(); ?>
<?php 

      //Check to see if score is set_error_handler
    if (!isset($_SESSION['score'])){
       $_SESSION['score'] = 0;
    }


//Check if form was submitted
if($_POST){

    $number = $_POST['number'];
    $selected_choice = $_POST['choice'];
    $next=$number+1;
    $wrong_answer = array();
    $lesson = (int) $_GET['l']; 

    //Get total number of questions
    $query = "select * from questions where lesson_number = $lesson";
    $results = $mysqli->query($query) or die($mysqli->error.__LINE__);
    $total=$results->num_rows;

    //Get correct choice
    $q = "select * from 'choices' where question_number = $number and is_correct=1";
    $result = $mysqli->query($q) or die($mysqli->error.__LINE__);
    $row = $result->fetch_assoc();
    $correct_choice=$row['id'];



    //compare answer with result
    if($correct_choice == $selected_choice){
        $_SESSION['score']++;
    }else {
        foreach($number and $correct_choice){
            $wrong_answer [] = $number, $correct_choice;
        }
    }

    if($number == $total){
        header("Location: final.php");
        exit();
    } else {
            header("Location: B.php?n=".$next."&l=$lesson&score=".$_SESSION['score']);
    }
}
?>
  • 0
    в чем ошибка?
  • 0
    представьте, что какой-то злой человек отправляет 0; DROP TABLE choices; -- как число. затем прочитайте о параметризованных запросах. затем используйте их для защиты вашей базы данных.
Показать ещё 6 комментариев
Теги:

1 ответ

0

почему вы пишете цикл foreach, когда переменная не является массивом? ты хотел сделать

if($correct_choice == $selected_choice){
    $_SESSION['score']++;
}else {
     $wrong_answer=[$number,$correct_choice];
}

или же

if($correct_choice == $selected_choice){
    $_SESSION['score']++;
}else {
     array_push($wrong_answer,[$number, $correct_choice]);//for 2d array
}
  • 0
    я хочу запускать код до тех пор, пока не будет достигнуто общее количество вопросов, $query = "select * from questions where lesson_number = $lesson"; $results = $mysqli->query($query) or die($mysqli->error.__LINE__); $total=$results->num_rows; конечные $query = "select * from questions where lesson_number = $lesson"; $results = $mysqli->query($query) or die($mysqli->error.__LINE__); $total=$results->num_rows; затем сохраните номера идентификатора вопроса как $number и идентификаторы их правильного выбора как $correct_choice , затем у меня появится еще одна страница, на которой я $correct_choice вопрос о том, что вопрос сделан неправильно, и их правильные ответы после завершения теста

Ещё вопросы

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