|
|
|
|
|
для: Евгений new
(04.06.2009 в 20:30)
| | Вам нужно начать изучение. Здесь форум, а не кафедра РНР, здесь отвечают на конкретные вопросы - научить вас здесь не возможно!
Что касается того, почему с каждой отправкой формы вы получаете всегда новые варианты значений, то в этом ничего необычного нет. Если вы некой переменной А присвоите значение 10, а зетем 12, а затем вывести ее значение на экран, то вы увидите 12. А первое присвоенное значение (10) никак не получится - его уже не существует. Это ведь вас не удивляет. То же самое и принятые данные от формы. Если она передается методом POST, то ее значения будет содержать суперглобальный массив $_POST, и с каждой отправкой формы его значения будут перезаписываться. Вместо проверки значений полученной формы сделайте вывод их на экран: print_r($POST), и с каждой отправкой формы смотрите, что этот массив будет содержать.
Логика отпраки и проверки формы, которую вам выше предложил Рома, совсем не гут. Чтобы возвращать пользователю форму при ошибках с уже введенными данными, нужно в качестве значений полей формы указывать инициализированные переменные, которые будут принимать значения полей принимаемой формы. Да и код формы достаточно прописывать в коде один раз, отдавая ее по умолчанию и ошибках. | |
|
|
|
|
|
|
|
для: Евгений new
(03.06.2009 в 23:37)
| | В принципе ,код работает,я его доработал под себя. Допустим, у меня есть поля "Ваше имя" "Фаша фамилия" "Ваш адрес" "Ваш пол (радиокнопки)".
При указании пола и незаполнении строк "Имя" "Фамилия" "Адрес" ,форма всё равно отправляется и на новой странице написано "Ваш пол-мужской" "Вы не указали имя" "Вы не указали фамилию" "Вы не указали адрес" и появляется форма с этими полями. Я её заполняю и нажимаю "Отправить". При этом форма отправляется, теперь уже написано всё "Имя" "Фамилия" "Адрес" ,но нет значения "Ваш пол". Другими словами получается, что если не заполнить поля, то отправятся остальные значения ,но не значения в полях (это понятно), а при повторном заполнении полей, передаются только поля ,а остальные значения пропадают. Скорее всего это я не совсем правильно дополнил код.
Теперь, если можете подскажите подробнее часть кода указанную ниже
{
// здесь сохраняете данные либо в базу, либо в файл.
// по желанию
}
Здесь можно указать значение,чтобы файл сохранился в базе данных? Если да, то можно подробнее, как это сделать, какие значения указывать? | |
|
|
|
|
|
|
|
для: Рома
(03.06.2009 в 23:00)
| | Лучший ,или не лучший не так важно пока, всё равно огромное спасибо, обязательно попробую! | |
|
|
|
|
|
|
|
для: Евгений 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
}
?>
|
так работает, хотя не самый лучший способ | |
|
|
|
|
|
|
|
для: 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> | |
|
|
|
|
|
|
|
для: Рома
(03.06.2009 в 22:06)
| | Да,именно это мне и надо, а как будет выглядеть полный код , например для проверки текстового поля "Ваше имя". Чтобы форма работала именно так,с упором на "либо"? Не подскажете? | |
|
|
|
|
|
|
|
для: Евгений new
(03.06.2009 в 21:19)
| | если какое то из полей не заполнено, то форма не должна отправлятся.
надо полностью смотреть, то что ты написал и там будет видно почему отправляется форма с пустыми полями | |
|
|
|
|
|
|
|
для: Евгений new
(03.06.2009 в 21:19)
| | здорово не вникал, но по моему правильней ставить условие надо с упором на либо.
т.е. либо есть ошибки и форма не отправляется, либо все прошло без ошибок - можно отправлять. | |
|
|
|
|
|
|
|
для: 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;
}
Кстати в форме сделал много чекбоксов и радиокнопок, все работают и данные обрабатываются правильно. | |
|
|
|
|
|
|
|
для: Slo_Nik
(03.06.2009 в 12:18)
| | Человека конкретно запутали.)))) | |
|
|
|
|