Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как сделать, чтоб при обновленнии страницы данные повторно не передавались

Сообщения:  [1-10]   [11-18] 

 
 автор: ndach   (12.08.2004 в 10:55)   письмо автору
 
   для: ndach   (12.08.2004 в 10:53)
 

thanks, я усе понял, ща буду ТВОРИТЬ

   
 
 автор: ndach   (12.08.2004 в 10:53)   письмо автору
 
   для: cheops   (12.08.2004 в 09:50)
 

У меня второй скрипт одновременно является скриптом отображения инфы

   
 
 автор: cheops   (12.08.2004 в 09:50)   письмо автору
 
   для: ndach   (12.08.2004 в 07:33)
 

А зачем кнопка во втором скрипте? После добавления инфомации следует ухдить (редиректом) от туда - обатно к форме или к странице, где происходит отображение результатов добавления. Если кнопка всё-таки нужна, то как я выше писал, а s1271tvg ниже :), можно при помощи if всегда ограничить добавление информации в базу данных одним разом.

   
 
 автор: s1271tvg   (12.08.2004 в 08:28)   письмо автору
 
   для: ndach   (11.08.2004 в 07:04)
 

Собственно говоря у меня сделано просто и не надо на два файла разбивать и исправить уже существующий код достаточно как мне кажется легко
<?php
$sql
="insert into 'gbook' values (NULL,'".to_sql($name)."','".to_sql($email)."','".to_sql($theme)."','".to_sql($msg)."',$tim,'".to_sql($date)."',0,$parent_id,$num_msg,$first)";
$res=mysql_query($sql);
if(isset(
$res))
{
?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Refresh" content="0; URL=index.php">
</head><body></body></html>
<?php
echo "Сообщение успешно добавлено";
exit;
}
else 
"Хер тебе а не сообщение";
?>

вот вроде и все потом хоть заобновляйся ничего повторно в базу не пишется. Вот.

   
 
 автор: ndach   (12.08.2004 в 07:33)   письмо автору
 
   для: cheops   (11.08.2004 в 14:49)
 

У меня скрипт разбит на 2 файла. Первый выводит форму для внесения различной инф в базу, всякие там <input>,<textarea>, и.т.д. Затем нажимается кнопка ок, и инф передается во второй скрипт, где уже вносится в базу.Т.е. кнопка добавить по существу находится в другом скрипте.
Можно добавить внизу кнопку обновить, но при этом мне все равно надо чтоб при нажити ctrl+r или "обновить" в IE у меня не возникало ошибок, вот.

   
 
 автор: cheops   (11.08.2004 в 14:49)   письмо автору
 
   для: ndach   (11.08.2004 в 14:27)
 

Ну скорее так: когда происходит первое обращение к форме, элемент суперглобального массива $_POST['act'] не установлен и переменная $act получает значение "add" - добавлять данные. При нажатии на кнопку данные отправляются этому же скрипту, так как значение $_POST['act'] теперь равно "add" скрипт заходит в первый if и добавляет данные. При этом перменная $act получает значение "upd" - и если теперь нажать кнопку "Обновить" - скрипт пергрузит форму, так зайдёт во второй if. После этого нажатие кнопки приведёт опять к добавлению... Кстати, а почему вы не хотите использовать две кнопки - одна для добавления, другая для обновления.

   
 
 автор: ndach   (11.08.2004 в 14:27)   письмо автору
 
   для: cheops   (11.08.2004 в 13:54)
 

Короче говоря, если я посылаю переменные первый раз, то у меня переменной нету, а если обновляю то она создается

   
 
 автор: cheops   (11.08.2004 в 13:54)   письмо автору
 
   для: ndach   (11.08.2004 в 13:38)
 

Да... чего-то я задумался :))) Поправил... Из формы мы отправляем переменную act, которая может принимать два значения: add - для добавления сообщения и upd - для обновления страницы.

   
 
 автор: ndach   (11.08.2004 в 13:38)   письмо автору
 
   для: cheops   (11.08.2004 в 13:13)
 

Чего то я никак последний скрипт не могу разобрать. Я так понял переменная add посылается откуда то из др скрипта. А зачем нужна act, если здесь она не считывается??

   
 
 автор: cheops   (11.08.2004 в 13:13)   письмо автору
 
   для: ndach   (11.08.2004 в 12:58)
 

Если захотите оставить всё в одном файле, можно использовать несколько обработчиков

<?php
if(!isset($_POST['add'])) $act "add";
else 
$act "upd";
?>
<form method=post>
<input type=text name=pos >
<input type=hidden name=act value=<?php echo $act?>>
<input type=submit value=Обновить>
</form>
<?php
// Обработчик формы на добавление
if($_POST['act'] == 'add')
{
  
// добавляем в базу сообщение
}
if(
$_POST['act'] == 'upd')
{
  
// Просто перегружаем форму
    
echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
          </HEAD></HTML>"
;
}
?>

Играясь со скрытыми полями - всегда можно добится от формы любого поведения, без кода, конечно сложно что-то более конструктивное написать....
Но у такого подхода есть один недостаток - код получается здорово замороченный и трудночитаемый - разделение формы и обработчика в этом плане сильно облегчает жизнь...

   

Сообщения:  [1-10]   [11-18] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования