shift-enter
4.05.2009 - 01:11
Доброго времени суток!..
Такая проблема: есть форма с полями ввода:
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 написал(а):
Див растягиваеться по ширине и высоте черный и делаеться прозрачным.
_____________
Сайт футбольной статистикиСудоку онлайн