Создаю тест на php

148
28 декабря 2019, 16:40

Нужно сделать так чтобы вопросы появлялись по очереди после того как пользователь ответит

index.php

<?php
session_start();
$questions = [
    [ 
      'question' => 'Question 1',
      'answers' => [ '1' , '2' , '3','4', '5'],
      'valid' => 0
    ],
    [
      'question' => 'Question 2',
      'answers' => [ '1' , '2' , '3','4', '5'],
      'valid' => 1
    ],
    [ 
      'question' => 'Question 3',
      'answers' => [ '1' , '2' , '3','4', '5'],
      'valid' => 2
    ],
    [ 
      'question' => 'Question 4',
      'answers' => [ '1' , '2' , '3','4', '5'],
      'valid' => 3
    ],
    [ 
      'question' => 'Question 5',
      'answers' => [ '1' , '2' , '3','4', '5'],
      'valid' => 4
    ],
];

?>
<form action="/rec.php" method="post">
  <?php 
    echo $questions['0']['question'];
  ?>
  <input type="text" name="answer">
  <input type="submit" name="submit" value="Дальше">
</form>

rec.php

<?php

if($_POST['answer']==$questions[0]['valid']){
     echo 'Правильно сделал';
}
print_r($_SESSION['test']);
#print_r($_POST);
echo $_POST['answer'];
?>

rec.php выдает такие ошибки

( ! ) Notice: Undefined variable: questions in /home/aldoniq/CodeGuru/test.com/rec.php on line 3

( ! ) Notice: Undefined variable: _SESSION in /home/aldoniq/CodeGuru/test.com/rec.php on line 6

Важно: я не прошу сделать за меня. Опишите пожалуйста что можно сделать, что прочитать чтобы решить это. сижу уже неделю Все что я сделал за неделю я скинул сверху

Answer 1

Вот как я создал тест

Исправьте в комментариях если думаете что можно сделать лучше. Кажется сделал костыльно

Файл index.php

session_start();
$questions = [
    [ 
      'question' => 'Question 1',
      'answers' => [ '1' , '2' , '3','4', '5'],
      'valid' => 0
    ],
    [
      'question' => 'Question 2',
      'answers' => [ '1' , '2' , '3','4', '5'],
      'valid' => 1
    ],
    [ 
      'question' => 'Question 3',
      'answers' => [ '1' , '2' , '3','4', '5'],
      'valid' => 2
    ],
    [ 
      'question' => 'Question 4',
      'answers' => [ '1' , '2' , '3','4', '5'],
      'valid' => 3
    ],
    [ 
      'question' => 'Question 5',
      'answers' => [ '1' , '2' , '3','4', '5'],
      'valid' => 4
    ],
];
$_SESSION['questions'] = $questions;
if(!isset($_SESSION['test'])){
  $test = [
    'current' => '0',
    'answer' => []
  ];
} else {
  $test= $_SESSION['test'];
}

$_SESSION['test'] = $test;
if($_SESSION['test']['current']=='5'){
  echo 'Вы закончили тест';
  // unset cookies
  if (isset($_SERVER['HTTP_COOKIE'])) {
    $cookies = explode(';', $_SERVER['HTTP_COOKIE']);
    foreach($cookies as $cookie) {
        $parts = explode('=', $cookie);
        $name = trim($parts[0]);
        setcookie($name, '', time()-1000);
        setcookie($name, '', time()-1000, '/');
  }
}
  die;
}
?>
<form action="/rec.php" method="post">
  <?php 
    echo $questions[$test['current']]['question'];
  ?>
  <input type="text" name="answer">
  <input type="submit" name="submit" value="Дальше">
</form>

Файл обработчик rec.php

<?php
session_start();
if($_POST['answer']==$_SESSION['questions'][$_SESSION['test']['current']]['valid']){
     $_SESSION['test']['answer'] = $_POST['answer'];
     $_SESSION['test']['current']++;
}
print_r($_SESSION['test']);
#print_r($_POST);
header ('Location: /');
?>
READ ALSO
Как можно убрать этот лимит

Как можно убрать этот лимит

Есть таблица и в нем запись длинной 1886209Когда достаю эту записть то получаю строку длиной 1048576

162
Задать переменную php js

Задать переменную php js

Подскажите пожалуйста есть переменная js взятая из inputКак это значение поместить в переменную php?

143
Vue JS Вывод таблицы из БД

Vue JS Вывод таблицы из БД

Нужно вывести таблицу из БД, полученную с помощью AXIOS

156