В настоящее время я создаю веб-приложение, в котором есть один раздел, в котором пользователь видит диаграмму (которая была извлечена из базы данных диаграмм) и получает ответ на несколько вопросов. После того, как пользователь отправил свой вклад, я бы хотел отобразить его / ее ответы плюс предлагаемые ответы на той же странице.
Я уже собрал большую часть функциональных возможностей, но не уверен, какой метод лучший можно использовать для отображения ответов пользователей и предлагаемых ответов на одной странице. Прямо сейчас (показано ниже) я использую большой оператор if, который проверяет, была ли отправлена форма, и если да, показывает ответы последнего отправленного пользователя и предложенные ответы. Если форма не была отправлена, отображается диаграмма.
Проблема в том, что после отправки формы (остальная часть инструкции) пользователь все равно должен увидеть диаграмму. Я думаю, что я мог бы заново отобразить диаграмму, сохранив идентификатор в $ _SESSION и снова вытянуть его в операторе else, но это кажется неуклюжим. Может ли кто-нибудь порекомендовать, каков наилучший способ сделать это (я открыт для использования jquery или ajax, хотя мне придется научиться работать с ними)?
if(!isset($_POST['submit']))
{
// some code to determine which chart to pull
if(mysql_num_rows($query))
{
while($result = mysql_fetch_array($query))
{
$dir = "images/"; // set directory variable
// open the directory
if($opendir = opendir($dir))
{
// display the chart to the user
}
}
// update db table to note that user has seen this problem
?>
<!-- ask for insights -->
<form action="charts.php" method="POST">
<input type="text" name="insight[]" placeholder="insight goes here!" />
<input type="text" name="insight[]" placeholder="more goes here!" />
<input type="text" name="insight[]" placeholder="don't give up yet" />
<input type="submit" name="submit" value="Submit data" />
</form>
<?php
}
else // throw an error if all questions have been done!
{
bringBacktogo($id, $p_type, $count);
}
}
else
{
// some code to show suggested chart insights
// some code to pull user answers from form above and show them
}