|
|
|
| Доброе время суток.
Помогите начинающему PHP-программисту решить следующую простую задачу.
На странице form.php содержится формуляр, после заполнения которого пользователю предъявляется сгенерированный счет.
В form.php я использую <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method=POST>, так как сообщения о неверно заполненных полях появляются в том же окне.
Если же все поля заполнены верно, то необходимо перейти к generateInvoice.php. Как организовать этот переход? | |
|
|
|
|
|
|
|
для: nytrogen
(14.08.2008 в 17:33)
| | Просто проверяете, если ошибок нет, то:
<?
header("location: generateInvoice.php");
?>
|
| |
|
|
|
|
|
|
|
для: sim5
(14.08.2008 в 17:54)
| | На новую страницу переходит, но значения из формы form.php не передаются.
Переход:
<?php
header("location: answer.php");
?>
|
answer.php:
<?php
echo $_POST['name'];
?>
|
Ничего не выводит. | |
|
|
|
|
|
|
|
для: Nytrogen
(14.08.2008 в 18:17)
| | Значения Вы уже приняли и сохранили на предыдущей странице. | |
|
|
|
|
|
|
|
для: Trianon
(14.08.2008 в 18:30)
| | Эм... стесняюсь спросить, а как тогда их вывести на экран в answer.php? | |
|
|
|
|
|
|
|
для: Nytrogen
(14.08.2008 в 18:37)
| | взять оттуда, куда сохранили, и вывести. | |
|
|
|
|
|
|
|
для: Trianon
(14.08.2008 в 19:05)
| | Я сам ненавижу, когда пристают с глупыми вопросами, но взять оттуда, куда сохранили, и вывести?
Замечу, что я с PHP знаком три дня, поэтому, думаю, Вы меня простите за "спам" :) | |
|
|
|
|
|
|
|
для: Nytrogen
(14.08.2008 в 19:48)
| | >На странице form.php содержится формуляр,
>после заполнения которого пользователю предъявляется сгенерированный счет
Этот счет, что у вас так и будет в воздухе болтаться? Что значит сгенерированный? Что за информация о пользователе: ФИО, адрес, заказ и т.п.? Если это покупка в магазине, то значит информация о пользователе и параметров его заказа вам еще потребуется, следовательно вы ее должны сохранить в базе. Вот по переходу на страницу генерации, получайте эти данные о пользователе, его заказе т.п. из базы и герерируйте свой счет. | |
|
|
|
|
|
|
|
для: sim5
(14.08.2008 в 19:59)
| | Понятно, спасибо, просто в моем представлении я вижу это примерно так:
1) Пользователь заполняет форму (имя, фамилия и пр.) в form.php и нажимает на кнопку Submit.
2) Форма проверяется. Если есть ошибки, то снова переходим к form.php, где вылезают красные буквы "Ошибка ввода".
Если ошибок нет, переходим к generateInvoice.php вместе со всеми значениями (именем, фамилией и пр.) и выводим каким-то образом эти значения в браузер (что я и называл "генерация счета").
Насколько я понял, должно быть вот так:
1) Пользователь заполняет форму в generateInvoice.php и нажимает на кнопку Submit.
2) Форма проверяется. Если есть ошибки, то снова переходим к generateInvoice.php, где теперь написано "Ошибка ввода".
Если ошибок нет, то вместо формы появляется другой HTML+PHP код, который мне необходим (счет).
Но все же, если я хочу разместить заполняемую форму в маленький div на главной странице и при этом, что бы сообщения об ошибках ввода появлялись там же, над формой, то при верном вводе, мне придется генерить новый HTML-код всей страницы? | |
|
|
|
|
|
|
|
для: Nytrogen
(14.08.2008 в 20:19)
| | Вы что хотите сделать - динамический вывод результата ввода пользователем, или просто показать результат ввода данных? Переход позволит избежать повторного отправления формы по F5 в браузере, и если пользователь ввел данные верно, зачем ему форма еще? | |
|
|
|
|
|
|
|
для: sim5
(14.08.2008 в 20:44)
| | Я могу просто задать action=generateInvoice.php, но если пользователь что-то неверно ввёл? | |
|
|
|
|
|
|
|
для: Nytrogen
(14.08.2008 в 20:49)
| | Вы бы лучше, для начала, приоткрыли завесу "секретности" и сказали, что вы хотите сделать, что это такое будет? Заказ товара?
Можно вообще не переходить на другую страницу, все сделать на одной, и переход делать внутри самой страницы, после удачного заполнения формы, и только ради того, чтобы сбросить POST данные. | |
|
|
|
|
|
|
|
для: sim5
(14.08.2008 в 21:00)
| | Докладываю секретную информацию. На примитивном уровне задача выглядит так:
Введи имя. Ввёл неверно? Ты ввёл неверно! Введи имя. Ввёл неверно? Ты ввёл неверно! Введи имя. Ввёл верно? Ура! Вот твоё имя на весь экран!
Я просто хочу, чтобы "имя на весь экран" было в новом окне, а скрипт сам определял, куда ему сунуться: выдать сообщения об ошибке ввода в окно с формой или с триумфом открыть новое. | |
|
|
|
|
|
|
|
для: Nytrogen
(14.08.2008 в 21:08)
| |
<?php
session_start();
if ($_POST['sent']) {
//.....
} else {
$_SESSION['name'] = $_POST['name'];
$_SESSION['surname'] = $_POST['surname'];
header("location: answer.php");
}
?>
|
Файл answer.php:
<?php
session_start();
echo $_SESSION['name'] ." ". $_SESSION['surname'] . ", бальшой приветик!";
?>
|
| |
|
|
|
|
|
|
|
для: sim5
(14.08.2008 в 21:17)
| | УРА!!! СПАСИБО!!! | |
|
|
|
|
|
|
|
для: Nytrogen
(14.08.2008 в 19:48)
| |
<?php
header("location: answer.php");
?>
|
В этом файле у Вас же что-то было кроме перехода? | |
|
|
|
|
|
|
|
для: Trianon
(14.08.2008 в 20:06)
| | Конечно, в этом файле описана вся моя форма:
<?php
if ($_POST['sent']) {
$isError = false;
if (!$_POST['name']) {
$isError = true;
echo "Введите имя!<br>";
}
if (!$_POST['surname']) {
$isError = true;
echo "Введите фамилию!<br>";
}
//...
if ($isError) {
unset($_POST['sent']);
echo "<br>";
}
}
if (!$_POST['sent']) {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method=POST>
<input type=hidden name=sent value=1>
<table>
<tr>
<td>Введите имя:</td>
<td><input type=text name="name" value="<?php echo $_POST['name']; ?>"></td>
</tr>
<tr>
<td>Введите фамилию:</td>
<td><input type=text name="surname" value="<?php echo $_POST['surname']; ?>"></td>
</tr>
<!--...-->
<tr>
<td colspan=2 align=center><input type=submit value="Отправить"><input type=reset
value="Сброс"></td>
</tr>
</table>
</form>
<?php
} else {
header("location: answer.php");
}
?>
|
| |
|
|
|
|
|
|
|
для: Nytrogen
(14.08.2008 в 20:27)
| |
<?
....
} else {
//пишем данные формы в базу
//или, если это несколько полей
//необъемных данных,
//то можно в сессию
header("location: answer.php");
//а в файле answer.php
//получаем эти данные и ...
}
?>
|
| |
|
|
|
|
|
|
|
для: sim5
(14.08.2008 в 20:40)
| | Я знаю, что всех замучал, но все же расскажите поподробней о записе в сессию или базу. Чувствую, это как раз то, что мне и нужно. | |
|
|
|
|
|
|
|
для: Nytrogen
(14.08.2008 в 20:56)
| | Переход на новую страницу здесь совсем не при чем.
Тему отдельную создайте.
И сформулируйте, что хотите узнать. | |
|
|
|
|
|
|
|
для: Nytrogen
(14.08.2008 в 20:27)
| | Вот перед вызовом header() введенные и проверенные данные Вы должны были сохранить где-то на сервере. | |
|
|
|