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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Как вернуться к предыдущей странице и при этом сохранить все введенные данные клиентом в полях формы
 
 автор: lbgraf   (25.12.2008 в 22:09)   письмо автору
 
 

Добрый вечер .

Помогите . У меня страница на которой есть форма в которой есть разные поля . при нажатии сабмит я проверяю введенные поля . экшен формы имеет ссылку на другую строницу содержащюю непосредственно код пчп с проверками и дольнейшим сценарием . мне надо в случае проблемы неправельно заполненного поля вернуться на предыдущюю страницу вывести текст предуприждения типо заполни правельно поле и при этом чтобы заполненные поля были заполнены теми данными которые клиент ввел перед нажатием на сабмит .

  Ответить  
 
 автор: neokortex   (25.12.2008 в 22:38)   письмо автору
 
   для: lbgraf   (25.12.2008 в 22:09)
 

пример

файл form.php

<form>
             <input name=one value="<?=$one?>">
             <input name=two value="<?=$two?>">
             [кнопка]
</form>


файл index.php

if (!isset($_POST['one']) or !isset($_POST['two'])) {$one=""; $two="";
require_once "form.php";
}
else {[проверка]
          если проверка не пройдена: {[вывод ошибок]; 
                                  $one=$_POST['one']; $two=$_POST['two'];
                                   require_once "form.php";
                                   }
          если пройдена: [какие либо действия]
         };

более подробно надо останавливаться на выводе ошибок, если форма большая и несколько методов проверки одного поля (например на пустоту и на количество символов)

  Ответить  
 
 автор: lbgraf   (25.12.2008 в 22:54)   письмо автору
 
   для: neokortex   (25.12.2008 в 22:38)
 

а есле я в индекс пчп создал переменную в которую приравниваю текст сообщения и есле не прошла проверка то как передать эту переменную на предыдущую страницу а на ней вывесте этот текст вот таким оброзом


index.php
if(empty($_POST['f_name']))
{
$error .= ("Please insert your first name ! <br>");
}


form.php
<?php if(!empty($error))
{
echo $error ;
}
?>

это работает вообще или form.php не знает переменные определенные в index.php есле да то помогите решить и эту проблему

  Ответить  
 
 автор: Николай2357   (25.12.2008 в 22:43)   письмо автору
 
   для: lbgraf   (25.12.2008 в 22:09)
 

Ну исле сельна нада, толуче тагда праверят форму на этай же странеце. то исть в акшен паставти её жи адрис. И тагда можна будит вирнут значении преименных так:

<input name="name" type="text" value='<?php echo $_POST['name'?>' />

  Ответить  
 
 автор: lbgraf   (25.12.2008 в 23:16)   письмо автору
 
   для: Николай2357   (25.12.2008 в 22:43)
 

а есле я в индекс пчп создал переменную в которую приравниваю текст сообщения и есле не прошла проверка то как передать эту переменную на предыдущую страницу а на ней вывесте этот текст вот таким оброзом


index.php
if(empty($_POST['f_name']))
{
$error .= ("Please insert your first name ! <br>");
}


form.php
<?php if(!empty($error))
{
echo $error ;
}
?>

это работает вообще или form.php не знает переменные определенные в index.php есле да то помогите решить и эту проблему

  Ответить  
 
 автор: Николай2357   (26.12.2008 в 00:08)   письмо автору
 
   для: lbgraf   (25.12.2008 в 23:16)
 

Я же Вам написал, что оптимальным решением было бы не делить проверку и обработку по разным файлам. Если же так сильно хочется, то значения переменных придется как то передавать между ними. Есть несколько вариантов:
1. редирикт с передачей GET массива
2. использовать механизм сессий
3. самый бестолковый, но технически возможный - использовать массив COOKIE

Изучите эти темы и всё будет возможно. Только для начала возьмите несколько уроков русского языка.

  Ответить  
 
 автор: lbgraf   (26.12.2008 в 12:08)   письмо автору
 
   для: Николай2357   (26.12.2008 в 00:08)
 

С русским действительно проблемка 12 лет не живу в россии . спасибо за помощь

  Ответить  
 
 автор: AcidTrash   (26.12.2008 в 20:36)   письмо автору
 
   для: Николай2357   (26.12.2008 в 00:08)
 

>1. редирикт с передачей GET массива
Полная хрень.
так как не известно, какой объем данных передаваемых GET-запросом.
При использовании метода GET ограничение составляет 2048 символов за вычетом количества символов в текущем пути.

>2. использовать механизм сессий
Для этого не к чему.

>3. самый бестолковый, но технически возможный - использовать массив COOKIE
Ну это вообще полная хрень.

  Ответить  
 
 автор: Николай2357   (27.12.2008 в 15:51)   письмо автору
 
   для: AcidTrash   (26.12.2008 в 20:36)
 

А ну ка предложите не хрень. Вам наверное известны более другие способы... Было бы очень интересно узнать. Написать, что хрень - ума много не нужно. С наступающим, к стати.

  Ответить  
 
 автор: AcidTrash   (28.12.2008 в 20:58)   письмо автору
 
   для: Николай2357   (27.12.2008 в 15:51)
 

К примеру простой вариант. Если надо чтобы, не потерялись значения других полей.
<?php
if($_POST){
if(!
$_POST[field])
print 
"error field";
if(!
$_POST[field1])
print 
"error field1";
}
?>
<form method=POST>
<input type=text name=field value="<? print $_POST[field]; ?>">
<input type=text name=field1 value="<? print $_POST[field1]; ?>">
<input type=submit value="ok">
</form>


P.S. Зачем в данном случае делить форму и обработчик по разным файлам.

  Ответить  
 
 автор: sim5   (28.12.2008 в 21:03)   письмо автору
 
   для: AcidTrash   (28.12.2008 в 20:58)
 

От страницы к странице таскать за собой значения полей?

  Ответить  
 
 автор: AcidTrash   (28.12.2008 в 21:09)   письмо автору
 
   для: sim5   (28.12.2008 в 21:03)
 

Это вы мне?
Насколько понятно, это обработка в одном файле.

  Ответить  
 
 автор: sim5   (28.12.2008 в 21:27)   письмо автору
 
   для: AcidTrash   (28.12.2008 в 21:09)
 

Так вопрос, вроде бы как сохранить из ранее введенного при возрате на страницу. Или тут уже все так запутано? :)

  Ответить  
 
 автор: AcidTrash   (28.12.2008 в 21:40)   письмо автору
 
   для: sim5   (28.12.2008 в 21:27)
 

Да ничего не запутано, Просто тупо если, какое то обяз. поле не заполнено, то вывести пользователю, что это обяз. поле не заполнено, и вывести те данные которые он ввел в другие поля, дабы не вводить все заново.

  Ответить  
 
 автор: Николай2357   (28.12.2008 в 21:35)   письмо автору
 
   для: AcidTrash   (28.12.2008 в 21:09)
 

>Насколько понятно, это обработка в одном файле.
Меня учили никогда не говорить в беседе слов хрень, чушь и им подобных. Дабы не выглядеть бледно. Так всё таки есть более другой способ передачи значений между страницами, которые не хрень? Я вот знаю еще один - записать все на временное хранение. Но даже вслух такое произнести не решаюсь))))

  Ответить  
 
 автор: sim5   (28.12.2008 в 21:44)   письмо автору
 
   для: Николай2357   (28.12.2008 в 21:35)
 

Если бы мне надо было реализовать назад/вперед при пошаговом поучении данных, то я бы использовал массив в сессии.

  Ответить  
 
 автор: Николай2357   (28.12.2008 в 21:51)   письмо автору
 
   для: sim5   (28.12.2008 в 21:44)
 

Ну как бы я и предложил... Для маленькой формы, допустим логин-пароль-мыло, вполне можно обойтись и GET массивом, для формы посеръёзнее лучше конечно сессии, и для расширения кругозора прицепом про куки...

  Ответить  
 
 автор: sim5   (29.12.2008 в 09:56)   письмо автору
 
   для: Николай2357   (28.12.2008 в 21:51)
 

Для маленькой формы... Тут вообще некуда взвращаться ) Я понимаю (принимаю) возврат назад/вперед только в случаях, например, поэтапной регистраци или оформления товара, когда действительно есть необходимость сохранения промежуточных данных. Проще и удобней (на мой взгляд) это сделать массивом - на любом шаге этапа, при любом возврате легко можно получить данные шага. А вот зачем возвращаться, и главное куда, при наличии одной простенькой формы...

  Ответить  
 
 автор: AcidTrash   (28.12.2008 в 21:46)   письмо автору
 
   для: Николай2357   (28.12.2008 в 21:35)
 

>Меня учили никогда не говорить в беседе слов хрень, чушь и им подобных.
Хм, и кто учил? По крайней мере слово "чушь" довольно литературное.

  Ответить  
 
 автор: Николай2357   (28.12.2008 в 21:53)   письмо автору
 
   для: AcidTrash   (28.12.2008 в 21:46)
 

А я не про литературу, а про то, что можно не разобравшись навешать ярлыков. Ведь это же приговор - хрень, и никакой апеляции. Особенно, когда она полная )))

  Ответить  
 
 автор: AcidTrash   (28.12.2008 в 22:01)   письмо автору
 
   для: Николай2357   (28.12.2008 в 21:53)
 

>про то, что можно не разобравшись навешать ярлыков. Ведь это же приговор - хрень, и >никакой апеляции
Да вот как раз, все что вы предложили по теме абсолютно не нужно.
Это делается в одном файле.

  Ответить  
 
 автор: Николай2357   (28.12.2008 в 22:07)   письмо автору
 
   для: AcidTrash   (28.12.2008 в 22:01)
 

Цитата:
>а есле я в индекс пчп создал переменную в которую приравниваю текст сообщения и есле не прошла проверка то как передать эту переменную на предыдущую страницу а на ней вывесте этот текст вот таким оброзом
Вторая
>Я же Вам написал, что оптимальным решением было бы не делить проверку и обработку по разным файлам. Если же так сильно хочется, то

  Ответить  
 
 автор: AcidTrash   (28.12.2008 в 22:10)   письмо автору
 
   для: Николай2357   (28.12.2008 в 22:07)
 

Это делается в одном файле.

Наверно для автора

P.S. Приобретаем гемморой.

  Ответить  
 
 автор: Николай2357   (28.12.2008 в 22:15)   письмо автору
 
   для: AcidTrash   (28.12.2008 в 22:10)
 

Вот с этим не могу не согласится))))

  Ответить  
 
 автор: Николай2357   (28.12.2008 в 21:03)   письмо автору
 
   для: AcidTrash   (28.12.2008 в 20:58)
 

А я разве не так написал? Вопрос был в том, что обработчик в другом файле.

  Ответить  
 
 автор: Рома   (28.12.2008 в 02:40)   письмо автору
 
   для: lbgraf   (25.12.2008 в 22:09)
 

работает стопроцентно!
<a href="javascript:history.go(-1);">Вернуться к форме</a>

  Ответить  
 
 автор: Николай2357   (28.12.2008 в 05:42)   письмо автору
 
   для: Рома   (28.12.2008 в 02:40)
 

Совсем не стопроцентно. В эксплорере не сработает.

  Ответить  
 
 автор: Рома   (28.12.2008 в 20:13)   письмо автору
 
   для: Николай2357   (28.12.2008 в 05:42)
 

у меня работает со второго клика,

  Ответить  
 
 автор: Николай2357   (28.12.2008 в 20:26)   письмо автору
 
   для: Рома   (28.12.2008 в 20:13)
 

И данные в форме сохраняются?

  Ответить  
 
 автор: Рома   (28.12.2008 в 23:12)   письмо автору
 
   для: Николай2357   (28.12.2008 в 20:26)
 

ну да

  Ответить  
Rambler's Top100
вверх

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