Автор Тема: При обновлении страницы юзером добавляется новая запись -как этого избежать !??  (Прочитано 8132 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
для страниц, которые строятся по принципу:
switch ($action) {
  case "add":
   // добавление чего-то
  case "edit":
   // код для редактирования

...
  default:
   ...
}
?>
иногда очень удобно.



ЗЫ
только не надо сейчас разводить флейм по поводу "отстойности" такой структуры
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн я...

  • scum of the earth
  • Старожил
  • ****
  • Сообщений: 293
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.vlad.myths.ru
может проще исключить из ф-ции add_record вывод, вероятнее всего, сообщения "ваше сообщение отправлено"...
а вообще, можно сделать и так:

 
echo "<meta http-equiv=\\"Refresh\\" content=\\"0URL=guest.php\\">"
...вот такой я весёлый зверёк...
 Home page

Оффлайн Derbyt

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 20
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
2 Макс

Браузер находит этот рефреш и перегружает страницу, а там опять рефреш и т.д. и т.д. Может ты хотел сказать, что надо вставить этот рефреш в иф...елсе, по какому-либо передаваемому параметру. Но я думаю, что все же проще проверять, например, последнюю мессагу и сравнивать с текущей, и, если одинаковые, то ничего добавлять в БД не надо. Вот только с твоим советом касаемо $hash = md5(implode("", $_POST));, не разобрался.

Оффлайн я...

  • scum of the earth
  • Старожил
  • ****
  • Сообщений: 293
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.vlad.myths.ru
по-моему это глупость...
делай так:

1.
function post_message(...)
{
...
echo 
"<meta http-equiv=\\"Refresh\\" content=\\"0URL=guest.php\\">";
}


2.
function list_messages(...)
{
...
}


3.
if(!isset($action))$action="listing";
if((
$action=="post")&&($message!=""))post_message(...);
else 
list_messages(...);


сорри, но более понятно, я уже не смогу написать...
...вот такой я весёлый зверёк...
 Home page

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Derbyt
1. в форме кнопку оформляеш так:

(здесь главное что у кнопки есть имя submit

2. в скрипте добавление оформляеш так:

if ($submit) {
... 
// твой код который добавляет запись в бд
header("Location: http://".$HTTP_HOST.$PHP_SELF);
exit;
}
... 
// далее твой код выводящий записи


Цитировать
Но я думаю, что все же проще проверять, например, последнюю мессагу и сравнивать с текущей, и, если одинаковые, то ничего добавлять в БД не надо.
делай как хочеш, я просто тебе предложил вариант в котором не надо никаких сравнений делать, это за тебя будет делать mysql

Цитировать

 Вот только с твоим советом касаемо $hash = md5(implode("", $_POST));, не разобрался.

1. Ты знаеш что такое md5?
2. Ты знаеш что такое unique key в базах данных?
$hash = md5(implode("", $_POST)); - просто определяется md5-хеш текущей записи. После этого определения делаеш
INSERT INTO твоя_таблица (список полей, ... , hash)
VALUES (список значений , ... , \'$hash\');
и все mysql сама проверит, есть ли такая запись в таблице, если есть, то запись не будет добавляться.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28