Проблема с кнопкой обновить - повторное добавление записей в базу

krafty

new Exception
Проблема с кнопкой обновить - повторное добавление записей в базу

Знаю, что обсуждалась эта тема. Знаю про рубрику Вопрос-Ответ. Ну не работает!

Прочитал и сделал как здесь. Ничего не получилось. По-прежнему при нажатии на рефреш добавляются записи.
PHP:
if (isset($_POST['b_apply'])) {
  $id=$_POST['id'];
  $date1=$_POST['date1'];
..................
  $sql="INSERT INTO news ( id , date1 , date2 , header , news_text , archive )
  VALUES ('', '".$date1."', '".$date2."', '".
  $header."', '".$text."', '0')";
  mysql_query($sql)
    or mysql_err("Невозможно выполнить запрос к базе данных");
  header('Location: '.$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"].'?ok');  
}
show_form(); //показываем форму
?>
 

Фанат

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

krafty

new Exception
с http://. чудеса невнимательности...
внутрений редирект можно даже не пробывать (у меня php как модуль апача стоит)

-~{}~ 07.09.05 14:57:

Фанат может расскажешь, где в факе ошибка. Наверное, не тлько мне будет интересно.
Добавил http:// - тоже не работает.
 

Фанат

oncle terrible
Команда форума
Shade, твоё замечание явно лишнее.

krafty, ну пробовать -то всё равно можно.
тем более, что все браузеры понимают неформатный адрес, ьез префикса и хоста.
но лучше, конечно, писать в соответствии со стандартом.

-~{}~ 07.09.05 15:59:

может расскажешь, где в факе ошибка
а я разве не рассказал?
а ты разве не исправил?
Добавил http:// - тоже не работает.
если ты неправильно иправил, это не значит, что ошибки там не было.
что там у тебя не работает
ок в адресе видно?
целиком эту строчку на экран выводил?
в браузер копировать пробовал?

-~{}~ 07.09.05 16:00:

ЧТО означает этот локейшен ты понимаешь?
ты его не бездумно копируешь и ждёшь, чтобы затебя исправили, или ПОНИМАЕШЬ что твои руки написали?
 

krafty

new Exception
Конечно понимаю. Когда в браузере нажимаем рефреш происходит самопереадресация. Браузер просто перезагружает текущую страницу. естественно данные формы при этом не отправляются
 

Фанат

oncle terrible
Команда форума
чего-чего?
какая ещё самопереадресация? =)
если на текующую страницу были отправлены данные формы, и браузер перезагружает текущую страницу, то почему это данные формы не будут отправлены?
 

krafty

new Exception
может мы говорим об одном и том же, только разными словами. я имею ввиду self редирект (ну как еще его назвать!). страница заставляет браузер перейти на саму себя

-~{}~ 07.09.05 15:17:

страница загружается с сервера. заново. без данных формы. посему ничего и не отправляется
 

Фанат

oncle terrible
Команда форума
ну.
только при чём тут кнопка рфреш в браузере?
это же скрипт делает переадресацию, а не кнопка.

так делается у тебя эта переадресация? ок видно?
 

krafty

new Exception
сделал так

$rnd=time();
echo 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"].'?'.$rnd;
header('Location: http://'.$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"].'?ok'.$rnd);
exit();

echo выдает http://localhost/admin/add.php?1126096266
записи по прежнему размножаются. да еще и форма не загружается.... вобщем труба
 

Sky_Flex

Новичок
так а разве после удачного занесения в БД записей нельзя просто "убить" переменные функцией unset(); тогда при обновление(перезагрузке страницы) ниче вновь добавляться не будет.
 

Ринат

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

Lews

Новичок
unset убьет переменные для текущего запуска скрипта. При нажатии рефреша, браузер снова пошлёт все данные формы.
 

kvf77

Red Devil
krafty

ты вообще понимаешь что делаешь и чего хочешь добиться?
 

Sky_Flex

Новичок
значит у меня что то не так. У меня тоже из формы посылались данные на скрипт и заносились в БД. при нажатии "обновить", запись заносилась вновь. А после того как я унсетом удалил переменные то при "обновлении" ниче больше не заносятся.

если не в тему извините...
 

krafty

new Exception
Мне надо не допустить повторного добавления записей при нажатии на обновить. Что тут не ясного? При этом вариант с проверкой типа "если есть такая запись, то не добавляем" не подходит
 

Фанат

oncle terrible
Команда форума
сделал так

$rnd=time();
echo 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"].'?'.$rnd;
header('Location: http://'.$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"].'?ok'.$rnd);
exit();
echo выдает http://localhost/admin/add.php?1126096266
руль.
читать и плакать.

krafty, идёшь, и вдумчиво читаешь http://phpfaq.ru/headers

после этого скажешь - не заметил ли ты в этом своём описании чего-то странного =)

-~{}~ 07.09.05 18:07:

Ринат
задача - понять, что такое НТТР заголовки и что они делают.
;-)
 

Ринат

Новичок
ну да вывод echo в браузер и потом header...статья, кстати клевая...спасибо
 
Сверху