Forum Webscript.Ru

Программирование => PHP => Тема начата: grinder от 11 Февраля 2002, 03:20:04

Название: Гостевая
Отправлено: grinder от 11 Февраля 2002, 03:20:04
Написал гостевуху на ПХП. Это мой первый опыт, то есть все элементарно. Всего одна страница, то есть форма, в которую вводятся данные, и на этой же странице отображается вся информация, которая была ранее в форму введена. Все, вроде, работает:) Но одна из проблем в том, что когда входишь на эту страницу, то почему-то отправляется-отображается пустая мессага. И так при каждом входе. Как этого избежать?
Название: эээ
Отправлено: Britva от 11 Февраля 2002, 03:33:53
Цитировать
Но одна из проблем в том, что когда входишь на эту страницу, то почему-то отправляется-отображается пустая мессага. И так при каждом входе. Как этого избежать?
а что значит пустая мессага? и при каждом входе? :)
Название: Гостевая
Отправлено: grinder от 11 Февраля 2002, 04:16:15
Все сообщения выводятся в виде таблицы. Так вот, при загрузке страницы появляется пустое сообщение. То есть как будто кто-то просто нажал сабмит не написав ничего. Я еще не сделал проверку данных просто. То есть можно отправить пустые поля. И вот они как-то сами отправляются, когда входишь на страницу...
Название: Гостевая
Отправлено: nagash от 11 Февраля 2002, 05:20:07
ты в форме когда отправляешь сообщение посылай ещё и пуременную

и потом проверяй если эта переменная равна еденице значит добавляй... если нет то просто отображай...
Название: Гостевая
Отправлено: Antoxa от 11 Февраля 2002, 06:31:29
вот как раз когда ты сделаешь проверку пришли данные или нет, то все и заработает :))

т.е. когда они не пришли => гб просто читают => показать форму

если есть данные => добавить сообщение
Название: Гостевая
Отправлено: Dm от 11 Февраля 2002, 17:14:00
Возможно, что-то напутано с форматом файла сообщений.
К примеру, если есть дополнительный перевод строки, то сообщение пустое и будет.

И, думаю, следует добавить после сохранения:
header("Location: $PHP_SELF");
чтобы не было случайной возможности обновить страничку и разместить дважды сообщение.
Название: Гостевая
Отправлено: grinder от 11 Февраля 2002, 21:20:28
Цитировать

Значение переменной, которая здесь указана, становицца равной единице, после отправки формы, или когда форма рисуецца?
Название: :)
Отправлено: Britva от 11 Февраля 2002, 21:31:26
Цитировать
Значение переменной, которая здесь указана, становицца равной единице, после отправки формы, или когда форма рисуецца?

после сабмита естественно.
Название: Гостевая
Отправлено: AlieN от 11 Февраля 2002, 21:43:53
дай исходник лучше
Название: Гостевая
Отправлено: grinder от 11 Февраля 2002, 22:16:43
Цитировать
после сабмита естественно.

Я тоже так считаю. Но такое чувство, что нет... Не получаецца на фиг...
Название: Гостевая
Отправлено: grinder от 11 Февраля 2002, 22:25:52
 //Форма
$form = "
 
   
     
       

       Ваше имя :

       


       Ваш email :

       


       Сообщение :

       

       
     
   
 
";        
// Заполнялась ли форма ранее
 print "$form";

 if ($seenform != "y") :
     add_guest($name,$email,$comments);
 endif;        
 
 view_guest ();

?>

Это скрипт. В этом виде он работает неправильно. Путаница у меня в чем :
1. Куда вставить строку print "$form";
2. Куда вставить строку add_guest($name,$email,$comments);
3. Куда вставить строку view_guest ();
Название: пример
Отправлено: Britva от 11 Февраля 2002, 22:25:57
html:






script.php:
print "\\$var = \'".$var."\'
";
print "\\$text = \'".$text."\'
";
?>
Название: Гостевая
Отправлено: Britva от 11 Февраля 2002, 22:32:37

function form($name="", $email="", $comments="") {
?>




Ваше имя :
 
">
 

Ваш email :
 
">
 

Сообщение :
 

 




}

if(!isset($submit)) {
   // Здесь также вывод записей из гостевой
   form();
} else {
   if($name == \'\' || $email == \'\' || $comments == \'\') {
       print \'Ошибка
\';
       form($name, $email, $comments);
   } else {
       // добавление $name, $email, $comments
       Header("Location: $PHP_SELF");
   }
}
?>
Название: Гостевая
Отправлено: grinder от 11 Февраля 2002, 22:33:31
Угу...
Название: Бритве...
Отправлено: grinder от 11 Февраля 2002, 23:13:13
Что-то не получаецца...
Название: Гостевая
Отправлено: Britva от 11 Февраля 2002, 23:16:36
Цитировать
Что-то не получаецца...

Оригинально... а что не получается-то?
Я наверное телепат? :)
Название: Гостевая
Отправлено: grinder от 11 Февраля 2002, 23:23:46
if(!isset($submit))
Это значит :
Если $submit не определена, то....?
Название: :)
Отправлено: grinder от 11 Февраля 2002, 23:26:09
Не добавляет данные в базу. С функцией, которая делает это, все нормально. Работала...
Название: Гостевая
Отправлено: Britva от 11 Февраля 2002, 23:27:06
не определена (не нажимали на сабмит) => выводить гостевую + форму ввода сообщения...
если определена => проверяем введенные данные и добавляем + редиректим снова на скрипт.

теперь понятнее? :)
Название: Гостевая
Отправлено: Britva от 11 Февраля 2002, 23:28:08
Цитировать
Не добавляет данные в базу. С функцией, которая делает это, все нормально. Работала...

млин, ну что конкретно то? приведи кусок скрипта.
Название: Гостевая
Отправлено: grinder от 11 Февраля 2002, 23:33:08
if(!isset($submit)) {
// Здесь также вывод записей из гостевой
form();
view_guest();
} else {
if($name == \'\' || $email == \'\' || $comments == \'\') {
print \'Ошибка
\';
form($name, $email, $comments);
} else {
// добавление $name, $email, $comments
add_guest($name, $email, $comments );
Header("Location: $PHP_SELF");
}
}
Мне кажецца, что дальше первого ELSE уже не идет... Потому что, если нажать на submit с пустой формой, то сообщения об ошибке не вылазит...
Название: а, ну понятно
Отправлено: Britva от 11 Февраля 2002, 23:38:47
name="submit">
замени в форме.
Название: Гостевая
Отправлено: grinder от 12 Февраля 2002, 00:04:56
Cannot add header information - headers already sent by(...)
такая ошибка теперь... я читал, что header, можно вставлять в скрипт, только до того, как был выполнен вывод данных в браузере...
Название: Гостевая
Отправлено: grinder от 12 Февраля 2002, 00:18:50
Ничего не пойму... Теперь нет никакой ошибки, но не отображаецца вообще ничего. Ни форма, ни данные... В скрипте не менял ничего.
Название: Гостевая
Отправлено: Britva от 12 Февраля 2002, 00:52:56
Цитировать
Cannot add header information - headers already sent by(...)
такая ошибка теперь... я читал, что header, можно вставлять в скрипт, только до того, как был выполнен вывод данных в браузере...

или убери хеадер() а вместо него выводи гуестбук
Цитировать
Ничего не пойму... Теперь нет никакой ошибки, но не отображаецца вообще ничего. Ни форма, ни данные... В скрипте не менял ничего.

пришли скрипт на мыло.
Название: Гостевая
Отправлено: grinder от 12 Февраля 2002, 01:17:45
заслал...
Название: млин
Отправлено: Britva от 12 Февраля 2002, 01:34:42
а почему бы после
add_guest($name, $email, $comments );
не добавить
view_guest();
???
Название: Гостевая
Отправлено: grinder от 12 Февраля 2002, 01:53:55
Добавил... Теперь, после отправки данных высвечиваецца таблица, со всеми мессагами, но форму не показывает...
Название: Гостевая
Отправлено: grinder от 12 Февраля 2002, 02:17:25
Когда я начал делать эту гостивуху, то я тоже сначала сделал проверку  не пустоты полей, и была похожая ситуация, форма после заполнения не отображалась. Убрал проверку, этот геморой исчез, но появился новый... Теперь опять все сначала:)
Название: опять 25
Отправлено: Britva от 12 Февраля 2002, 02:38:25
Цитировать
Добавил... Теперь, после отправки данных высвечиваецца таблица, со всеми мессагами, но форму не показывает...

а сразу же после
view_guest();
можно поставить
form();

и зачем убрал проверку полей??? >( ты хочешь, чтобы бд была заполнена пустыми значениями чтоли?
Название: Гостевая
Отправлено: grinder от 12 Февраля 2002, 02:44:21
Цитировать
и зачем убрал проверку полей???

Да это просто история этой гесты. Сейчас я ничего не убрал...
Название: Спасибо
Отправлено: grinder от 12 Февраля 2002, 02:48:31
Все получилось... Спасибо. Не серчай особо, я не давно в ПХП...
Название: ну наконец-то :))
Отправлено: Britva от 12 Февраля 2002, 02:53:22
да я и не серчаю :)
Название: Гостевая
Отправлено: grinder от 12 Февраля 2002, 02:54:24
Очередной вопрос...:) Когда нажимаю на обновить, то мессага дублируецца почему-то. Как этого избежать?
Название: по новой :)
Отправлено: Britva от 12 Февраля 2002, 02:58:15
header("Location: $PHP_SELF");
сразу после add_xxxxx

только добейся того, чтобы не было вывода до этого хеадера.
Название: Гостевая
Отправлено: grinder от 12 Февраля 2002, 03:56:44
Не понимаю...:( Как его поставить после add_xxx, но до вывода? Если add_xxx стоит после вывода...
Название: буферизация
Отправлено: Britva от 12 Февраля 2002, 12:18:14
Используй буферизацию (ob_start/ob_get_contents/ob_end_clean)
или используй шаблоны+буферизацию (например http://www.webscript.ru/stories/02/01/28/2360970 :))
Название: Гостевая
Отправлено: grinder от 12 Февраля 2002, 15:39:38
ок, буду пробовать...
Название: Бритве...
Отправлено: grinder от 13 Февраля 2002, 00:48:06
Все получилось. Теперь иду дальше... То есть вопросы еще будут стопудово.:)