Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отсылание запроса при обновлении страницы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: почему так?
Bounefarte
Отправлено: 24 Марта, 2008 - 13:58:58
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Март 2008  
Откуда: Kyiv


Помог: 0 раз(а)




Почему при обновлении страницы, на которой я обрабатываю данные из форм и вношу таблицу, идет опять обработка и запись?.. я же submit'ом не подтвердил запрос.. как с этим бороться?

З.Ы. ситуация сложилась так что мне надо и сами формы и обработку их поместить на одной странице с пересылкой данных из форм на эту же страницу..
(Добавление)
файл administrator.php
PHP:
скопировать код в буфер обмена
  1.  
  2. function time_table()
  3. {
  4. //...
  5. echo "<form  method='post' action='administrator.php'>";
  6. //...
  7. echo "<input type=text name='group_".$i."'>";
  8. echo "<input type='hidden' value='".$i."' name='what'>";
  9. //...
  10. echo "</form>";
  11. };
  12.  
  13. function operation()
  14. {
  15. $what=$_POST['what'];
  16. $group=$_POST['group_'.$what];
  17. //.. и пошла тут обработка
  18. };
  19.  
  20. operation();
  21. time_table();
  22.  

(Отредактировано автором: 24 Марта, 2008 - 14:00:16)

 
 Top
EuGen Администратор
Отправлено: 24 Марта, 2008 - 14:32:51
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Потому что Вы безусловно (то есть всегда) вызываете Вашу обработку.
Сделайте в форме параметр "send" в виде hidden-поля и:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if($send)
  4.    operation();
  5. ?>
  6.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Bounefarte
Отправлено: 24 Марта, 2008 - 14:39:38
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Март 2008  
Откуда: Kyiv


Помог: 0 раз(а)




EuGen, вы имели ввиду:
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "<input type='hidden' value='1' name='send'>";
  3. ...
  4. if ($_POST["send"]){
  5.  operation();
  6.  };
  7.  
??
(Добавление)
насколько я понял свою проблему: все формы один раз отсылаются и потом при обновлении PHP хранит в себе переменные из этих форм, тоесть если чтото "положить" в форму, то оно будет при обновлении.. также и с предлагаемым вами send'ом в hidden'е.. при обновлении - переменная send все равно будет true..
возможно я не так понял..
 
 Top
EuGen Администратор
Отправлено: 24 Марта, 2008 - 15:55:05
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Я просто был уверен, что у Вас обработка правильно написана. То есть в ее конце присутствует:
PHP:
скопировать код в буфер обмена
  1.  
  2. header("Location: ваш_скрипт.php");
  3.  

Я уже как-то и забыл, что можно это не написать. Если Вы сделаете так, то нажав F5 Вы не получите эффекта передачи повторно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
son
Отправлено: 24 Марта, 2008 - 15:55:21
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




да, при обновлении страницы ваши постовые данные передадутся повторно, и значение переменной send будет true, тем более что вы поставили переменной send значение по умолчанию, т.е. она у вас всегда будет true Подмигивание
можете задавать значение этой переменной непосредственно при отправке формы с помощью js
getElementById("send").value=1; submit();
 
 Top
Dastar
Отправлено: 26 Марта, 2008 - 23:01:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




EuGen, а почему нельзя просто проверять если кнопка нажата??? Зачем добовлять еще одно поле?

PHP:
скопировать код в буфер обмена
  1.  
  2. <form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">
  3. <input type="submit"  name="button" value="PushMe" />
  4. </form>
  5.  
  6. <?PHP
  7. if (isset($_POST['button']))
  8. {
  9.    //Ваш код ЗДЕСЬ;
  10. };
  11. ?>
  12.  


-----
Не знаешь - молчи.
 
 Top
valenok Модератор
Отправлено: 27 Марта, 2008 - 06:13:18
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




почему нельзя?
Всё можно.


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 27 Марта, 2008 - 09:58:50
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Да, можно. Я исходил от общего к частному. В ряде случаев нужно передавать больше, чем 1 значение и тогда одним значением submit не обойтись.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB