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 :: как выполнить sql запрос из цикла while

 PHP.SU

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


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

> Без описания
myvin
Отправлено: 22 Июля, 2018 - 13:58:10
Post Id


Новичок


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


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




Имеем код
PHP:
скопировать код в буфер обмена
  1. while ($myrow = mysql_fetch_array ($sql)) {
  2. $numid = $myrow['num_id'];
  3. $vremya = $myrow['data_vremya'];
  4. $mas = $myrow['masters'];
  5. $marka = $myrow['marka'];
  6. $model = $myrow['model'];
  7. $number = $myrow['number_k'];
  8. $fio = $myrow['fio'];
  9. $imei = $myrow['imei'];
  10. $sernum = $myrow['ser_num'];
  11. $compl = $myrow['complect'];
  12. $tsena = $myrow['tsena'];
  13. $nepoladka = $myrow['polomka'];
  14. $zametki = $myrow['zametki'];
  15. echo '<tr>';
  16. echo '<td class="tg-4z1q">' . $numid . '</td>';
  17. echo '<td class="tg-gby1">' . $vremya . '</td>';
  18. echo '<td class="tg-gby1">' . $marka . '&nbsp;' . $model . '</td>';
  19. echo '<td class="tg-gby1">' . $nepoladka . '</td>';
  20. echo '<td class="tg-gby1">' . $fio . '</td>';
  21. echo '<td class="tg-gby1">' . $number . '</td>';
  22. echo '<td class="tg-gby1">' . $compl . '</td>';
  23. echo '<td class="tg-gby1">' . $tsena . '</td>';
  24. echo '<td class="tg-gby1">' . $mas . '</td>';
  25. echo '<td class="tg-gby1">' . $imei . '&nbsp;' . $sernum . '</td>';
  26. echo '<td class="tg-gby1">' . $zametki . '</td>';
  27. echo '</tr>';
  28. }
  29. echo '</table>';

, данный код нам выдает все нужные строки в таблицу. Не пойму как сделать после конца каждой строчки кнопку, при нажатии на которую будет выполнен SQl запрос к базе данных MySQl, и будет действовать только на определенный ID строки. Например у нас в базе три строки, выводим все три строки из базы циклом while, и нам нужно чтоб при нажатии каждой кнопки, запрос в базу выполнялся именно с идентификатором конкретной строчки. То есть я нажму на кнопку возле третьей строки, именно третья строка пошлет запрос в базу данных
 
 Top
miketomlin
Отправлено: 22 Июля, 2018 - 14:54:00
Post Id


Частый гость


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


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




Идентификатор конкретной записи указывайте в ссылке, в имени кнопки и т.п. Потом обрабатывайте запрос.

Вот, например, почитайте мою статью Как сделать вывод списка статей? и обязательно комменты к ней, т.к. в самой стать предполагается использование движка, который сам выбирает отдельные записи.
(Добавление)
P.S. Вот это переливание из пустого в порожнее: $numid = $myrow['num_id']; и т.п.

Используйте какое-нибудь современное расширение для работы с БД, например mysqli.

В шаблоне лучше использовать альт. синтаксис (см. шаблоны в статье).

Соединение с базой лучше закрывать до выполнения шаблонов или вообще этого не делать, полагаясь на «сборку мусора».
 
 Top
myvin
Отправлено: 22 Июля, 2018 - 15:53:28
Post Id


Новичок


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


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




miketomlin пишет:
Идентификатор конкретной записи указывайте в ссылке, в имени кнопки и т.п. Потом обрабатывайте запрос.

Вот, например, почитайте мою статью Как сделать вывод списка статей? и обязательно комменты к ней, т.к. в самой стать предполагается использование движка, который сам выбирает отдельные записи.
(Добавление)
P.S. Вот это переливание из пустого в порожнее: $numid = $myrow['num_id']; и т.п.

Используйте какое-нибудь современное расширение для работы с БД, например mysqli.

В шаблоне лучше использовать альт. синтаксис (см. шаблоны в статье).

Соединение с базой лучше закрывать до выполнения шаблонов или вообще этого не делать, полагаясь на «сборку мусора».

Чуть переделал код, но все равно не то, что требуется.
PHP:
скопировать код в буфер обмена
  1. while ($myrow = mysql_fetch_array ($sql)) {
  2. $ident = $myrow['num_id'];
  3. echo '<tr>';
  4. echo '<td class="tg-4z1q">' . $myrow['num_id'] . '</td>';
  5. echo '<td class="tg-gby1">' . $myrow['data_vremya'] . '</td>';
  6. echo '<td class="tg-gby1">' . $myrow['marka'] . '&nbsp;' . $myrow['model'] . '</td>';
  7. echo '<td class="tg-gby1">' . $myrow['polomka'] . '</td>';
  8. echo '<td class="tg-gby1">' . $myrow['fio'] . '</td>';
  9. echo '<td class="tg-gby1">' . $myrow['number_k'] . '</td>';
  10. echo '<td class="tg-gby1">' . $myrow['complect'] . '</td>';
  11. echo '<td class="tg-gby1">' . $myrow['tsena'] . '</td>';
  12. echo '<td class="tg-gby1">' . $myrow['masters'] . '</td>';
  13. echo '<td class="tg-gby1">' . $myrow['imei'] . '&nbsp;' . $myrow['ser_num'] . '</td>';
  14. echo '<td class="tg-gby1">' . $myrow['zametki'] . '</td>';
  15. echo '</tr>';
  16. echo '<form action="" method="post">';
  17. echo '<input type="submit" name="action">';
  18. echo '</form>';
  19. if(isset($_POST['action']))
  20. {
  21. mysql_query("UPDATE priemka SET status2=1 WHERE num_id = '$ident'",$db) or die(mysql_error());
  22. }  
  23. }
  24. echo '</table>';

и действие применяется не к одной строке status2, а ко всем строкам сразу, имеющимся в таблице, а нужно только строго к той строке, напротив которой я нажму на кнопку (имеется скажем html таблица с 10 строк, при нажатии на кнопку submit, значение столбца status2 меняется сразу во всех строках, а не только к той, возле которой кнопка
 
 Top
miketomlin
Отправлено: 22 Июля, 2018 - 18:30:28
Post Id


Частый гость


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


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




О каком конкретно действии идет речь? Если о просмотре, редактировании (именно редактировании, а не сохранении отредактированного), то достаточно простых ссылок и метода GET.

Для изменения и т.п. можно использовать чекбоксы, индивидуальные формы, кнопки с собственными обработчиками и т.п.
(Добавление)
Значение $ident должно как-то передаваться в обработчик.
 
 Top
myvin
Отправлено: 23 Июля, 2018 - 11:46:43
Post Id


Новичок


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


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




miketomlin пишет:
О каком конкретно действии идет речь? Если о просмотре, редактировании (именно редактировании, а не сохранении отредактированного), то достаточно простых ссылок и метода GET.

Для изменения и т.п. можно использовать чекбоксы, индивидуальные формы, кнопки с собственными обработчиками и т.п.
(Добавление)
Значение $ident должно как-то передаваться в обработчик.

Напишу так - имеется 5 столбцов в базе данных MySQL. Строк у этих столбцов может быть немерено, от 1 до там сотен тысяч (конечно когда их будет уже столько много, буду оптимизировать, не о этом речь), и каждая строка выводится на сайт циклом, то есть если строк в базе 500, то выводится 500 строк на сайт. Каждая отдельная строка имеет свой ID, который идет от 1 до.. до сколько строк в базе будет, столько и будет. В итоге мы имеем таблицу на сайте с каким то там числом строк. Мне нужно возле каждой строки кнопку, при нажатии на которую в определенный столбец базы данных будет вписана информация, но вписана она должна быть только строго для той строки, возле которой была нажата кнопка. То есть вывод информации у нас циклом while, и когда я вывожу кнопку sumbit для строки (они так же выводятся циклом while возле каждой), при нажатии информация нужная попадает в базу для всех строк разом, а не для конкретно той возле которой была нажата кнопка
 
 Top
Мелкий Супермодератор
Отправлено: 23 Июля, 2018 - 11:52:58
Post Id



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


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


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




myvin пишет:
при нажатии информация нужная попадает в базу для всех строк разом

Потому что именно это поведение и написано у вас в скрипте.
Для каждой строки проверяется, пользователь нажал кнопку? (любую кнопку!) Если да, то обновим строку. Каждую строку.

Что делать:
miketomlin пишет:
Идентификатор конкретной записи указывайте в ссылке, в имени кнопки и т.п. Потом обрабатывайте запрос.

miketomlin пишет:
Значение $ident должно как-то передаваться в обработчик.

И обновлять только переданную с формы строку.


-----
PostgreSQL DBA
 
 Top
myvin
Отправлено: 23 Июля, 2018 - 12:01:11
Post Id


Новичок


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


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




Мелкий пишет:
myvin пишет:
при нажатии информация нужная попадает в базу для всех строк разом

Потому что именно это поведение и написано у вас в скрипте.
Для каждой строки проверяется, пользователь нажал кнопку? (любую кнопку!) Если да, то обновим строку. Каждую строку.

Что делать:
miketomlin пишет:
Идентификатор конкретной записи указывайте в ссылке, в имени кнопки и т.п. Потом обрабатывайте запрос.

miketomlin пишет:
Значение $ident должно как-то передаваться в обработчик.

И обновлять только переданную с формы строку.

В том то всё и дело, что не получается почем то. Обновляется либо с самой нижней строки, независимо от того, на какую кнопку нажал, либо сразу для всех, если пытаешся что-либо изменить в коде
(Добавление)
Мелкий пишет:
myvin пишет:
при нажатии информация нужная попадает в базу для всех строк разом

Потому что именно это поведение и написано у вас в скрипте.
Для каждой строки проверяется, пользователь нажал кнопку? (любую кнопку!) Если да, то обновим строку. Каждую строку.

Что делать:
miketomlin пишет:
Идентификатор конкретной записи указывайте в ссылке, в имени кнопки и т.п. Потом обрабатывайте запрос.

miketomlin пишет:
Значение $ident должно как-то передаваться в обработчик.

И обновлять только переданную с формы строку.

PHP:
скопировать код в буфер обмена
  1. echo '<form action="" method="post">';
  2. echo '<input type="submit" name="action">';
  3. echo '</form>';
  4. if(isset($_POST['action']))
  5. {
  6. mysql_query("UPDATE priemka SET status2=1 WHERE num_id = '$ident'",$db) or die(mysql_error());
  7. }  
  8. }
  9. echo '</table>';

и обновляется для всех строк разом, весь столбец в mysql
 
 Top
Мелкий Супермодератор
Отправлено: 23 Июля, 2018 - 12:19:55
Post Id



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


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


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




Непосредственно внутри table не может быть form, кстати говоря. Внутри td - может быть.
Ваш браузер может ошибочную разметку переписывать странных образом.

И, опять же, где вы передаёте желаемый num_id с формы?
Возможно, у вас опыт разработки десктоп-приложений и вы просто не понимаете, когда именно работает php и соответствующую модель запрос-ответ, а не интерактивного приложения?


-----
PostgreSQL DBA
 
 Top
myvin
Отправлено: 23 Июля, 2018 - 12:36:04
Post Id


Новичок


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


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




Мелкий пишет:
Непосредственно внутри table не может быть form, кстати говоря. Внутри td - может быть.
Ваш браузер может ошибочную разметку переписывать странных образом.

И, опять же, где вы передаёте желаемый num_id с формы?
Возможно, у вас опыт разработки десктоп-приложений и вы просто не понимаете, когда именно работает php и соответствующую модель запрос-ответ, а не интерактивного приложения?

Нет, опыта у меня совсем нет, тут я полный нуб пока что, как говорится не побоюсь этого слова - дно )). Поэтому, увы.. и никто не может конкретным примером показать вот как в моем случае
 
 Top
miketomlin
Отправлено: 23 Июля, 2018 - 13:55:21
Post Id


Частый гость


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


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




Я вам варианты приводил:
Цитата:

Для изменения и т.п. можно использовать чекбоксы, индивидуальные формы, кнопки с собственными обработчиками и т.п.

Значение $ident должно как-то передаваться в обработчик.


Но если нет знаний и опыта, то тут конечно остается надеяться только на примеры, хотя и это не совсем правильно, потому что пример != готовое решение. Лучше заплатите кому-нибудь, если нужно срочно и нет желания учиться в экстремально ускоренном режиме.
 
 Top
myvin
Отправлено: 30 Июля, 2018 - 19:24:02
Post Id


Новичок


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


Помог: 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