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


Автор: magnet27 4.11.2009, 01:51
как изменить содержимое страницы, например мне нужно в страничке с формой регистрации после нажатия на кнопку и успешной проверки введенных данных убрать текстовые поля и вывести сообщение об успешной регистрации ?
единственное что удалось придумать это
Код

$start= ' /* html код страницы с формой */ ' ;
$end= ' /* html код страницы с сообщением */ ' ;

if ( !$_POST['do'] OR $_POST['do'] =='' ) // do - имя кнопки
{
  echo $start;
}

//здесь проверки введенных данных и накопление ошибки в $error

if ( empty($error) ) 
{
   echo $end;
}

работает вроде бы как надо, но в случае если были ошибки их надо выводить в форме, а т.к. страница с формой выводится через echo, вставленный внутри нее еще один echo не работает.
подскажите как правильно это реализовать ?

Автор: Ипатьев 4.11.2009, 02:02
что мешает выводить $start в случае, если $error не пустая?

Автор: magnet27 4.11.2009, 02:16
условие if ( empty($error) )  вложено в проверку нажатия кнопки

Код

if( !empty($_POST['do']) ) 
{

if ( empty($error) ) 
{
   echo $end;
}

}


если сделать 
Код

if( !empty($_POST['do']) ) 
{

if ( empty($error) ) 
{
   echo $end;

 else echo $start;

}

то изначально страница получается пустой

Автор: Ипатьев 4.11.2009, 02:22
с какой стати пустой-то?
раньше же ведь была не пустая.
у вас лимит на написание кода?
если в одном месте написать echo $start;, то в другом надо сразу убрать?

Автор: magnet27 4.11.2009, 02:36
лимита у меня нет  smile 

вот, делаю так
Код

echo $start;
$error="";

if( !empty($_POST['do']) ) {

//проверки

if (empty($error)) {

echo $end;

else {
    echo $start;
        }

}

страница $end выводится не вместо $start а под ней

Автор: Photon 4.11.2009, 04:13
Код

if (!array_key_exists('do', $_POST) || empty($_POST['do']))
   echo $start;
else {
  //Проверки
  if (empty($error)) 
     echo $end;
  else
     echo $start;
}


А так сделать религия не позволяет?

Автор: Ипатьев 4.11.2009, 09:24
magnet27, а почему теперь первый $start без проверки?

Автор: magnet27 4.11.2009, 12:36
код из первого поста работает , там есть else echo $start, моя ошибка я его не привел сразу, поскольку спрашивал немного о другом - если я вывожу страницу через echo $start, то как выводить ошибки ? 
получается нужно написать вывод $error внутри $start, но тогда один echo будет внутри другого и это не работает, в этом вся проблема.

Автор: Ипатьев 4.11.2009, 13:32
ну и ну
пол-суток обсуждать не ту проблему, которая есть, а совсем другую.

кто мешает вывести сообщения об ошибках перед тем, как выводить старт?

Автор: magnet27 4.11.2009, 13:43
наверное я неправильно сформулировал вопрос в самом начале, но там я спрашивал об ошибках а вы мне начали помогать с условием  smile 
выводить перед старт никто не мешает, но если просто написать echo $error, то ошибки будут выводиться вверху страницы, а мне нужно их вывести на форме

Автор: Ипатьев 4.11.2009, 13:44
У вас в $start целиком страница?! о_О
А как она туда попадает?

Автор: magnet27 4.11.2009, 13:47
$start= ' /* html код страницы с формой */ ' ;

Автор: magnet27 4.11.2009, 14:22
вот, сделал так, теперь работает как надо. может быть нерационально, но ничего, я это переживу 
Код

$start       // код html до места в которое нужно вывести
$st_end   // код html после места в которое выводим
$end        //html страница с сообщением об успешной регистрации

if ( !$_POST['do'] OR $_POST['do'] =='' )
{
  echo $start;
}
$error='';

if( !empty($_POST['do']) ) {

//проверки

if (empty($error)) {
echo $end;
} else {
    echo $start;
    echo $error;
    echo $st_end;
        }

}


Ипатьев, спасибо за помощь.

Автор: Ипатьев 4.11.2009, 15:21
и так для каждой страницы?
А меню на этих страницах есть?
А если в меню еще один пункт добавится? Все старты на всех страницах переписывать?

Автор: magnet27 4.11.2009, 15:52
меню есть
то есть правильно делать чтобы в старте была только форма, а в энде только сообщение, так ?
и сделать шапку где то в отдельном файле и потом на всех страницах его подключать ?

Автор: Ипатьев 4.11.2009, 15:57
Да, мне такое решение кажется наиболее удачным.
Я, собственно, даже и не предполагал, что в start и end лежат страницы целиком. 

вообще, форму я бы не стал присваивать переменной.
а прописал бы в файле, как есть. и делал include
это мне кажется гораздо удобнее. одних слешей уйдет на сто штук меньше.

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