Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Переносы строк

Сообщения:  [1-10]    [11-20]   [21-30]  [31-38] 

 
 автор: sim5   (05.06.2009 в 05:25)   письмо автору
 
   для: Евгений new   (04.06.2009 в 20:30)
 

Вам нужно начать изучение. Здесь форум, а не кафедра РНР, здесь отвечают на конкретные вопросы - научить вас здесь не возможно!
Что касается того, почему с каждой отправкой формы вы получаете всегда новые варианты значений, то в этом ничего необычного нет. Если вы некой переменной А присвоите значение 10, а зетем 12, а затем вывести ее значение на экран, то вы увидите 12. А первое присвоенное значение (10) никак не получится - его уже не существует. Это ведь вас не удивляет. То же самое и принятые данные от формы. Если она передается методом POST, то ее значения будет содержать суперглобальный массив $_POST, и с каждой отправкой формы его значения будут перезаписываться. Вместо проверки значений полученной формы сделайте вывод их на экран: print_r($POST), и с каждой отправкой формы смотрите, что этот массив будет содержать.
Логика отпраки и проверки формы, которую вам выше предложил Рома, совсем не гут. Чтобы возвращать пользователю форму при ошибках с уже введенными данными, нужно в качестве значений полей формы указывать инициализированные переменные, которые будут принимать значения полей принимаемой формы. Да и код формы достаточно прописывать в коде один раз, отдавая ее по умолчанию и ошибках.

  Ответить  
 
 автор: Евгений new   (04.06.2009 в 20:30)   письмо автору
 
   для: Евгений new   (03.06.2009 в 23:37)
 

В принципе ,код работает,я его доработал под себя. Допустим, у меня есть поля "Ваше имя" "Фаша фамилия" "Ваш адрес" "Ваш пол (радиокнопки)".
При указании пола и незаполнении строк "Имя" "Фамилия" "Адрес" ,форма всё равно отправляется и на новой странице написано "Ваш пол-мужской" "Вы не указали имя" "Вы не указали фамилию" "Вы не указали адрес" и появляется форма с этими полями. Я её заполняю и нажимаю "Отправить". При этом форма отправляется, теперь уже написано всё "Имя" "Фамилия" "Адрес" ,но нет значения "Ваш пол". Другими словами получается, что если не заполнить поля, то отправятся остальные значения ,но не значения в полях (это понятно), а при повторном заполнении полей, передаются только поля ,а остальные значения пропадают. Скорее всего это я не совсем правильно дополнил код.
Теперь, если можете подскажите подробнее часть кода указанную ниже
{
// здесь сохраняете данные либо в базу, либо в файл.
// по желанию
}
Здесь можно указать значение,чтобы файл сохранился в базе данных? Если да, то можно подробнее, как это сделать, какие значения указывать?

  Ответить  
 
 автор: Евгений new   (03.06.2009 в 23:37)   письмо автору
 
   для: Рома   (03.06.2009 в 23:00)
 

Лучший ,или не лучший не так важно пока, всё равно огромное спасибо, обязательно попробую!

  Ответить  
 
 автор: Рома   (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
}
?>

так работает, хотя не самый лучший способ

  Ответить  
 
 автор: Евгений new   (03.06.2009 в 22:24)   письмо автору
 
   для: 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:18)   письмо автору
 
   для: Рома   (03.06.2009 в 22:06)
 

Да,именно это мне и надо, а как будет выглядеть полный код , например для проверки текстового поля "Ваше имя". Чтобы форма работала именно так,с упором на "либо"? Не подскажете?

  Ответить  
 
 автор: Slo_Nik   (03.06.2009 в 22:16)   письмо автору
 
   для: Евгений new   (03.06.2009 в 21:19)
 

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

  Ответить  
 
 автор: Рома   (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;
}
Кстати в форме сделал много чекбоксов и радиокнопок, все работают и данные обрабатываются правильно.

  Ответить  
 
 автор: VITtek   (03.06.2009 в 13:49)   письмо автору
 
   для: Slo_Nik   (03.06.2009 в 12:18)
 

Человека конкретно запутали.))))

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]  [31-38] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования