Как сохранять ответы в опроснике с пагинацией?
Как сохранять данные формы при нажатии на кнопку вперед, которая переводит тебя к следующему вопросу и так далее пока не закончатся вопросы?
Пытался сохранять промежуточный результат в сессии, но там сохраняется только лишь последний.
Вывод массива $_SESSION:
Если ответить на 2 вопроса:
Array ( [name] => Nikita [2] => Array ( [question_id-2] => 3 [answer-2] => 1 ) )
Если ответить только на первый:
Array ( [name] => Nikita [0] => Array ( [question_id-0] => 1 [answer-0] => 1 ) )
public function calculateResult (int $theme_id, int $page_id)
{
if($page_id < $_POST['last_element'])
{
$_SESSION[$page_id]['question_id-'.$page_id] = $_POST['question_id'];
$_SESSION[$page_id]['answer-'.$page_id] = $_POST['answer'];
if(isset($_POST['next']))
{
$next_page = $page_id+1;
header("Location: http://cisco/questions/".$theme_id."?id=".$next_page);
}
elseif(isset($_POST['back']))
{
$next_page = $page_id-1;
header("Location: http://cisco/questions/".$theme_id."?id=".$next_page);
}
elseif(isset($_POST['send']))
{
print_r($_SESSION);
}
}
else
{
print_r($_SESSION);
#print_r($question_id);
}
}
}
Полный репозиторий - https://github.com/RecentForce99/survey/tree/main Примерно такая верстка:
<div class="wrapper">
<div class="question-block">
<input type="hidden" value="<?=count($array)-1?>" name="last_element">
<input type="hidden" value="<?=$array[$i]['id']?>" name="question_id">
<h2>Вопрос</h2>
</div>
<div class="answer-block d-flex flex-column d-flex">
<div>
<input type="radio" id="answer-<?=$val['id']?>" required value="1" name="answer">
<label for="answer-<?=$val['id']?>">Ответ №1</label>
</div>
<div>
<input type="radio" id="answer-<?=$val['id']?>" required value="1" name="answer">
<label for="answer-<?=$val['id']?>">Ответ №2</label>
</div>
<div>
<input type="radio" id="answer-<?=$val['id']?>" required value="1" name="answer">
<label for="answer-<?=$val['id']?>">Ответ №3</label>
</div>
<div>
<input type="radio" id="answer-<?=$val['id']?>" required value="1" name="answer">
<label for="answer-<?=$val['id']?>">Ответ №4</label>
</div>
</div>
<div class="buttons d-flex justify-content-center align-items-baseline">
<input type="submit" value="Назад" name="back">
<input type="submit" value="Далее" name="next">
<div class="pagination">
<a class="pagination-number" href="http://cisco/questions/1?id=<?=$i?>">1</a>
<a class="pagination-number" href="http://cisco/questions/1?id=<?=$i?>">2</a>
<a class="pagination-number" href="http://cisco/questions/1?id=<?=$i?>">3</a>
<a class="pagination-number" href="http://cisco/questions/1?id=<?=$i?>">4</a>
<a class="pagination-number" href="http://cisco/questions/1?id=<?=$i?>">5</a>
</div>
<input type="submit" value="Отправить" name="send">
</div>
</div>