Я пишу короткую викторину 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']);
}
}
?>
почему вы пишете цикл 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
}
$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
вопрос о том, что вопрос сделан неправильно, и их правильные ответы после завершения теста
0; DROP TABLE choices; --
как число. затем прочитайте о параметризованных запросах. затем используйте их для защиты вашей базы данных.