Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Вывод надписи на задней странице, не обновляя её.


Автор: ZTI831 13.6.2009, 15:41
Здравствуйте!
Скажите пожалуйста, каким образом можно вывести надпись на предыдущей странице?
Допустим есть страница 1.html  с формой регистрации, при нажатии submit данные попадают в обработчик 2.php , который проверяет на содержательность.
Если вдруг юзер забыл заполнить поле, то он возвращается на страницу 1.html где кроме (уже заполненной им) формы появляется сообщение "Вы забыли заполнить поле №937" необязательно - (и бордер незаполненного поля становится красного цвета).

Мне на ум приходит только одна идея, но она мне не очень нравится smile :

////////////////////////////////////////////////////////////////////////////////////////////////
Данные из фомы 1.html   попадают в обработчик 2.php  >
обработчик 2.php  проверяет на заполненность >
if (какое-то поле не заполнено) {
отправить введенные данные юзера на страницу 3.html, а так же присвоить переменной $error = "<h2>Вы забыли заполнить поле №ххх</h2> и отправить её"
}
3.html содержит форму в поля который вставляются данные (value="<?php $arr[937] ?>") присланные обработчиком т.е данные которые ввел юзер, а так же выводится переменная $error. 
////////////////////////////////////////////////////////////////////////////////////////////////

Автор: bars80080 13.6.2009, 15:54
делается ещё даже проще, есть один файл, в нём пишется примерно следующее:

Код

$step = (!empty($_REQUEST['step'])) ? $_REQUEST['step'] : 0;
$step = intval($step);

if($step == 1) {

    // обработчик, который проверяет всё ли правильно введено
    // если нет, то он создаёт ошибку, подставляет данные в поля $fields = array('var1', 'var2', ...);
    // и $step = 0; если же всё правильно, то $step = 2;

}
if($step == 0) {

    // выдаётся форма с пустыми или заполненными полями по ситуации и указанием ошибки, если есть
    if(!empty($error)) echo $error;
    echo '<form action="?step=1" method="post">';
    echo '<input name="field0" value="'.$fields[0].'" />';
    ...

}
if($step == 2) {

    // какие-то действия, к примеру внос данных в БД

}

Автор: ZTI831 13.6.2009, 16:18
Большое спасибо! Уже почти дописал.
Прокомментируйте пожалуйста ? $_REQUEST['step'] : 0; . - Отсюда мне понятен только глобальный массив.

Автор: bars80080 13.6.2009, 19:12
$step = (!empty($_REQUEST['step'])) ? $_REQUEST['step'] : 0;

то же самое, что:

Код

if(!empty($_REQUEST['step'])) $step = $_REQUEST['step'];
else $step = 0;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)