history.back()
После отправки данных со страницы a.html на b.html, иногда требуется вернутся на страницу a.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 очищает значения полей при возврате. Как исправить?
.
Как исправить?
Никак
это особенность IE а точнее идиотский механизм кеширования...
Тогда может что нибудь посоветуете?
Требуется реализовать следующее.
Пользователь вводит данные в форму (стр a.html).
Среди данных - номер существующей подстанции. Подстанций очень много, поэтому пользователь сам вводит номер, а не выбирает из списка.
Данные отсылаются в скрипт b.php, где заодно проходит проверка, существует ли в справочнике (базе данных) эта подстанция. Если не существует, происходит возврат в предыдущую форму (введённые значения полей не теряются!) и пользователю предлагается либо добавить номер этой подстанции в соответствующий справочник или ввести другой номер подстанции (вдруг он просто ошибся). Для добавления её в базу данных в сплывающем окне открывается страница c.html.
Что посоветуете?
.
в случае ошибки выводят описание ошибки и уже заполненную форму для повторного заполнения
Обычно далают так:
в случае ошибки выводят описание ошибки и уже заполненную форму для повторного заполнения
Вот-вот. Именно заполненную. А как заполнить эту же форму?
Может я и глупость делаю, но пытаюсь отослать пользователя на эту же страницу, при этом передаю значения (через POST).
Т.е. хочу, чтоб пользователь увидел эту же форму, вновь заполненную.
Но ни фига не выходит.
$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. Я тут подумал, отсылка данных на сервер может и идёт, но броузер не переходит на эту страницу.
А можно ли и перейти заодно? :)
.
Вот-вот. Именно заполненную. А как заполнить эту же форму?
Может я и глупость делаю, но пытаюсь отослать пользователя на эту же страницу, при этом передаю значения (через 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;
}
?>
$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-запросов выделен в отдельную тему.
Можно конечно, но тогда придётся всю форму реализовавать в тегах php. А она у меня довольно большая.
Не обязательно.
Можно так:
<FORM....>
<INPUT TYPE="TEXT" NAME="NAME1" VALUE="<?=$_POST["NAME1"]?>">
</FORM>
include("form.html");
.