Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как запомнить данные введенные в форме, для востановления их после проверки.... 
:(
    Опции темы
krulik
Дата 28.2.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 14.1.2006
Где: Украина, Житомир

Репутация: 2
Всего: 4



Короче говоря все видели (и многие делали) формы на которых пользователь должен заполнить разные поля и потом после нажатия кнопки все данные проверяются скриптом. В случае нахождения ошибки (наприме не заполненно поле какоенибудь) пользователю возвращают к форме но данные которые он заполнял уже введены в поля.
Ну к примеру есть вот такя простенькая форма:
Код

<form name=form1>
<input type="text" name="text1"><br>
<input type="text" name="text2"><br>
<select name="MySel"><option value="1" >111</option>
                 <option value="2" >222</option>
                 <option value="3" >333</option>
                 <option value="4" >444</option>
<select><br>
<input type="checkbox" name="cbC">Тут текст какойто<br>
<textarea cols="30" rows="2" name="ta" ></textarea><br>
<input type="submit">
</form>

Мне нужно чтобы в случае незаполнения какихто полей чтобы юзер вернулся на форму и все поля которые он уже заполнял были заполненны его данными.
Решил я эту проблеу следующим образом:
Код

function fill($formName,$obj,$type)
{
    if (isset($_GET[$obj]) && ($_GET[$obj]!=''))
    {
        switch ($type)
        {
            case 'select':  { //выбираем нужный OPTION
                                return "<script>".$formName.".".$obj."[".($_GET[$obj]-1)."].selected=true;</script>";
                                break;
                            }
            case 'checkbox':{ //провеям текущее значение CHECKBOX-a
                                if ($_GET[$obj]=='on') {return 'checked';}
                                                  else {return '';}
                                break;
                            }
            default: { return ($_GET[$obj]); } // по умолчанию возращаються значения для TEXT и TEXTAREA
        }
    }
}


В функции еще не дописал для RADIO элементов. Немного поясню:
Код

$formName - имя формы (оно мне понадобилось для того чтобы выбрать нужный элемент в SELECT
$obj - имя объекта для которого хотим вернуть введенные значения
$type - используется для определения типа элемента. Может принимать значения select и checkbox. По умолчанию возвращает для text и textarea

Ну и сама форма имеет следующий вид:
Код

form action="<?php echo $PHP_SELF ?>" name=form1>
<input type="text" name="text1" value="<?php print fill('','text1','');?>"><br>
<input type="text" name="text2" value="<?php print fill('','text2','');?>"><br>
<select name="MySel"><option value="1" >111</option>
                     <option value="2" >222</option>
                     <option value="3" >333</option>
                     <option value="4" >444</option>
<select><br>
<?php print fill('form1','MySel','select');?>
<input type="checkbox" name="cbC" <?php print fill('','cbC','checkbox');?>>Тут текст какойто<br>
<textarea cols="30" rows="2" name="ta" onclick="this.select()"><?php print fill('','ta','');?></textarea><br>
<input type="submit">
</form>

мое решение данной задачи можно посмотреть тут Вот только там всякие alert-ы выскакивают не в тему smile . Это от этапа отладки осталось.
Кто мне скажет насколько рационален такой метод. И как можно еще решить поставленную задачу. smile
ЗЫ: только пишите ответы на язке понятном для новичка. smile

Это сообщение отредактировал(а) krulik - 28.2.2006, 13:08
--------------------
Каждый день несет в себе частицу вечности (Паоло Коэльо)Если вам плюют в спину, значит вы в переди! (Конфуций)Все, что имеет форму, может исчезнуть в одно мгновение (Харуки Мураками)
PM MAIL ICQ   Вверх
Ciber SLasH
Дата 28.2.2006, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



Цитата(krulik @ 28.2.2006, 12:55 Найти цитируемый пост)
И как можно еще решить поставленную задачу. smile

Я бы решил эту задачу на клиенте с помощью JavaScript.
PM   Вверх
krulik
Дата 1.3.2006, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 14.1.2006
Где: Украина, Житомир

Репутация: 2
Всего: 4



Ciber SLasH, а можно поподробнее. Если РНР я хоть както знаком то с JS не очень покачто. Я так понимаю что обработки будут быстрее выполнятся через JS чем каждый раз запрос на сервер посылать. Или я не прав? Может тогда эту тему перенести в JS и там мне кто то раскажет как из адреса вытянуть переданные параметры!

И еще вопрос есть. Например в моем примере (который више) когда нажимаешь на сабмит то понятное дело адресная строка выглядит вот примерно так _http://localhost/krulik/index.php?text1=sd&text2=sd&MySel=3&cbC=on&ta=
Можно ли сделать вот такую штуку. Чтобы при некоретных данных пользовательвозвращался к форме ввода. И все заполненные им поля были заполнены (эт я реализовал выше). Но вот можно ли чтобы после этого адрес принял вот такой вид _http://localhost/krulik/index.php. ТОбишь убрать оттуда все переданные параметры!
--------------------
Каждый день несет в себе частицу вечности (Паоло Коэльо)Если вам плюют в спину, значит вы в переди! (Конфуций)Все, что имеет форму, может исчезнуть в одно мгновение (Харуки Мураками)
PM MAIL ICQ   Вверх
CTAPbIuMABP
Дата 1.3.2006, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 17.2.2006
Где: Киев

Репутация: 2
Всего: 1



можно вообще их не совать в адресную строку а написать

Код

<form action="<?php echo $PHP_SELF ?>" name=form1 METHOD=POST>


тогда все переменные будутпередаватся через post и в твоем коде все $_GET надо будет заменить на $_POST
PM WWW ICQ Skype   Вверх
Ciber SLasH
Дата 1.3.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



krulik посмотри тему: http://forum.vingrad.ru/index.php?showtopic=51826
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.