У меня есть основная форма с большим количеством входов. Действие форм устанавливается в файл php. После отправки php-страницы отображаются все входы, введенные пользователем в форму. Пользователь должен перепроверить все и нажать кнопку "одобрить" ! Проблема в том, что я не знаю, как это сделать...
Я хочу, в конечном итоге, поместить все данные в базу данных MySQL, но только после одобрения, не отправляя форму!
Есть ли способ "вызвать" php script после нажатия кнопки "одобрить" ?
Как это делается? Я имею в виду, я не хочу писать информацию в базу данных MySQL, а затем пользователь сожалеет и НЕ ударяет "одобрить" , а затем данные уже находятся в базе данных.
Спасибо!
Просто дайте мне знать, если вам нужно больше ввода (я обновлю вопрос)
Один из способов добиться этого - переписать все значения, которые были представлены только в форме утверждения в виде скрытых входов html. Вот так:
<form name="approval" method="post>
<input type="hidden" name="firstname" value="<?php echo htmlspecialchars($_REQUEST['firstname']); ?>" />
<input type="hidden" name="lastname" value="<?php echo htmlspecialchars($_REQUEST['lastname']); ?>" />
...
<input type="submit" value="Approve!" />
</form>
Другие предложили сохранить значения в сеансе пользователей. Если вы решите пойти по этому маршруту, будьте осторожны с пользователем, который одновременно работает с несколькими окнами браузера. Их разные формы будут разделять один и тот же сеанс, и в зависимости от того, какой порядок они предпочитают подавать, вы можете получить некоторые перекрестные проводы, если ваш код слишком наивен. Один из способов - создать уникальный ключ для каждой формы и передать ее со страницы на страницу. Это, конечно, становится беспорядочным, поэтому я предпочитаю подход скрытой формы.
Другая ошибка, связанная с подходом к сеансу, - это реализация PHP по умолчанию, использующая локальную файловую систему для хранения данных сеанса. Это ломается, когда у вас избыточные веб-серверы. Разумеется, вы можете поменять начальную сессию по умолчанию на более сложную (на основе memcached). Но опять же, это просто сложнее. Почему бы не избежать сложности и придерживаться скрытых полей формы?
Сначала вы можете сохранить всю информацию в сеансе. Затем сделайте свои расчеты и попросите пользователя утвердить информацию. Напишите их из сеанса в базу данных.
Вы можете сохранить информацию одним из двух способов: используя сеанс или входы скрытой формы.
Использование сеанса В этом случае было бы полезно использовать сеанс. Итак, когда первая форма отправлена, запустите сеанс с пользователем и сохраните все значения в нем. Затем на странице подтверждения просто отображаются данные. Когда пользователь нажимает "одобрить", это заставляет ваш script хранить информацию, которая уже находится в сеансе. Это хорошо известный метод сохранения информации между запросами.
Использование скрытой формы. Когда вы выходите на страницу одобрения, вы также можете записывать скрытые входы формы вместе с отображаемыми данными подтверждения. Добавив новое поле, чтобы указать, что пользователь одобрил эти данные, ваш script будет записывать только в базу данных, когда видит это значение подтверждения.
Не зная гораздо больше о вашем приложении, я бы предпочел использовать сеансы в этом случае.
)
в htmlspecialchars звоните.