Программирование => 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 = "
"; // Заполнялась ли форма ранее 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
Название: Гостевая
Отправлено: 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
Все получилось. Теперь иду дальше... То есть вопросы еще будут стопудово.:)