Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как избежать дублирования данных при обновлении страници?
 
 автор: Alba   (17.01.2007 в 13:05)   письмо автору
 
 

Здравствуйте.
Небольшая проблемка:
в некоторой форме заполняю поля и отправляю ее, данные из формы записываются в БД MySQL и выводится сообщение что данные успешно сохранены, так вот если сделать refresh страницы, то данные запишутся в БД вторично, т.е. происходит дублирование...
Вопрос: Как можно этого избежать?

PS: В таблице записи различаются только по id и дате, остальные поля могут совпадать...

   
 
 автор: Lelik   (17.01.2007 в 13:09)   письмо автору
 
   для: Alba   (17.01.2007 в 13:05)
 

обработчиком после добавления данных в бд очищать $_GET[''] или $_POST['']

<?php
if($_POST['need_value1']=="")exit();
...
if(
Записано в БД){
$_POST['need_value1']="";
$_POST['need_value2']="";
}
?>

   
 
 автор: Alba   (17.01.2007 в 13:19)   письмо автору
 
   для: Lelik   (17.01.2007 в 13:09)
 

Я так и делаю... только я сначала данные из post передаю в сессию и при существовании переменных basket и note в сессиии произвожу запись в БД. При успешной записиси я делаю вот так:

unset($_SESSION['basket']);
unset($_SESSION['note']);


но всеравно данные записываются вторично...

   
 
 автор: Poison   (17.01.2007 в 13:22)   письмо автору
 
   для: Alba   (17.01.2007 в 13:19)
 

Оно и будет записываться=)) ведь сессия та создаеться:))

При обновлении страницы повторяеться весь твой код сначала!!!

*беруться данные из пост создаеться сессия....

   
 
 автор: Poison   (17.01.2007 в 13:11)   письмо автору
 
   для: Alba   (17.01.2007 в 13:05)
 

Эта проблема обсуждалась много раз=)))
Мне кажеться самый хороший способ, это после успешного добавления перенаправлять пользователя


header("location: index.php")

   
 
 автор: Alba   (17.01.2007 в 13:21)   письмо автору
 
   для: Poison   (17.01.2007 в 13:11)
 

я думал об этом, но оставил эту мысль на крайний случай... :)

   
 
 автор: cheops   (17.01.2007 в 15:23)   письмо автору
 
   для: Alba   (17.01.2007 в 13:21)
 

Смело используйте - это стандартное решение проблемы.

   
 
 автор: sidPR   (25.01.2007 в 14:25)   письмо автору
 
   для: cheops   (17.01.2007 в 15:23)
 

я обычно использовал после формы такое обновление <script>document.location.href=
поставил типо того
header('Location: profile.php');
и вот что мне выдало ... что делать?

Warning: Cannot modify header information - headers already sent by (output started at C:\!Server\www\profile.php:87) in C:\!Server\www\profile.php on line 145 

   
 
 автор: cheops   (25.01.2007 в 15:06)   письмо автору
 
   для: sidPR   (25.01.2007 в 14:25)
 

Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.
Если вывод текста до отправки заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер.

http://www.softtime.ru/group/id_group=12

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования