[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отправка данных из формы в БД
shift-enter
Доброго времени суток!..

Такая проблема: есть форма с полями ввода:

HTML
<form action="<?php echo $PHP_SELF; ?>" method="post" onsubmit="return sendform();">
<p><input name="name" size="60" maxlength="16" /><span id="name">Имя: *</span></p>
<p><input name="email" size="60" maxlength="64" /><span>E-mail:</span></p>
<p><input name="site" size="60" maxlength="60" /><span>Сайт:</span></p>
<p><textarea cols="80" name="message" rows="12" /></textarea><span>Введите текст сообщения: *</span></p>
<p><input type="submit" name="submit" value="Отправить" /></p>
</form>


И есть следующая проверка:

PHP
if (isset($_POST["submit"])) {
  $sql = "INSERT INTO messages VALUES (NULL, '$name', '$email', '$site', '$message')";
  $result = mysql_query($sql);
}


При первом нажатии кнопки "Отправить" данные нормально обрабатываются и помещаются в БД. Но если после этого обновить страницу в БД будет добавлена еще одна строка - с теми же данными, если опять обновить - еще одна и т.д.

Вопрос: как сделать, чтобы данные записывались в базу только один раз?



Спустя 13 минут, 21 секунда (4.05.2009 - 00:24) Joker написал(а):
Переслать на другую страницу

PHP
header("Location: www.site.ru");

Спустя 2 минуты, 18 секунд (4.05.2009 - 00:27) twin написал(а):
Не обязательно на другую, можно на эту же, только с GET доппараметром.

Спустя 4 минуты, 22 секунды (4.05.2009 - 00:31) shift-enter написал(а):
И что даст этот GET доппараметр?

Спустя 1 минута, 30 секунд (4.05.2009 - 00:32) sergeiss написал(а):
Наиболее "красиво" - сначала сделать
PHP
header"Refresh: 10, URL=....."); // вместо многоточия - адрес другой страницы

и написать что-то типа "спасибо за то, ввели данные"
А уже с другой страницы сделать
PHP
header"Location: ....");

Спустя 1 минута, 42 секунды (4.05.2009 - 00:34) Joker написал(а):
Цитата (twin @ 3.05.2009 - 21:27)
Не обязательно на другую, можно на эту же, только с GET доппараметром.


Кстати если перелинковать прямо на этуже страницу с этимже GET параметрами то POST массив серовно обнулиться.

Спустя 2 минуты, 29 секунд (4.05.2009 - 00:37) shift-enter написал(а):
А на одной странице никак?

Спустя 6 часов, 17 минут, 17 секунд (4.05.2009 - 06:54) Kuliev написал(а):
Цитата (shift-enter @ 4.05.2009 - 02:37)
А на одной странице никак?


PHP
if (isset($_POST['submit'])) 
{
  
$sql "INSERT INTO messages VALUES (NULL, '".mysql_escape_string($_POST['name'])."', 
'"
.mysql_escape_string($_POST['email'])."', '".mysql_escape_string($_POST['site'])."', '".mysql_escape_string($_POST['message'])."')";
  
$result mysql_query($sql);

header"Refresh: 10, URL=".$_SERVER['PHP_SELF']."");
}

echo 
"<form action='".$_SERVER['PHP_SELF']."' method=post>
<p><input name=name size=60 maxlength=16><span id=name>Имя: *</span></p>
<p><input name=email size=60 maxlength=64><span>E-mail:</span></p>
<p><input name=site size=60 maxlength=60><span>Сайт:</span></p>
<p><textarea cols=80 name=message rows=12></textarea><span>Введите текст сообщения: *</span></p>
<p><input type=submit name=submit value=Отправить></p>
</form>
"
;


Спустя 15 часов, 13 минут, 42 секунды (4.05.2009 - 22:08) shift-enter написал(а):
Спасибо.

Можно еще вопрос, правда не в тему децл: а как делается затемнение экрана, например часто используемое в скриптах галерей, когда картинка (блок) помещается на передний план, а задний затеняется?

Спустя 1 час, 28 минут, 35 секунд (4.05.2009 - 23:36) Joker написал(а):
Див растягиваеться по ширине и высоте черный и делаеться прозрачным.


_____________
Сайт футбольной статистики
Судоку онлайн
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.