Прерывание $ _POST для предварительного просмотра ввода - PullRequest
1 голос
/ 30 июня 2011

Я настроил базу данных и отправляю в нее данные формы через $ _POST в PHP, а также у меня настроена и работает моя страница, которая извлекает поля из базы данных и отображает их. Я не ракетостроение, которое я знаю.

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

Я создал эту страницу и использовал данные $ _POST для отображения данных из формы (так как они еще не были введены в базу данных), однако мне интересно, как, если пользователь одобрит отправку, я тогда ВСТАВЬТЕ это в базу данных. (Я пытался выполнить запрос INSERT из данных $ _POST при нажатии кнопки отправки, однако, поскольку (я предполагаю) ivew прервал поток между отправкой исходной формы и запросом INSERT, все, что я получаю, это список ошибок для нераспознанных переменные.

Так что у меня есть этот процесс:

form.php / пользователь вводит информацию, используя $ _POST

preview.php / пользователь просматривает информацию, используя $ _POST, и начинается сессия (ниже)

запрос submit.php / MySql выполняется, но возвращает все ошибки для неопределенных индексов

Это мой стартовый код сессии:

session_start();
if (isset($_POST['preview'])) { 
    $_SESSION['company_name'] = $_POST['company_name'];
    etc etc - remaining form field names
} 

Ответы [ 3 ]

1 голос
/ 30 июня 2011

Данные POST автоматически не передаются на другие страницы. Сохраните отправленные данные в сеансе и прочитайте их оттуда после страницы подтверждения или вставьте все эти данные обратно на страницу, используя элементы <input type="hidden">, чтобы их можно было повторно отправить как POST.

Очень простая иллюстрация процесса с использованием сессий:

form.php

<form action="confirm.php" ...>
    ...
</form>

confirm.php

<?php
session_start();
$_SESSION['data'] = $_POST;
?>

Please confirm:

Name: <?php echo htmlspecialchars($_POST['name']); ?>
...

<a href="save.php">Confirm</a>

save.php

<?php
session_start();
$data = $_SESSION['data'];

// save $data to database
0 голосов
/ 30 июня 2011

Если я не понимаю, что вы говорите / делаете, я бы сделал что-то вроде этого:

Когда пользователь нажимает кнопку "Сохранить" (или что-то еще), перехватывает это событие клика и используетданные формы, чтобы сделать бизнес предварительного просмотра.Когда они нажимают «подтвердить», отправьте данные на сервер и сохраните их в базе данных.

Опять же, я не уверен на 100%, сработает ли это, но, возможно, это место для начала.

Удачи!

0 голосов
/ 30 июня 2011

Вы должны сделать это с 3 режимами

  • Дисплей
  • Проверьте
  • Вставить

Самый быстрый и простой способ - просто получить параметр GET или скрытое поле, в котором указано последнее состояние формы. Когда вы в первый раз отображаете его, он установлен на DISPLAY. Форма отправляет, ваш скрипт смотрит на поле, знает, что после DISPLAY приходит VERIFY, и представляет страницу проверки. Пользователь отправляет, скрипт просматривает поле, знает, что после проверки вы вставляете в базу данных и выполняете соответствующий запрос.

Не уверен, как вы это делали раньше, но я предполагаю, что вы перенаправляли или просто нажимали на ссылку пользователя, которая потеряла все данные $ _POST

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...