Повторная запись данных в базу. Как исправить?

letsgo

Новичок
Повторная запись данных в базу. Как исправить?

Добрый день.
Методом GET посылаю запрос скрипту, после чего данные заносятся в БД.
Некоторые пользователи обновляют страницу и тогда данные заносятся в БД еще раз, а некоторые зачем- то нажимают еще раз, и так до бесконечности :)


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

Спасибо.

PS
Проверка данных на уникальность, к сожалению, не подойдет.
 

Beavis

Banned
и после занесения в базу делай редирект, чтоб сбросить POST-данные.
 

letsgo

Новичок
Автор оригинала: Beavis
и после занесения в базу делай редирект, чтоб сбросить POST-данные.
дело в том, что после занесения в базу, пользователю дается кое-какая информация, которая по идеи должна ему быть полезна и он как бы должен с ней ознакомиться :)

А что без изменения метода отправки данных данную проблему не решить?
 

Фанат

oncle terrible
Команда форума
ну так информация же есть в базе. ознакамливай

вопрос про изменение метода бессмысленный. "а что, без замены вилки на ложку суп поесть нельзя будет?" Можно. через клизму залить.
изменения в базе делаются только постом. это аксиома. азбука веб-программирования.
 

letsgo

Новичок
Автор оригинала: Beavis
и после занесения в базу делай редирект, чтоб сбросить POST-данные.
В общем, с заголовками трабл.
"Cannot modify header information" говорит и все тут
 

Фанат

oncle terrible
Команда форума
ну правильно. он же не может утащить за хвост обратно тот заголовок, который уже отправил.
а отправляет он всегда, когда выводит что-то в браузер.
вывод: пере направление делается до вывода.
и только не надо говорить, что у тебя сайт по строен по схеме "мечта всех ламеров - инклюдим контент в шаблон"
 

letsgo

Новичок
*****, так...
с одним разобрался, при обновлении страницы в базу больше ничего не записывается.

Теперь объясните мне, пожалуйста, как контент-то вывести :(
нужен mysql_insert_id() + некоторые данные, которые были в форме...
 

Фанат

oncle terrible
Команда форума
с некоторыми данными, которые были в форме - сложнее.
как я понимаю, эта форма у тебя не для людей с улицы и сессия уже поднята? Вот и пиши в неё
 

letsgo

Новичок
ну, а элементарное echo "Готово"; можно вывести без записи в сессию
 

Фанат

oncle terrible
Команда форума
ну. это да.
но для готово тогда определенный адрес должен быть.
если ты опишешь свой скрипт более конкретно, то тебе скажут, как это делается обычно
 

letsgo

Новичок
да как бы ничего сложного в скрипте то и нет.
Простая html-форма, посылаем запрос методом POST в эту же страницу.
Собственно на этой странице:
PHP:
if (isset($_POST['Submit']))
--запрос к БД
header('Location: ------);
}
 

Beavis

Banned
в некоторых фреймворках для этого используются так называемые flash-messages, т.е. сообщения, записываемые в сессию, и удаляемые оттуда после извлечения.
 

Фанат

oncle terrible
Команда форума
letsgo
если посылать на ту же, то как определить, писать "готово", или нет?
 

letsgo

Новичок
Автор оригинала: *****
letsgo
если посылать на ту же, то как определить, писать "готово", или нет?
хм...
PHP:
$res = mysql_query("INSERT INTO ......");
if (isset($res)) { echo "готово"; 
}
Примерно вот так
 

pilot911

Новичок
Автор оригинала: letsgo
хм...
PHP:
$res = mysql_query("INSERT INTO ......");
if (isset($res)) { echo "готово"; 
}
Примерно вот так
в таком виде isset($res) всегда будет выдавать true, ибо переменная инициализирована
 

Фанат

oncle terrible
Команда форума
- сколько будет дважды два?
- пять!
- ????
- ой, нет! ВОСЕМЬ! Ж:-О
 
Сверху