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
Форумы портала PHP.SU :: Версия для печати :: Отсылание запроса при обновлении страницы
Форумы портала PHP.SU » PHP » Программирование на PHP » Отсылание запроса при обновлении страницы

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

1. Bounefarte - 24 Марта, 2008 - 13:58:58 - перейти к сообщению
Почему при обновлении страницы, на которой я обрабатываю данные из форм и вношу таблицу, идет опять обработка и запись?.. я же 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.  
2. EuGen - 24 Марта, 2008 - 14:32:51 - перейти к сообщению
Потому что Вы безусловно (то есть всегда) вызываете Вашу обработку.
Сделайте в форме параметр "send" в виде hidden-поля и:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if($send)
  4.    operation();
  5. ?>
  6.  
3. Bounefarte - 24 Марта, 2008 - 14:39:38 - перейти к сообщению
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..
возможно я не так понял..
4. EuGen - 24 Марта, 2008 - 15:55:05 - перейти к сообщению
Я просто был уверен, что у Вас обработка правильно написана. То есть в ее конце присутствует:
PHP:
скопировать код в буфер обмена
  1.  
  2. header("Location: ваш_скрипт.php");
  3.  

Я уже как-то и забыл, что можно это не написать. Если Вы сделаете так, то нажав F5 Вы не получите эффекта передачи повторно.
5. son - 24 Марта, 2008 - 15:55:21 - перейти к сообщению
да, при обновлении страницы ваши постовые данные передадутся повторно, и значение переменной send будет true, тем более что вы поставили переменной send значение по умолчанию, т.е. она у вас всегда будет true Подмигивание
можете задавать значение этой переменной непосредственно при отправке формы с помощью js
getElementById("send").value=1; submit();
6. Dastar - 26 Марта, 2008 - 23:01:25 - перейти к сообщению
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.  
7. valenok - 27 Марта, 2008 - 06:13:18 - перейти к сообщению
почему нельзя?
Всё можно.
8. EuGen - 27 Марта, 2008 - 09:58:50 - перейти к сообщению
Да, можно. Я исходил от общего к частному. В ряде случаев нужно передавать больше, чем 1 значение и тогда одним значением submit не обойтись.

 

Powered by ExBB FM 1.0 RC1