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]   

> Без описания
Qwertty
Отправлено: 11 Июня, 2015 - 16:28:13
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


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




Приветствую! Нужно обновить несколько полей в БД одновременно. Нарыл код, отредактировал немного, но не работает, при выполнении запроса ничего не происходит. Просьба помочь разобраться, в чём причина, только в обработчике, или и страница с формой тоже кривая?

Собственно код страницы

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include("db_connect.php");
  4. $result = mysql_query("SELECT * FROM spisok");
  5. $myrow = mysql_fetch_array($result);?>
  6. <form name='form1' method='POST' action='update.php'>
  7. <?PHP
  8. do
  9. {      
  10. printf ("<label>Номер<br>
  11. <input name='id[]' title='id' type='text' value='%s'>
  12. </label>
  13. <br>
  14. <label>Брэнд<br>
  15. <input name='brand[]' title='brand' type='text' value='%s'>
  16. </label>
  17. </label><br><br><br><br>", $myrow ['id'], $myrow ['brand']);
  18. }
  19. while ($myrow = mysql_fetch_array ($result));
  20. ?>
  21. <input type='submit' value='Сохранить изменения' name='submit' title='submit'>
  22. </form>
  23.  


и обработчик

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. include("db_connect.php");
  3. $c = count($_POST['id']);
  4.  
  5. for($i=0;$i<$n; $i++) {
  6.    $sql = "UPDATE spisok SET id = '$_POST[id][$i]', brand = '$_POST[brand][$i]' WHERE id = '$_POST[id][$i]'";
  7.   mysql_query ($sql) or die( mysql_error() );
  8.  
  9. }
  10. ?>


Большая просьба по возможности дать развёрнутый комментарий.

И буду благодарен за ссылки на нормальные материалы по данной тематике, от справочников уже голова пухнет, и всё равно ничего путного самостоятельно не могу сделать.
 
 Top
file.shreder
Отправлено: 11 Июня, 2015 - 17:50:02
Post Id


Посетитель


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


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

[+]


ого у тебя форма для ввода... Сам придумал?
(Добавление)
и еще интересно не нужно ли случаем кавычки здесь ставить?
 
 Top
Ts.Saltan
Отправлено: 11 Июня, 2015 - 17:59:38
Post Id



Посетитель


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


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




Qwertty пишет:
$c = count($_POST['id']);

Qwertty пишет:
for($i=0;$i<$n; $i++

Обратите внимание на выделенные переменные
(Добавление)
Включите вывод ошибок, должно быть предупреждение о несуществующей переменной
 
 Top
Qwertty
Отправлено: 11 Июня, 2015 - 18:04:23
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


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




file.shreder пишет:
ого у тебя форма для ввода... Сам придумал?
(Добавление)
и еще интересно не нужно ли случаем кавычки здесь ставить?


не сам. сам я дальше одиночной отправки в базу новых записей не ушёл Не понял и огорчён
да не, не в ковычках дело )
 
 Top
lawer85
Отправлено: 11 Июня, 2015 - 18:04:34
Post Id


Частый гость


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


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




А что за атрибут title у тега input ? Такого нету в списке атрибутов.

http://htmlbook[dot]ru/html/input
 
 Top
file.shreder
Отправлено: 11 Июня, 2015 - 18:08:13
Post Id


Посетитель


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


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

[+]


Qwertty пишет:
file.shreder пишет:
ого у тебя форма для ввода... Сам придумал?
(Добавление)
и еще интересно не нужно ли случаем кавычки здесь ставить?


не сам. сам я дальше одиночной отправки в базу новых записей не ушёл Не понял и огорчён
да не, не в ковычках дело )

Нув тебе выше уже сказали, что ты переменную не ту втулил в счетчик
(Добавление)


так включается вывод ошибок и предупреждений, если они есть
 
 Top
Qwertty
Отправлено: 11 Июня, 2015 - 18:24:29
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


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




Ts.Saltan пишет:
Qwertty пишет:
$c = count($_POST['id']);

Qwertty пишет:
for($i=0;$i<$n; $i++

Обратите внимание на выделенные переменные
(Добавление)
Включите вывод ошибок, должно быть предупреждение о несуществующей переменной


Обратил. Надо вверху поменять $c на $n я так понимаю? )
(Добавление)
file.shreder пишет:

Нув тебе выше уже сказали, что ты переменную не ту втулил в счетчик
(Добавление)


так включается вывод ошибок и предупреждений, если они есть


Чёт не пойму, куда это вставить то? )
 
 Top
lawer85
Отправлено: 11 Июня, 2015 - 18:32:27
Post Id


Частый гость


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


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




[quote]
Qwertty пишет:
Ts.Saltan пишет:
Qwertty пишет:
$c = count($_POST['id']);

Qwertty пишет:
for($i=0;$i<$n; $i++

Обратите внимание на выделенные переменные
(Добавление)
Включите вывод ошибок, должно быть предупреждение о несуществующей переменной


Обратил. Надо вверху поменять $c на $n я так понимаю? )


Главное чтобы была одна и таже буква.
Цитата:

(Добавление)
file.shreder пишет:

Нув тебе выше уже сказали, что ты переменную не ту втулил в счетчик
(Добавление)


так включается вывод ошибок и предупреждений, если они есть


Чёт не пойму, куда это вставить то? )


В самом начале обоих файлов после <?php

(Отредактировано автором: 11 Июня, 2015 - 18:34:09)

 
 Top
Qwertty
Отправлено: 11 Июня, 2015 - 18:41:15
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


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




lawer85 пишет:
А что за атрибут title у тега input ? Такого нету в списке атрибутов.

http://htmlbook.ru/html/input


это да. думал кто код писал знает для чего он там. в принципе автор писал что у него работает код, вот я и не стал париться.
(Добавление)
lawer85 пишет:

В самом начале обоих файлов после <?php


вставил. ошибок никаких не выдаёт. по-ходу вообще не работает.
 
 Top
file.shreder
Отправлено: 11 Июня, 2015 - 19:04:16
Post Id


Посетитель


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


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

[+]


а утебя там есть что то в той таблице вообще?
(Добавление)
PHP:
скопировать код в буфер обмена
  1. $sql = "UPDATE spisok SET  brand = '".$_POST['brand'][$i]."' WHERE id = '".$_POST['id'][$i]."'";

(Добавление)
так будет работать - ИСТИННО ГОВОРЮ ВАМ!!!! Радость
 
 Top
Qwertty
Отправлено: 11 Июня, 2015 - 19:30:32
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2015  


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




file.shreder пишет:
а утебя там есть что то в той таблице вообще?
(Добавление)
PHP:
скопировать код в буфер обмена
  1. $sql = "UPDATE spisok SET  brand = '".$_POST['brand'][$i]."' WHERE id = '".$_POST['id'][$i]."'";

(Добавление)
так будет работать - ИСТИННО ГОВОРЮ ВАМ!!!! Радость


Превосходно заработало, благодарствую! )

кстати, может кто будет тему смотреть и кому понадобится, вот видео нашёл как раз про это + массовое удаление записей из базы https://youtu[dot]be/ImirOX73atc
 
 Top
Мелкий Супермодератор
Отправлено: 11 Июня, 2015 - 20:06:20
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




file.shreder пишет:
error_reporting(E_ALL^E_NOTICE);

и
file.shreder пишет:
так будет работать

Без экранирования в принципе, угу.
То ли прикалываетесь, то ли что, но мне хочется выдать штраф за вредные советы. Только что-то пункта правил найти не могу.


Вывод ошибок включается
error_reporting(E_ALL);
Для PHP начиная с 5.4
Или для древних версий
error_reporting(-1);

Во-вторых, данные с запросом конкатенировать нельзя в принципе. Про необработанный $_POST, $_GET и прочее я вовсе не заикаюсь.
В-третьих, хватит насиловать mysql_*.
Qwertty, где видите использование mysql_query и компании - смело игнорируйте такие учебные материалы. Такие уроки потеряли смысл уже с десяток лет как. Где описывается mysqli или лучше PDO - можно изучать.


-----
PostgreSQL DBA
 
 Top
file.shreder
Отправлено: 12 Июня, 2015 - 08:54:59
Post Id


Посетитель


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


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

[+]


Мелкий пишет:
file.shreder пишет:
error_reporting(E_ALL^E_NOTICE);

и
file.shreder пишет:
так будет работать

Без экранирования в принципе, угу.
То ли прикалываетесь, то ли что, но мне хочется выдать штраф за вредные советы. Только что-то пункта правил найти не могу.


Вывод ошибок включается
error_reporting(E_ALL);
Для PHP начиная с 5.4
Или для древних версий
error_reporting(-1);

Во-вторых, данные с запросом конкатенировать нельзя в принципе. Про необработанный $_POST, $_GET и прочее я вовсе не заикаюсь.
В-третьих, хватит насиловать mysql_*.
Qwertty, где видите использование mysql_query и компании - смело игнорируйте такие учебные материалы. Такие уроки потеряли смысл уже с десяток лет как. Где описывается mysqli или лучше PDO - можно изучать.

да я простой же пример привел, как исправить ошибку по его конкретному вопросу. Я показал, что у него в его конкретном запросе была ошибка синтаксическая.
 
 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