|
|
|
| В общем проблема у меня с пониманием скриптов. Сначала вообще не мог понять,куда и как их устанавливать. Сейчас вроде разобрался. Приведу небольшой пример из скрипта, взятый из уроков на этом сайте. Объединил их в одно целое сам ,наверное не правильно?
if (!empty($_POST['pol'])) echo $_POST ['pol']; // Если выбран хоть 1 элемент
else echo "Выберите значение";
if (!empty($_POST['Yes'])) echo $_POST ['Yes']; // Если выбран хоть 1 элемент
else echo "Выберите значение";
При просмотре "отправленной формы" написано так:
Ваш пол "Мужской"Выбрано значение "2".
Мне нужно сделать так,чтобы строчки были отдельно
Ваш пол "Мужской"
Выбрано значение "2".
Что нужно изменить в коде?
Также не пойму,как сделать так, чтобы при отправке данных со страницы формы, они приходили на какую нибудб специально созданную мной страничку, а то получается, что при нажатии кнопки "отправить" просто открывается новое окно с обработанными данными, но сама форма никуда не передаётся. Как я буду тогда узнавать результаты опроса?
Если Вас не затруднит, подскажите ещё куда правильно установить проверку ввода данных (между какими строками в коде), постоянно выдаёт ошибку. Получается не туда вставляю код проверки.
Работаю в денвере,страницы пока не в интернете.
Заранее всем благодарен! | |
|
|
|
|
|
|
|
для: Евгений new
(02.06.2009 в 04:17)
| | По поводу всего кода не скажу, так как не вижу его, а по поводу переноса строк используйте при выводе строки html тег <br />
<?
echo $_POST ['pol']."<br />";
?>
|
| |
|
|
|
|
|
|
|
для: Yuri
(02.06.2009 в 04:31)
| | Большое спасибо! | |
|
|
|
|
|
|
|
для: Евгений new
(02.06.2009 в 04:17)
| | в форме вы указываете обработчик, правильно? вот в нем и проверяйте пост-данные. нужно узнать существует ли переменная, затем не пуста ли она, затем вырезать хтмл и пхп теги, после чего вы имеете безопасные данные. в этом же файле, вам нужно эти данные куда-то записать. и если все прошло успешно, послать пользователя на какую хотите страницу.
разберите синтаксис условий, у вас там ошибка. если задаете if else, то должны присутствовать фигурные скобки | |
|
|
|
|
|
|
|
для: Рома
(02.06.2009 в 10:15)
| | >если задаете if else, то должны присутствовать фигурные скобки
Прям таки всегда обязательно? | |
|
|
|
|
|
|
|
для: sim5
(02.06.2009 в 10:21)
| | а хрен его знает, просто так читается проще. бывает что нужно вставить дополнительную строчку, например, тогда без них никак. | |
|
|
|
|
|
|
|
для: Рома
(02.06.2009 в 10:56)
| | Вот если в условие будут несколько действий, вот тогда и.... В противном случае, это уж как вам нравится, мне например удобно читать и без скобок. | |
|
|
|
|
|
|
|
для: Рома
(02.06.2009 в 10:15)
| | Можете написать для примера код проверки и куда его правильно вставлять?
Вы имеете в виду строку из html страницы
<form action="name.php"> ?
Здесь устанавливать код проверки что-ли? | |
|
|
|
|
|
|
|
для: Евгений new
(02.06.2009 в 04:17)
| | можно сделать так.
обработчик формы и сама форма в одном файле, action формы название файла.
в форме есть кнопка, type='submit', вот в начале файла можно написать
<?php
if(isset($_POST['submit'])){
// выполняешь проверки и обрабатываешь данные
}
else{
// если кнопка не нажата выводишь форму.
}
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(02.06.2009 в 11:35)
| | В форме должна быть кнопка С ИМЕНЕМ submit, типы кнопок не передаются на сервер! | |
|
|
|
|
|
|
|
для: sim5
(02.06.2009 в 11:47)
| | я знаю, а что мешает задать такое же имя как и тип?
написал так для краткости, если бы у пипла возник бы вопрос по этому поводу, ответил бы, попробовал бы объяснить | |
|
|
|
|
|
|
|
для: sim5
(02.06.2009 в 11:47)
| | я знаю, а что мешает задать такое же имя как и тип?
написал так для краткости, если бы у пипла возник бы вопрос по этому поводу, ответил бы, попробовал бы объяснить | |
|
|
|
|
|
|
|
для: Slo_Nik
(02.06.2009 в 11:35)
| | Если я вставляю этот код в файл name.php (обработчик), то значение <?php становится не синим ,а красным. Но всё равно,вставлял этот код в начало (как здесь),затем уже осталоной код. В общем вот весь мой код.
<?php
if(isset($_POST['submit'])){
// выполняешь проверки и обрабатываешь данные
}
else{
// если кнопка не нажата выводишь форму.
}
echo "<p>Фамилия: $fam</p>";
echo "<p>Имя: $name</p>";
echo "<p>Отчество: $ot</p>";
echo "<p>Возраст: $year лет</p>";
echo "<p>Город: $town</p>";
echo "<p>Адрес: $email</p>";
if (!empty($_POST['pol'])) echo $_POST ['pol']."<br />"; // Если выбран хоть 1 элемент
else echo "Выберите значение";
if (!empty($_POST['Yes'])) echo $_POST ['Yes']; // Если выбран хоть 1 элемент
else echo "Выберите значение";
?>
При нажатии на кнопку Submit форма просто отправляется без всяких проверок. Никакие поля я не заполнял, по идее должно появиться сообщение типа "Вы не заполнили поля" или нет? Если нет,то какой смысл такой проверки?
Пробовал также вставлять в код html страницы самой формы этот код
<?php
if(isset($_POST['submit'])){
// выполняешь проверки и обрабатываешь данные
}
else{
// если кнопка не нажата выводишь форму.
}
?>
Также ничего не происходит почему-то. | |
|
|
|
|
|
|
|
для: Евгений new
(02.06.2009 в 13:10)
| | Вы лучше форму свою покажите. | |
|
|
|
|
|
|
|
для: sim5
(02.06.2009 в 13:30)
| | Как просили даю Вам полный код формы html , а под ним код обработчика "name.php".
<form action="name.php" method="post" >
<table width="100%" border="0">
<tr>
<td width="50%">Вашу Фамилию</td>
<td width="50%"><input type="text" name="fam" /></td>
</tr>
<tr>
<td>Ваше Имя</td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td>Ваше отчество</td>
<td><input type="text" name="ot" /></td>
</tr>
<tr>
<td>Сколько Вам лет</td>
<td><input name="year" type="text" width="40" /></td>
</tr>
<tr>
<td>Ваш город проживания</td>
<td><input type="text" name="town" /></td>
</tr>
<tr>
<td>Адрес электронной почты (для получения ответа)</td>
<td><input type="text" name="email" width="400"value="@"/></td>
</tr>
</table>
<p>
<label>
<input type="radio" name="pol" value="мужчина"checked/>
Я мужчина</label>
<br />
<label>
<input type="radio" name="pol" value="женщина" />
Я женщина</label>
</p>
<?
if(isset($_POST['submit'])){
// выполняешь проверки и обрабатываешь данные
}
else{
// если кнопка не нажата выводишь форму.
}
echo "<p>Фамилия: $fam</p>";
echo "<p>Имя: $name</p>";
echo "<p>Отчество: $ot</p>";
echo "<p>Возраст: $year лет</p>";
echo "<p>Город: $town</p>";
echo "<p>Адрес: $email</p>";
if (!empty($_POST['pol'])) echo $_POST ['pol']."<br />"; // Если выбран хоть 1 элемент
else echo "Выберите значение";
if (!empty($_POST['Yes'])) echo $_POST ['Yes']; // Если выбран хоть 1 элемент
else echo "Выберите значение";
?>
У меня к Вам просто ОГРОМНАЯ просьба, не могли бы Вы написать код обработчика ,с проверкой введения данных и отправки их на какую-нибудь html страницу (как бы сделали Вы для себя). Пусть в Вашей форме будут хотя-бы 2 поля, например имя и адрес эл почты
Просто я так толком ничего и не понял.
Если есть возможность ,може написать это письмо мне на адрес evgeniy_krikunov@mail.ru
заранее просто ОГРОМНОЕ спасибо !!! | |
|
|
|
|
|
|
|
для: Евгений new
(02.06.2009 в 14:01)
| | Читать тут: http://htmlbook.ru/html/form.html
1. У вас не закрыта форма, что есть не совсем хорошо.
2. У вас и близко нет в форме кнопки типа submit с именем submit.
Чего же вы хотите в таком случае? | |
|
|
|
|
|
|
|
для: sim5
(02.06.2009 в 14:09)
| | Кнопка есть и форма закрыта, просто я не до конца скопировал код ,извините. Ещё раз пишу его,теперь уже полностью.
<form action="name.php" method="post" >
<table width="100%" border="0">
<tr>
<td width="50%">Вашу Фамилию</td>
<td width="50%"><input type="text" name="fam" /></td>
</tr>
<tr>
<td>Ваше Имя</td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td>Ваше отчество</td>
<td><input type="text" name="ot" /></td>
</tr>
<tr>
<td>Сколько Вам лет</td>
<td><input name="year" type="text" width="40" /></td>
</tr>
<tr>
<td>Ваш город проживания</td>
<td><input type="text" name="town" /></td>
</tr>
<tr>
<td>Адрес электронной почты (для получения ответа)</td>
<td><input type="text" name="email" width="400"value="@"/></td>
</tr>
</table>
<label>
<input type="radio" name="pol" value="мужчина"checked/>
Я мужчина</label>
<br />
<label>
<input type="radio" name="pol" value="женщина" />
Я женщина</label>
</p>
<p><input type="submit" value="Отправить">
</p>
</form> | |
|
|
|
|
|
|
|
для: Евгений new
(02.06.2009 в 14:50)
| | Значит вы не внимательно читаете то, что пишут в комментариях к вашему вопросу, это я писал не только для "Слона", но и для вас:
>автор: sim5 (02.06.2009 в 11:47) письмо автору
>для: Slo_Nik (02.06.2009 в 11:35)
>В форме должна быть кнопка С ИМЕНЕМ submit, типы кнопок не передаются на сервер!
Если бы читали, то давно бы исправили у себя на:
<input type="submit" name="submit" value="Отправить"> | |
|
|
|
|
|
|
|
для: sim5
(02.06.2009 в 15:07)
| | Я читал, просто почему-то не придал этому особого значения ,сейчас изменил всё как надо, но если честно разницы я не увидел, что это даёт вообще? Пожалуйста, извините меня ,но такой вот уж я бестолковый в этом вопросе ,самому просто НИКАК не разобраться.
Огромное спасибо за ссылку.
Вроде всё написано подробно,новсё равно есть вопросы.
Значит я пишу <form action="name.php"target="otvet.html"> правильно,в этом случае форма будет отправляться на эту страничку? Но она ведь там не сохраняется, посетитель отправляет форму и также видит эту страницу (тоже самое ,что и без target). Если например 10 посетителей отправили форму,то как мне увидеть сохранённые результаты? Наверно здесь уже нужна база данных? Если да,скажите,как её создать и пользоваться ей.
На счёт проверки введения данных вообще нет ничего.
И скажите, скрипт ,например name.php обязательно должен находиться в папке cdi-bin ? У меня всё в одной папке /Имя сайта/WWW. Здесь у меня и форма html и name.php.
Не бросайте пожалуйста меня в беде, обратиться больше не к кому. | |
|
|
|
|
|
|
|
для: Евгений new
(02.06.2009 в 15:28)
| | Вам выше предложили проверять пришла или нет форма проверкой установки в массиве $_POST переменной с именем submit, и еменно с именем - типы кнопок формы не передаются на сервер. Другими словами, вашей кнопки типа submit, без имени, в массиве $_POST не будет! Вот это вам понятно?
<?
//проверяем пришла ли форма
if (isset($_POST['submit'])) {
//здесь проверяем все элементы принятой формы,
//и, если все ОК, производим запись данных
//в базу, в файл....
}
|
Естественно сами по себе данные никуда не будут записаны, они будут сохранятся в массиве $_POST до тех пор, пока не будут сброшены. На вас ложится обязанность сохранять принятые данные - посредством соответсвующих сценариев.
Что касается создания базы, как ею пользоваться и т.д., то это слишком обширный вопрос, чтобы ответить вам одним комментарием на него - учите, и учить придется много.
Если вы работаете в Денвере, то создавайте в его папке home папку с названием виртуального домена, например, myproject (в общем любое имя), в этой папке создайте папку www, в которую и помещайте свои скрипты и папки со скриптами - Денвер при запуске подключит их. Вам только останется обратиться к вашему скрипту как http://myproject/name.php.
Вам нужно учиться, на примерах, по книгам, а всего рассказать здесь просто не возможно. | |
|
|
|
|
|
|
|
для: Евгений new
(02.06.2009 в 15:28)
| | скопируй код написаный ниже, назови файл test.php и будет тебе форма с двумя полями, останется только дописать обработчик, всего несколько строк.
<?php
// уровень ошибок
error_reporting(E_ALL);
// массив ошибок
$error = array();
// обработчик формы
// если нажата кнопка "отправить"
if(isset($_POST['submit'])){
// проверяем заполнение полей формы
if(empty($_POST['name'])) $error[] = "не указано имя";
if(empty($_POST['email'])) $error[] = "не указан e-mail";
// если массив ошибок не содержи значений
// начинаем обрабатывать данные
if(empty($error)){
// обрабатываем данные
}
}
// если при заполнении формы есть ошибки
// выводим их пользователю
if(!empty($error)){
foreach($error as $err)
echo $err;
}
?>
<form action='test.php' method='post'>
Ваше имя
<input type='text' name='name'>
Ваш e-mail
<input type='text' name='email'>
<!-- кнопка -->
<input type='submit' name='submit' value='отправить'>
</form>
|
p.s. на ошибки не проверял, а комментировал как сам понимаю, если что не так - подправьте, пожалуйста, кто может лучше объяснить. | |
|
|
|
|
|
|
|
для: Slo_Nik
(02.06.2009 в 22:51)
| | А чем дописать обработчик?
Форму скопировал, сохранил,как сказали. Нажимаю "отправить" открывается просто чистый лист. Я так понимаю,что именно этих строк и не хватает в обработчике, а как их дописать не пойму. Пробовал сделать из двух кодов один, то он либо не проверяет на ошибки,либо не передаёт данные. В каком порядке нужно прописывать строчки, чтобы сработал код проверки и если всё нормально то появилось бы не чистое окно, а например
Имя посетителя Вася
Адрес посетителя vasya@mail.ru
Хотелось бы посмотреть дописанный код к этому коду на 2 поля ,чтобы в результате была и проверка и данные отобразились так.
Чтобы не было лишних вопросов и проблем,решил попробовать указать значение формы <form action="mail@mail.ru"> (свой е маил короче), чтобы форма отправлялась на него. Чего захотел, как бы не так! Во первых начинается геморрой с вопросами типа "Откуда будем отправлять", "Выберите программу" и т.д.
Да ещё и в результате мне всё таки пришло письмо с моей формой и вот что в ней
fam=7&name=4&ot=5&year=6&town=9&email=@&pol=%EC%F3%E6%F7%E8%ED%E0&Yes=%C4%E0+%2C%FF+%E7%ED%E0%EA%EE%EC+%F1+%E4%E8%F1%EA%EE%EC+%E8+%FF%E2%EB%FF%FE%F1%FC+%E5%E3%EE+%EF%EE%EA%F3%EF%E0%F2%E5%EB%E5%EC.+&submit=%CE%F2%EF%F0%E0%E2%E8%F2%FC
Как это понимать и как исправить не знаю. Наверное всё же придётся заниматься базами данных и убить на это кучу времени и нервов.
Скажите, а если мне эту форму отправить на удалённый сервер,может мне там будет более понятно? Хостинг у меня на Yutexе. Он поддерживает и PHP и MySQL. Правда ,даже ума не приложу ,чем это будет легче, если всё равно бестолковый. | |
|
|
|
|
|
|
|
для: Евгений new
(03.06.2009 в 00:04)
| | в обработчике не хватает:
<?
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
?>
|
>Чтобы не было лишних вопросов и проблем,решил попробовать указать значение формы <form action="mail@mail.ru"> (свой е маил короче), чтобы форма отправлялась на него. Чего захотел, как бы не так! Во первых начинается геморрой с вопросами типа "Откуда будем отправлять", "Выберите программу" и т.д.
Да ещё и в результате мне всё таки пришло письмо с моей формой и вот что в ней
fam=7&name=4&ot=5&year=6&town=9&email=@&pol=%EC%F3%E6%F7%E8%ED%E0&Yes=%C4%E0+%2C%FF+%E7%ED%E0%EA%EE%EC+%F1+%E4%E8%F1%EA%EE%EC+%E8+%FF%E2%EB%FF%FE%F1%FC+%E5%E3%EE+%EF%EE%EA%F3%EF%E0%F2%E5%EB%E5%EC.+&submit=%CE%F2%EF%F0%E0%E2%E8%F2%FC
)))) крута)))
просто начните изучать php есть много хороших книг.., где много примеров и все у вас получиться) | |
|
|
|
|
|
|
|
для: *m*
(03.06.2009 в 00:24)
| | Какой же я тупой, если честно,мне просто стыдно за себя, мне 27 лет, а ума не хватает на это.
Скажите, куда конкретно в коде на проверку вставлять эти 2 строчки? Из обоих кодов нужно сделать один, я так понимаю. Даже не из 2 ,а из 3.
Вот мой код обработчика
<?
if(isset($_POST['submit'])){
// выполняешь проверки и обрабатываешь данные
}
else{
// если кнопка не нажата выводишь форму.
}
echo "<p>Фамилия: $fam</p>";
echo "<p>Имя: $name</p>";
if(empty($_POST['name'])) $error[] = "не указано имя";
echo "<p>Отчество: $ot</p>";
echo "<p>Возраст: $year лет</p>";
echo "<p>Город: $town</p>";
echo "<p>Адрес: $email</p>";
if (!empty($_POST['pol'])) echo $_POST ['pol']."<br />"; // Если выбран хоть 1 элемент
else echo "Выберите значение";
?>
Вот код проверки данных
<?php
// уровень ошибок
error_reporting(E_ALL);
// массив ошибок
$error = array();
// обработчик формы
// если нажата кнопка "отправить"
if(isset($_POST['submit'])){
// проверяем заполнение полей формы
if(empty($_POST['name'])) $error[] = "не указано имя";
if(empty($_POST['email'])) $error[] = "не указан e-mail";
// если массив ошибок не содержи значений
// начинаем обрабатывать данные
if(empty($error)){
// обрабатываем данные
}
}
// если при заполнении формы есть ошибки
// выводим их пользователю
if(!empty($error)){
foreach($error as $err)
echo $err;
}
?>
Вот Ваш новый код
<?
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
?>
Так как же из них сделать один? Как же всё это сложно,я и не думал, что так будет.
На счёт изучения php ,я с Вами согласен,но нет у меня времени на это (хотя это надо мне самому). Просто у меня скоро не будет работы, поэтому нужен свой бизнес и чем скорее тем лучше. Да и боюсь, что в голове совсем всё перепутается, только что изучал html ,чтобы создать сайт, но там всё НАМНОГО проще. | |
|
|
|
|
|
|
|
для: Евгений new
(03.06.2009 в 01:23)
| | Итак, создаете файл пусть index.php например, в него помещаете вашу форму
<form action='test.php' method='post'>
Ваше имя
<input type='text' name='name'>
Ваш e-mail
<input type='text' name='email'>
<!-- кнопка -->
<input type='submit' name='submit' value='отправить'>
</form>
|
Далее создаете файл test.php он будет обработчиком, который указан у вас в форме.
<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
// уровень ошибок
error_reporting(E_ALL);
// массив ошибок
$error = array();
// обработчик формы
// если нажата кнопка "отправить"
if(isset($_POST['submit'])){
// проверяем заполнение полей формы
if(empty($_POST['name'])) $error[] = "не указано имя";
if(empty($_POST['email'])) $error[] = "не указан e-mail";
// если массив ошибок не содержи значений
// начинаем обрабатывать данные
if(empty($error)){
// обрабатываем данные
}
}
// если при заполнении формы есть ошибки
// выводим их пользователю
if(!empty($error)){
foreach($error as $err)
echo $err;
}
?>
|
По аналогии можете попробовать сделать вашу форму и проверку для нее.
Но почему-то мне думается, что ничего у вас не выйдет, без базовых знаний и знаний синтаксиса, вы обрекаете себя на бесполезные мучения) | |
|
|
|
|
|
|
|
для: *m*
(03.06.2009 в 02:10)
| | А разве страница с формой должна быть php ?
Я делаю на html. Может не правильно делаю ,или это без разницы.
Нашёл сайт по обучению php ,сколько там всего ,ё моё! С чего же начинать изучение даже не знаю. Плохо, что учебник не пошаговый, типа сделайте то-то ,укажите то-то ,перейдите туда-то. Извините замечтался:-)
Да ,видимо придётся. Кстати пробовал скачать готовый скрипт, мне пришёл архив с кучей файлов, что с ними делать и как применить конечно же не понял, не долго думая удалил его.
Ну возможно со скриптом я разберусь, а как дать ему понять, чтобы он отправил форму в базу данных(она ведь нужна для сохранения информации с форм?). Понятно, что нужно создать базу данных, но как всё это вместе связать ума не приложу. Да и в учебнике по phph наверное этого нет. Нужно искать в другом месте, а что искать через поисковик,как правильно сформулировать вопрос? | |
|
|
|
|
|
|
|
для: Евгений new
(03.06.2009 в 02:22)
| | >сколько там всего ,ё моё!
А вы думали, что все языки программирования - это одна единственная функция по_щучьему_велению("мое пожелание")?
От вас требуется единственно - желание. Если заглянуть в РНР-манул, то вы там найдете функции работы и с базами, и со многим другим.... Не надо паники, а больше логики. | |
|
|
|
|
|
|
|
для: Евгений new
(03.06.2009 в 02:22)
| | >А разве страница с формой должна быть php ?
как по мне, то просто удобно всё держать в одном файле и форму и обработчик.
>С чего же начинать изучение даже не знаю.
начни с изучения отправки данных из формы раз с этого начал, но базовый синтаксис надо подучить всёравно.
>Плохо, что учебник не пошаговый, типа сделайте то-то ,укажите то-то ,перейдите туда-то.
поищи в инете видеоуроки Евгения Попова, там всё просто, для начала хватит, но а потом будешь уже сам учить.
>Понятно, что нужно создать базу данных........
>Да и в учебнике по phph наверное этого нет.......
Начальные указания по работе с базами данных должны быть, так же должно быть как создать таблицу в базе.
По поводу того кода, что я тебе написал выше.
Если ты не заполнишь поля, то тебе должно будет выдать сообщение о том, что какое то из полей пустое, как оформить это сообщение решай сам, там идёт только html и css.
А вот здесь
<?php
if(empty($error)){
// обрабатываем данные
}
?>
|
тебе надо написать sql запрос, если ты решил хранить данные в базе данный, что то типа этого
$query = "INSERT INTO `table` VALUES (name = '".$_POST['name']."', email = '".$_POST['email']."')" ;
if(mysql_query($query)){
echo "Данные успешно записаны";
}
else {echo "Произошла ошибка при записи данных".mysql_error();}
|
это только экскиз кода, надо тебе будет доработать под свои нужды. | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.06.2009 в 12:18)
| | Человека конкретно запутали.)))) | |
|
|
|
|
|
|
|
для: VITtek
(03.06.2009 в 13:49)
| | Код приведённый выше, я переделал под свои данные. Всё работает, но если даже какие-то поля (я сделал по аналогии проверку для 6 полей) не заполнены, форма всё равно отправляется, только при еёпросмотре написано например "Ваше имя"- Вася , Ваш адрес - pupkin@mail.ru и т.д. ,а ниже написано "Вы не указали например город проживания."
Я думал, что если поля не заполнены,то форма не отправится, а появится сообщение об ошибке типа "Не заполнены поля". Как можно сделать так? Чем заменить код?
if (isset($_POST['name'])) {$name = $_POST['name'];}
// уровень ошибок
error_reporting(E_ALL);
// массив ошибок
$error = array();
// обработчик формы
// если нажата кнопка "отправить"
if(isset($_POST['submit'])){
// проверяем заполнение полей формы
if(empty($_POST['name'])) $error[] = "<p><font color=red>Вы не указали имя</font></p>";
// если массив ошибок не содержи значений
// начинаем обрабатывать данные
if(empty($error)){
// обрабатываем данные
}
}
// если при заполнении формы есть ошибки
// выводим их пользователю
if(!empty($error)){
foreach($error as $err)
echo $err;
}
Кстати в форме сделал много чекбоксов и радиокнопок, все работают и данные обрабатываются правильно. | |
|
|
|
|
|
|
|
для: Евгений new
(03.06.2009 в 21:19)
| | здорово не вникал, но по моему правильней ставить условие надо с упором на либо.
т.е. либо есть ошибки и форма не отправляется, либо все прошло без ошибок - можно отправлять. | |
|
|
|
|
|
|
|
для: Рома
(03.06.2009 в 22:06)
| | Да,именно это мне и надо, а как будет выглядеть полный код , например для проверки текстового поля "Ваше имя". Чтобы форма работала именно так,с упором на "либо"? Не подскажете? | |
|
|
|
|
|
|
|
для: Евгений new
(03.06.2009 в 21:19)
| | если какое то из полей не заполнено, то форма не должна отправлятся.
надо полностью смотреть, то что ты написал и там будет видно почему отправляется форма с пустыми полями | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.06.2009 в 22:16)
| | Хорошо ,вот код обработчик
<?
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['fam'])) {$fam = $_POST['fam'];}
if (isset($_POST['ot'])) {$ot = $_POST['ot'];}
if (isset($_POST['town'])) {$town = $_POST['town'];}
if (isset($_POST['year'])) {$year = $_POST['year'];}
echo "<p><font color=blue>Ф И О</font></p>";
echo "<p>$fam ";// Фамилия
echo "$name "; //Имя
echo "$ot</p>";//отчество
echo "<p><font color=blue>Возраст</font></p>";
echo "<p>$year лет</p>";// лет
echo "<p><font color=blue>Я из города</font></p>";
echo "<p>$town</p>";//Город
echo "<p><font color=blue>Адрес электронной почты</font>: $email</p>";//Адрес
if (@$_POST['pol']==="Мужчина") $result_pol = "Мужчина";
if (@$_POST['pol']==="Женщина") $result_pol = "Женщина";
echo "<p>Я $pol <b>".$result_pol."</b></p>";
// уровень ошибок
error_reporting(E_ALL);
// массив ошибок
$error = array();
// обработчик формы
// если нажата кнопка "отправить"
if(isset($_POST['submit'])){
// проверяем заполнение полей формы
if(empty($_POST['name'])) $error[] = "<p><font color=red>Вы не указали имя</font></p>";
if(empty($_POST['email'])) $error[] = "<p><font color=red>Вы не указанли e-mail</font></p>";
if(empty($_POST['fam'])) $error[] = "<p><font color=red>Вы не указали фамилию</font></p>";
if(empty($_POST['ot'])) $error[] = "<p><font color=red>Вы не указали отчество</font></p>";
if(empty($_POST['town'])) $error[] = "<p><font color=red>Вы не указали город проживания</font></p>";
if(empty($_POST['year'])) $error[] = "<p><font color=red>Вы не указали возраст</font></p>";
// если массив ошибок не содержи значений
// начинаем обрабатывать данные
if(empty($error)){
// обрабатываем данные
}
}
// если при заполнении формы есть ошибки
// выводим их пользователю
if(!empty($error)){
foreach($error as $err)
echo $err;
}
?>
А вот сама форма
<form action="name.php" method="post" >
<table width="100%" border="0">
<tr>
<td width="50%">Вашу Фамилию</td>
<td width="50%"><input type="text" name="fam" /></td>
</tr>
<tr>
<td>Ваше Имя</td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td>Ваше отчество</td>
<td><input type="text" name="ot" /></td>
</tr>
<tr>
<td>Сколько Вам лет</td>
<td><input name="year" type="text" width="40" /></td>
</tr>
<tr>
<td>Ваш город проживания</td>
<td><input type="text" name="town" /></td>
</tr>
<tr>
<td>Адрес электронной почты (для получения ответа)</td>
<td><input type="text" name="email" width="400"value="@"/></td>
</tr>
</table>
<p>
<input type="submit" name="submit"value="Отправить анкету!">
</p>
</form></td> | |
|
|
|
|
|
|
|
для: Евгений new
(03.06.2009 в 22:24)
| |
<?php
// уровень ошибок
error_reporting(E_ALL);
if(isset($_POST['submit']))
{ //если данные пришли из формы
// создаем массив ошибок
$error = array();
//проверяете данные на сущ. и на пустоту
if((isset($_POST['name']))&&(!empty($_POST['name']))){$name = $_POST['name'];}else{$error[] = "<p><font color=red>Вы не указали имя</font></p>";}
if((isset($_POST['email']))&&(!empty($_POST['email']))){$email = $_POST['email'];}else{$error[] = "<p><font color=red>Вы не указали email</font></p>";}
if(!empty($error))
{// тут понятно. если ошибки, показываем их и форму
foreach($error as $err) echo $err;
?>
<form action="post.php" method="post">
Ваше Имя:<br>
<input type="text" name="name"><br>
Ваш email:<br>
<input type="text" name="email"><br>
<input type="submit" name="submit" value="Отправить анкету!">
</form>
<?php
}
// если данные введены
else
{
echo $name.", вы зарегены, ваш емейл: ".$email;
// здесь сохраняете данные либо в базу, либо в файл.
// по желанию
}
}
else // если впервые
{
?>
<form action="post.php" method="post">
Ваше Имя:<br>
<input type="text" name="name"><br>
Ваш email:<br>
<input type="text" name="email"><br>
<input type="submit" name="submit" value="Отправить анкету!">
</form>
<?php
}
?>
|
так работает, хотя не самый лучший способ | |
|
|
|
|
|
|
|
для: Рома
(03.06.2009 в 23:00)
| | Лучший ,или не лучший не так важно пока, всё равно огромное спасибо, обязательно попробую! | |
|
|
|
|
|
|
|
для: Евгений new
(03.06.2009 в 23:37)
| | В принципе ,код работает,я его доработал под себя. Допустим, у меня есть поля "Ваше имя" "Фаша фамилия" "Ваш адрес" "Ваш пол (радиокнопки)".
При указании пола и незаполнении строк "Имя" "Фамилия" "Адрес" ,форма всё равно отправляется и на новой странице написано "Ваш пол-мужской" "Вы не указали имя" "Вы не указали фамилию" "Вы не указали адрес" и появляется форма с этими полями. Я её заполняю и нажимаю "Отправить". При этом форма отправляется, теперь уже написано всё "Имя" "Фамилия" "Адрес" ,но нет значения "Ваш пол". Другими словами получается, что если не заполнить поля, то отправятся остальные значения ,но не значения в полях (это понятно), а при повторном заполнении полей, передаются только поля ,а остальные значения пропадают. Скорее всего это я не совсем правильно дополнил код.
Теперь, если можете подскажите подробнее часть кода указанную ниже
{
// здесь сохраняете данные либо в базу, либо в файл.
// по желанию
}
Здесь можно указать значение,чтобы файл сохранился в базе данных? Если да, то можно подробнее, как это сделать, какие значения указывать? | |
|
|
|
|
|
|
|
для: Евгений new
(04.06.2009 в 20:30)
| | Вам нужно начать изучение. Здесь форум, а не кафедра РНР, здесь отвечают на конкретные вопросы - научить вас здесь не возможно!
Что касается того, почему с каждой отправкой формы вы получаете всегда новые варианты значений, то в этом ничего необычного нет. Если вы некой переменной А присвоите значение 10, а зетем 12, а затем вывести ее значение на экран, то вы увидите 12. А первое присвоенное значение (10) никак не получится - его уже не существует. Это ведь вас не удивляет. То же самое и принятые данные от формы. Если она передается методом POST, то ее значения будет содержать суперглобальный массив $_POST, и с каждой отправкой формы его значения будут перезаписываться. Вместо проверки значений полученной формы сделайте вывод их на экран: print_r($POST), и с каждой отправкой формы смотрите, что этот массив будет содержать.
Логика отпраки и проверки формы, которую вам выше предложил Рома, совсем не гут. Чтобы возвращать пользователю форму при ошибках с уже введенными данными, нужно в качестве значений полей формы указывать инициализированные переменные, которые будут принимать значения полей принимаемой формы. Да и код формы достаточно прописывать в коде один раз, отдавая ее по умолчанию и ошибках. | |
|
|
|
|