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 :: Помогите с кнопкой Submit

 PHP.SU

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


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

> Описание: если нажать F5, то и кнопка нажимается
KCA99
Отправлено: 08 Февраля, 2013 - 14:57:55
Post Id


Новичок


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


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




При обновлении страницы САМА нажимается кнопка Submit(вычисление и обновление БД). Подскажите новечку, как сделать так, что бы на странице index.php отображалось кол-во Вишни из БД, а по нажатию на кнопку прибавлялось постоянное число 5, обновлялась БД и, после загрузки страницы, отображалось уже новое значение Вишни?

Спасибо всем!
Прикреплено изображение (Нажмите для увеличения)
Скрин-2.jpg
 
 Top
imya
Отправлено: 08 Февраля, 2013 - 15:09:38
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




А в каком формате у вас хранятся данные в бд?
Если строка - не получиться так прибавлять, а если int - тогда получится.
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once('bd.php');
  3. $row = $db->query("SELECT * FROM bazawhrere log='user'") or die $db->error();
  4. $result = $db->fetch_assoc($row);
  5.  
  6. if($_POST[sub])
  7. {
  8. $result['arbuz']+=5;
  9. //update table
  10. }
  11. ?>

CODE (html):
скопировать код в буфер обмена
  1. <form id="sum" method="POST"  action="">
  2. <input type="submit" value="+5" name="sub" />
  3. </form>


Поправьте, пожалуйста, если где-то неверно Закатив глазки

(Отредактировано автором: 08 Февраля, 2013 - 15:20:03)



-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
DelphinPRO
Отправлено: 08 Февраля, 2013 - 15:17:17
Post Id



Активный участник


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


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




PHP:
скопировать код в буфер обмена
  1. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  2.   обновляем данные в таблице
  3. }

PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['knopka']) {
  2.   обновляем данные в таблице
  3. }

(Добавление)
imya пишет:
Поправьте, пожалуйста, если где-то неверно
imya пишет:
if($_POST[sub])

сразу две ошибки Улыбка
обращение к несуществующему индексу
и обращение к неопределенной константе

а в целом направление верное Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
imya
Отправлено: 08 Февраля, 2013 - 15:21:57
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




По поводу несуществующего индекса - Нотис будет ведь ?
А неопределённая константа где ?) sub без кавычек?)

А в целом ваш вариант, DelphinPRO , гораздо экономнее моего Закатив глазки


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
DelphinPRO
Отправлено: 08 Февраля, 2013 - 16:42:41
Post Id



Активный участник


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


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




да
да

то же самое


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
KCA99
Отправлено: 08 Февраля, 2013 - 18:52:25
Post Id


Новичок


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


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




Спасибо за ответы!

if ($_SERVER['REQUEST_METHOD'] == 'POST')

if (isset($_POST['knopka'])

Попробовал оба варианта - не помогло... Вроде все правильно делал
 
 Top
DelphinPRO
Отправлено: 08 Февраля, 2013 - 19:01:20
Post Id



Активный участник


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


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




так вы помощи долго ждать будете. Лучше бы показали код, как пробовали. Потому что не работать это не может.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
KCA99
Отправлено: 09 Февраля, 2013 - 10:50:50
Post Id


Новичок


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


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




Всем добрый день! Извиняюсь, что долго не отвечал.

1)
PHP:
скопировать код в буфер обмена
  1. <body class="a">
  2.  
  3. <?PHP
  4.         //Подключение к БД
  5.         $db = mysql_connect("localhost","user","12345");
  6.         mysql_select_db("site",$db);
  7.  
  8.         $result = mysql_query("SELECT * FROM baza WHERE log='user'",$db);
  9.         $myrow = mysql_fetch_array($result);
  10.  
  11.         echo $myrow['arbuz'];
  12.         echo "<br><br<br><br>";
  13.  
  14.         if ($_SERVER['REQUEST_METHOD'] == 'POST')
  15.                 {
  16.                 $result['arbuz']+=5;
  17.                  mysql_query("UPDATE baza SET arbuz=$result WHERE log='user'");
  18.                 }
  19. ?>
  20.  
  21. <form id="sum" method="POST"  action="">
  22. <input type="submit" value="Прибавить 5" name="knopka"/>
  23. </form>
  24.  
  25. </body>


если написать код вот так, то в 23 строке($result['arbuz']+=5;) браузер выдает предупреждение и не обновляется результат в БД.


2) Если написать так, то кнопка работает как надо. Только вот по нажатию на F5 прибавляется 5 арбузов и БД тоже обновляется..
P.S. если нажать F5, то страница дольше грузится.

PHP:
скопировать код в буфер обмена
  1. <body class="a">
  2.  
  3. <?PHP
  4.         //Подключение к БД
  5.         $db = mysql_connect("localhost","user","12345");
  6.         mysql_select_db("site",$db);
  7.  
  8.         $result = mysql_query("SELECT * FROM baza WHERE log='user'",$db);
  9.         $myrow = mysql_fetch_array($result);
  10.  
  11.         echo $myrow['arbuz'];
  12.         echo "<br><br<br><br>";
  13.  
  14.         if ($_SERVER['REQUEST_METHOD'] == 'POST')
  15.                 {
  16.                 $summa = ($myrow['arbuz'] + 5);
  17.                  mysql_query("UPDATE baza SET arbuz=$summa WHERE log='user'");
  18.                 }
  19. ?>
  20.  
  21. <form id="sum" method="POST"  action="">
  22. <input type="submit" value="Прибавить 5" name="knopka"/>
  23. </form>
  24.  
  25. </body>

(Добавление)
imya пишет:
<?PHP
require_once('bd.php');
$row = $db->query("SELECT * FROM bazawhrere log='user'") or die $db->error();
$result = $db->fetch_assoc($row);


А в этом случае браузер вообще выдал фатальную ошибку

(Отредактировано автором: 09 Февраля, 2013 - 11:22:07)

 
 Top
DelphinPRO
Отправлено: 09 Февраля, 2013 - 10:59:16
Post Id



Активный участник


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


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




KCA99 пишет:
2) Если написать так, то кнопка работает как надо. Только вот по нажатию на F5 прибавляется 5 арбузов и БД тоже обновляется..

FireFox в таком случае выдаст предупреждение о повторной отправке данных. Когда вы обновляете страницу после нажатия кнопки, браузер снова отправляет post-запрос.
Чтобы этого избежать, можно сделать редирект страницы на саму себя.

PHP:
скопировать код в буфер обмена
  1. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  2. {
  3.   $summa = ($myrow['arbuz'] + 5);
  4.   mysql_query("UPDATE baza SET arbuz=$summa WHERE log='user'");
  5.   header('Location: ' . $_SERVER['REQUEST_URI']);
  6.   die();
  7. }


PS. Оформите свой пост bb-тегами, проявите чуточку уважения к читающим.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
KCA99
Отправлено: 09 Февраля, 2013 - 11:15:20
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  2.                 {
  3.                 $summa = ($myrow['arbuz'] + 5);
  4.                 mysql_query("UPDATE baza SET arbuz=$summa WHERE log='user'");
  5.                 header('Location: ' . $_SERVER['REQUEST_URI']);
  6.                 die();
  7.                 }


попробовал сделать так. страница стала работать только 1 раз при обновлении через адресную строку.
при нажатии ф5 или на кнопку браузер пишет ошибку (Warning: Cannot modify header information - headers already sent by (output started at S:\home\localhost\www\forum.loc\index.php:10) in S:\home\localhost\www\forum.loc\index.php on line 25)
(Добавление)
Ув. DelphinPRO если есть еще варианты, то подскажите, пожалуйста.

(Отредактировано автором: 09 Февраля, 2013 - 11:19:06)

 
 Top
DelphinPRO
Отправлено: 09 Февраля, 2013 - 13:58:55
Post Id



Активный участник


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


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




вы сделали все правильно. Просто нужно учесть один момент. Вызывать функцию header можно только до любого вывода на страницу.

т.е. полный код будет примерно таким

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP // <<- этот тег должен стоять в самом начале страницы.
  2. //   Перед ним не должно быть пробелов и пустых строк
  3. // До вызова header() не болжно быть ни одного echo в этом и подключаемых файлах.
  4.  
  5.  
  6. /* СНАЧАЛА обрабатываем данные */
  7.    //Подключение к БД
  8.    $db = mysql_connect("localhost","user","12345");
  9.    mysql_select_db("site",$db);
  10.    $result = mysql_query("SELECT * FROM baza WHERE log='user'",$db);
  11.    $myrow = mysql_fetch_array($result);
  12.    if ($_SERVER['REQUEST_METHOD'] == 'POST')
  13.    {
  14.        $summa = ($myrow['arbuz'] + 5);
  15.        mysql_query("UPDATE baza SET arbuz=$summa WHERE log='user'");
  16.        header('Location: ' . $_SERVER['REQUEST_URI']);
  17.        die();
  18.    }
  19.  
  20. /* ПОТОМ выводим html */
  21. ?>
  22. <body class="a">
  23.  
  24.     <?= $myrow['arbuz'] ?>
  25.     <br><br<br><br>
  26.  
  27.     <form id="sum" method="POST"  action="">
  28.         <input type="submit" value="Прибавить 5" name="knopka"/>
  29.     </form>
  30.  
  31. </body>

(Отредактировано автором: 09 Февраля, 2013 - 14:00:03)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
imya
Отправлено: 09 Февраля, 2013 - 14:21:24
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




KCA99 пишет:



А в этом случае браузер вообще выдал фатальную ошибку

А он и будет выдавать фатальную ошибку, учитывая, что вы используется mysql, а не mysqli.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
KCA99
Отправлено: 09 Февраля, 2013 - 16:42:19
Post Id


Новичок


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


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




Спасибо, помогло!! )
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB