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]   

> Без описания
winddancer
Отправлено: 03 Ноября, 2019 - 02:36:25
Post Id



Гость


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


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




Есть вывод из SQl. Хочу ограничить количество обращений к БД и работать уже внутри циклами.

Так вот. После while каким образом задействовать foreach, чтобы отфильтровать значения по ID? Шерстил и гугл и stackoverflow, но не смог найти.

P.S.вот фрагмент кода, чтобы было ясно

PHP:
скопировать код в буфер обмена
  1.  
  2. $query_task = mysqli_query($connect, "SELECT * FROM `task`");
  3. while ($res = mysqli_fetch_assoc($query_task)) {
  4.                 $datas[] = $res;
  5.         }
  6. if (!empty($datas)) {
  7.                 foreach($datas as $get_data):
  8.                         $ata = $get_data['subject']; <- Здесь должно быть только subject с ID 1.
  9.                 endforeach;
  10.         }
  11.  


P.P.S. Вывод сего кода хорошо понимаю, что перебирает всю таблицу и будет выводить все Subject, но нужно только 1 с необходимым ID
 
 Top
LIME
Отправлено: 03 Ноября, 2019 - 03:40:11
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT subject FROM `task` WHERE id = 1
тут еще важно как вставлять сам ид
Ты гарантированно посадишь уязвимость если сам это будешь делать
Вот так хотя бы сделай и будет ОК.
PHP:
скопировать код в буфер обмена
  1. $query_task = mysqli_query($connect, "SELECT * FROM `task` WHERE id = " . (int)$id);
 
 Top
winddancer
Отправлено: 03 Ноября, 2019 - 03:43:10
Post Id



Гость


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


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




LIME пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT subject FROM `task` WHERE id = 1
тут еще важно как вставлять сам ид
Ты гарантированно посадишь уязвимость если сам это будешь делать
Вот так хотя бы сделай и будет ОК.
PHP:
скопировать код в буфер обмена
  1. $query_task = mysqli_query($connect, "SELECT * FROM `task` WHERE id = " . (int)$id);

Спасибо за ответ, но это не то, что мне надо. У меня несколько выводов под разными параметрами и WHERE не катит.
Мне необходимо именно вытащить все и после этого доить данные так как надо в каждом foreach.
 
 Top
LIME
Отправлено: 03 Ноября, 2019 - 03:43:57
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




А еще нафиг не надо второй цикл в этом примере. Все что в фориче можно просто в вайле делать.
А для случая одного значения вообще без цикла. С телефона не удобно код писать.
(Добавление)
Так объясни тогда нормально задачу. Тебе надо для чего-то все данные а для другого чего-то отфильтровать определенный по полю?
 
 Top
winddancer
Отправлено: 03 Ноября, 2019 - 03:46:55
Post Id



Гость


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


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




LIME пишет:
А еще нафиг не надо второй цикл в этом примере. Все что в фориче можно просто в вайле делать.
А для случая одного значения вообще без цикла. С телефона не удобно код писать.


Грубо говоря, у меня несколько табличек. В каждой свой параметр из той же бд. И допустим в одну табличку надо вставить все данные с Id1, в другую допустим с id 10, и таких табличек допустим 2-3.
Но хочу научиться делать все это одним запросом к бд




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

(Отредактировано автором: 03 Ноября, 2019 - 03:48:05)

 
 Top
LIME
Отправлено: 03 Ноября, 2019 - 03:49:34
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




winddancer пишет:
Но хочу научиться делать все это одним запросом к бд
зачем? практически это не важно
или ты с целью изучения?
(Добавление)
вообще это возможно на sql сделать вообще без циклов
 
 Top
winddancer
Отправлено: 03 Ноября, 2019 - 03:52:41
Post Id



Гость


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


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




LIME пишет:
winddancer пишет:
Но хочу научиться делать все это одним запросом к бд
зачем? практически это не важно
или ты с целью изучения?


Пишу для себя задачник и изучаю. Лично у меня вместо того, чтобы плодить файлы все в одном и разбито на вкладки.
В первой вкладке все задачи, а вторая под добавление/редактирование. Если есть GET параметр, тогда во второй вкладке подставляет нужные данные по Id. Но вкладок уже несколько.
Написать через where мог легко, но хочу научиться работать с циклами правильно, чтобы не плодить тонну мусора.
 
 Top
LIME
Отправлено: 03 Ноября, 2019 - 03:54:42
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




ладно не будем заморачиваться на тебе кусок кода и живи с этим
PHP:
скопировать код в буфер обмена
  1. $query_task = mysqli_query($connect, "SELECT * FROM `task`");
  2. while ($res = mysqli_fetch_assoc($query_task)) {
  3.     $datas[] = $res;
  4.     if (1 === $res['id']) {
  5.         $datas_for_table[] = $res;
  6.     }
  7. }

(Добавление)
http://www[dot]sql-ex[dot]ru/index.php
если дойдешь до 20 упражнения считай что умеешь нормально sql
 
 Top
winddancer
Отправлено: 03 Ноября, 2019 - 03:57:49
Post Id



Гость


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


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




LIME пишет:
ладно не будем заморачиваться на тебе кусок кода и живи с этим
PHP:
скопировать код в буфер обмена
  1. $query_task = mysqli_query($connect, "SELECT * FROM `task`");
  2. while ($res = mysqli_fetch_assoc($query_task)) {
  3.     $datas[] = $res;
  4.     if (1 === $res['id']) {
  5.         $datas_for_table[] = $res;
  6.     }
  7. }


Спасибо большое. Утром попробую до конца разобраться в этом Улыбка
Доброй ночи самаритянин.
 
 Top
LIME
Отправлено: 03 Ноября, 2019 - 03:58:08
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




это известный и признаный ресурс
не лично только мой совет
 
 Top
winddancer
Отправлено: 03 Ноября, 2019 - 03:58:09
Post Id



Гость


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


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




LIME пишет:
ладно не будем заморачиваться на тебе кусок кода и живи с этим
PHP:
скопировать код в буфер обмена
  1. $query_task = mysqli_query($connect, "SELECT * FROM `task`");
  2. while ($res = mysqli_fetch_assoc($query_task)) {
  3.     $datas[] = $res;
  4.     if (1 === $res['id']) {
  5.         $datas_for_table[] = $res;
  6.     }
  7. }


Спасибо большое. Утром попробую до конца разобраться в этом Улыбка
Доброй ночи самаритянин.
 
 Top
LIME
Отправлено: 03 Ноября, 2019 - 03:59:31
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




не кашляй
ветренный танцор
 
 Top
winddancer
Отправлено: 03 Ноября, 2019 - 11:20:44
Post Id



Гость


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


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




LIME пишет:
не кашляй
ветренный танцор


Огромное спасибо. В 3 ночи сел дальше писать и до 5-и))))
То, что было надо :3
 
 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