Ваш PHP, генерирующий таблицу, должен быть на результирующей странице, а не на странице формы. Или же вы можете указать action
формы на ту же страницу, чтобы получить результаты, отправленные и обработанные o n на той же странице.
EDIT: Что я имею в виду следующее: PHP - как вы знаете - обрабатывается стороне сервера. Это означает, что ваш браузер отправляет запрос на сервер, сервер обрабатывает файл PHP, а затем он обслуживает клиентскую версию.
Проблема в вашем коде заключается в том, что у вас есть PHP-скрипт, обрабатывающий $_POST
на странице, в которой пользователь должен заполнить форму. Когда пользователь заполняет форму и нажимает submit, он будет перенаправлен на страницу action
, где будет доступно и обработано $_POST
. Ваше недоразумение состоит в том, что вы ожидаете, что $_POST
будет доступен на странице, где он размещен, а затем отправить его автоматически на страницу результатов. Это не то, что происходит, потому что сервер не имеет возможности поймать информацию, отправленную на той же странице, потому что она уже была отправлена ...
... если вы не делаете форму action прямо на той же странице , Затем сервер ловит информацию и обрабатывает ее.
Вы можете решить эти проблемы двумя способами.
Укажите ваш action
на странице результатов, как вы делаете сейчас, но переместили код обработки на открывшейся странице.
Наведите свой номер action
на эту же страницу.
Вы можете захотеть сделать что-то фантазию, как проверить, есть ли $_POST
информации и, если нет, показать форму. Если есть, покажите результат. Это не так сложно реализовать, как следует из:
<?php
if($_POST): ?>
<div id="results table">
<table border='1'>
<thead>
<tr>
<th>
Field
</th>
<th>
Results
</th>
</tr>
</thead>
<tbody>
<?php
foreach ($_POST as $key => $entry)
{
echo "<tr>\n";
echo "<td>" . $key . "</td>";
if (is_array ($entry)) {
$count = count($entry);
echo "<td>";
for ($i=0; $i<$count; $i++){
echo $entry[$i] . "<br />";
}
echo "</td>";
} else
{
echo "<td>$entry</td>";
}
echo "<tr>\n";
}
?>
</tbody>
</table>
</div>
<?php else: ?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label for="fname">First Name:</label>
<input type="text" name="fname" id="fname"/><br/>
<br/>
<label for="lname">Last Name:</label>
<input type="text" name="lname" id="lname"/><br/>
<br/>
<p><input type="submit" value="Submit"/></p>
</form>
<?php endif; ?>
Я сделал для вас рабочий пример. Просто перейдите по ссылке и нажмите на Run [F9] кнопку сверху, чтобы увидеть его в действии:
Working example
Hello- Я не понимая вас. Вы говорите, что я должен поместить таблицу на страницу формы заказа вместо страницы формы результатов? Я пробовал это раньше, и после того, как я нажал кнопку отправки, я получил белую страницу! – user2155045
Я обновил свой ответ, чтобы лучше объяснить вашу проблему и непонимание. Я также предоставил рабочий пример внизу для проверки страницы. – Sunyatasattva
Спасибо, sunyatasattva! – user2155045