Есть Форма и таблица. При помощи формы данные добавляются в таблицу. 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); // закрываем БД
?>
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
> Понимаешь неправильно. 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.
Спасибо. Буду смотреть.