Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

history.back()

429
29 марта 2004 года
Slon
78 / / 20.01.2000
Имеются две страницы: a.html и b.html.
После отправки данных со страницы a.html на b.html, иногда требуется вернутся на страницу a.html.
Но чтобы заполненные поля не очищались!
У меня приблизительно так:

Код:
<html>
<form name="FormName" action="b.html">
<input name="Name" type="text" value="">
<input type="submit" value="Send">
</form>
</html>


<html>
<script language="JavaScript">
history.back()
</script>
</html>


В Опере всё как я и хотел, а IE очищает значения полей при возврате. Как исправить?
.
283
29 марта 2004 года
Alone
910 / / 20.11.2002
Цитата:
Originally posted by Slon
Как исправить?


Никак
это особенность IE а точнее идиотский механизм кеширования...

429
29 марта 2004 года
Slon
78 / / 20.01.2000
Жаль.
Тогда может что нибудь посоветуете?
Требуется реализовать следующее.

Пользователь вводит данные в форму (стр a.html).
Среди данных - номер существующей подстанции. Подстанций очень много, поэтому пользователь сам вводит номер, а не выбирает из списка.
Данные отсылаются в скрипт b.php, где заодно проходит проверка, существует ли в справочнике (базе данных) эта подстанция. Если не существует, происходит возврат в предыдущую форму (введённые значения полей не теряются!) и пользователю предлагается либо добавить номер этой подстанции в соответствующий справочник или ввести другой номер подстанции (вдруг он просто ошибся). Для добавления её в базу данных в сплывающем окне открывается страница c.html.

Что посоветуете?
.
283
29 марта 2004 года
Alone
910 / / 20.11.2002
Обычно далают так:
в случае ошибки выводят описание ошибки и уже заполненную форму для повторного заполнения
429
30 марта 2004 года
Slon
78 / / 20.01.2000
Цитата:
Originally posted by Alone
Обычно далают так:
в случае ошибки выводят описание ошибки и уже заполненную форму для повторного заполнения



Вот-вот. Именно заполненную. А как заполнить эту же форму?
Может я и глупость делаю, но пытаюсь отослать пользователя на эту же страницу, при этом передаю значения (через POST).
Т.е. хочу, чтоб пользователь увидел эту же форму, вновь заполненную.
Но ни фига не выходит.

Код:
$my_page = $_SERVER['HTTP_HOST']."/a.php";

$query =
"POST $my_page HTTP/1.1\r\n".
"Host: ".$_SERVER['HTTP_HOST']."\r\n".
"Referer: $my_page:80\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n\r\n".
"Content-Length: 7\r\n".
"foo=bar";

$fp = fsockopen($_SERVER['HTTP_HOST'], 80, &$errno, &$errstr, 1);
fputs($fp, $query);


P.S. Я тут подумал, отсылка данных на сервер может и идёт, но броузер не переходит на эту страницу.
А можно ли и перейти заодно? :)
.
1.9K
30 марта 2004 года
HabaHaba
172 / / 24.12.2003
Цитата:
Originally posted by Slon
Вот-вот. Именно заполненную. А как заполнить эту же форму?
Может я и глупость делаю, но пытаюсь отослать пользователя на эту же страницу, при этом передаю значения (через POST).


Хм... А зачем вообще разделять на 2 разные страницы если всё можно сделать на одной?
Во всяком случае, уж проверку введенных данных точно.
Что мешает сделать что то вроде этого:

Код:
<?
$form = "
<FORM action='test.php?act=1&step=2' METHOD=POST>
        <INPUT TYPE='TEXT' NAME='field1' VALUE='{$_POST[field1]}'>

        <INPUT TYPE='TEXT' NAME='field2' VALUE='{$_POST[field2]}'>

        <INPUT TYPE=SUBMIT VALUE='>>>'>
</FORM>
"
;

if ($_GET[act]==1) {
       
  $Error = false;
    if (!trim($_POST[field1])) {
        $Error.="<font color=red>Поле1 пусто!</font>
"
;
    }
    if (!preg_match("/^(\d{4})\$/",trim($_POST[field2]))) {
        $Error.="<font color=red>Поле2 должно содержать 4 цифры</font>
"
;
    }
   
    if (!$Error) {     
        include("b.php");
                   /*Тут, в принципе, всё что угодно - можно и постом куда-нибудь отослать*/
    } else {
        print "Во время заполнения произошли следующие ошибки:
"
.$Error;
        print $form;
    }
} else {
   print $form;
}
?>
429
30 марта 2004 года
Slon
78 / / 20.01.2000
Цитата:
Originally posted by HabaHaba
$form = "
<FORM action='test.php?act=1&step=2' METHOD=POST>
<INPUT TYPE='TEXT' NAME='field1' VALUE='{$_POST[field1]}'>

<INPUT TYPE='TEXT' NAME='field2' VALUE='{$_POST[field2]}'>

<INPUT TYPE=SUBMIT VALUE='>>>'>
</FORM>



Можно конечно, но тогда придётся всю форму реализовавать в тегах php. А она у меня довольно большая.
И хотелось бы всё-таки писать в html со вставками php.
Потом будет легче разобраться (подсветка, к примеру, тоже в этом помогает).

P.S. Вопрос по генерации http-запросов выделен в отдельную тему.

1.9K
30 марта 2004 года
HabaHaba
172 / / 24.12.2003
Цитата:
Originally posted by Slon

Можно конечно, но тогда придётся всю форму реализовавать в тегах php. А она у меня довольно большая.


Не обязательно.
Можно так:

<FORM....>
<INPUT TYPE="TEXT" NAME="NAME1" VALUE="<?=$_POST["NAME1"]?>">
</FORM>



include("form.html");

429
30 марта 2004 года
Slon
78 / / 20.01.2000
Спасибо. Так и сделал.
.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог