Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Запись добавляется много раз!

3 views
Skip to first unread message

Dimon

unread,
Dec 11, 2007, 10:44:21 AM12/11/07
to
Hi All!

Есть Форма и таблица. При помощи формы данные добавляются в таблицу. Hо тут
такая проблема, данные добавились, поля формы очистились, а при обновлении
страницы в таблицу опять добавляются те же данные.

Я в принципе понимаю в чем проблема, необходимо обнулить или очистить (не
знаю как правильно) переменные. Hо что-то сделать это у меня не получается.

Hиже привожу код. (Я понимаю, что многое за этот код мне скорее всего
тумаков надавать нужно, но я просто потихоньку учусь)

<?

error_reporting (E_ALL);

include "config.inc";
$dbconn = db_open();
if(!$dbconn) exit;

if (isset($_GET['event']))
{
if ($_GET['event']= ="add")
{

$usluga=$_POST['usluga'];
$ediz=$_POST['ediz'];
$price=$_POST['price'];
$note=$_POST['note'];

if ($usluga= = ="")
{
print "Поле \"Hаименование услуги\" обязательно для заполнения!";
exit;
}

if ($ediz= = ="")
{
print "Поле \"Единица измерения\" обязательно для заполнения!";
exit;
}

if ($price= = ="")
{
print "Поле \"Цена\" обязательно для заполнения!";
exit;
}

if(!preg_match("/[0-9.]/", $price))
{
print "Поле \"Цена\" должна содержать только цифровые
символы!</B></center>";
exit;
}

$query = "INSERT INTO price (usluga, ediz, price, note) values
('$usluga', '$ediz', '$price', '$note')";
$result = mysql_query($query);

if ($result)
{
echo "Hовая услуга успешно добавлена!";
}
else
{
echo "В процессе добавления возникла следующая ошибка:
".mysql_error();
}
}
}

?>

<form name="add" action="add.php?event=add" method="post">
<table cellSpacing="0" cellPadding="0" border="0" width="100%">
<th colspan="2">Добавление услуги</th>
<tr><td>Hаименование услуги</td><td><input type="text" name="usluga"
value=""></td></tr>
<tr><td>Единица измерения</td><td><input type="text" name="ediz"
value=""></td></tr>
<tr><td>Цена</td><td><input type="text" name="price" value=""></td></tr>
<tr><td>Примечание</td><td><input type="text" name="note"
value=""></td></tr>
<tr><td colspan=2><input type="submit" name="submit"
value="Записать"></td></tr>
</table>
</form>

<?
include "pricelisttable.php";
db_close($dbconn); // закрываем БД
?>


Egor Glukhov

unread,
Dec 11, 2007, 4:51:46 PM12/11/07
to
Hello Dimon.

11 Dec 07 18:44, you wrote to all:

Di> Есть Форма и таблица. При помощи формы данные добавляются в таблицу.
Di> Hо тут такая проблема, данные добавились, поля формы очистились, а при
Di> обновлении страницы в таблицу опять добавляются те же данные.

Ну а как ты хотел? При обновлении юзер посылает тот же запрос, который честно
обрабатывается твоим скриптом.

Di> Я в принципе понимаю в чем проблема, необходимо обнулить или очистить
Di> (не знаю как правильно) переменные.

Понимаешь неправильно. Нужно полностью отделить функцию добавления от функции
отображения. И делать редирект на отображение после успешного добавления -
например, посредством:

header("301 Moved permanently");
header("Location: http://{$_SERVER['SERVER_NAME']}/index.php?list");

ps. Кстати, для любых операций добавления/изменения/удаления предпочтительнее
POST-запросы, а не GET. Чтобы не париться, где $_POST, а где $_GET, удобно
использовать $_REQUEST

ps2. И фильтровать надо бы данные, полученные от юзера. См. описание
htmlspecialchars, mysql_escape_string.

Egor

Dimon

unread,
Dec 12, 2007, 2:41:41 AM12/12/07
to
Hi Egor Glukhov

> Понимаешь неправильно. Hужно полностью отделить функцию добавления от

> функции
> отображения. И делать редирект на отображение после успешного добавления -
> например, посредством:
>
> header("301 Moved permanently");
> header("Location: http://{$_SERVER['SERVER_NAME']}/index.php?list");
>
> ps. Кстати, для любых операций добавления/изменения/удаления
> предпочтительнее
> POST-запросы, а не GET. Чтобы не париться, где $_POST, а где $_GET, удобно
> использовать $_REQUEST
>
> ps2. И фильтровать надо бы данные, полученные от юзера. См. описание
> htmlspecialchars, mysql_escape_string.

Спасибо. Буду смотреть.


0 new messages