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 » » Вопросы новичков » Вывод данных из многомерного массива по заданому ключу

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

1. winddancer - 03 Ноября, 2019 - 02:36:25 - перейти к сообщению
Есть вывод из 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
2. LIME - 03 Ноября, 2019 - 03:40:11 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT subject FROM `task` WHERE id = 1
тут еще важно как вставлять сам ид
Ты гарантированно посадишь уязвимость если сам это будешь делать
Вот так хотя бы сделай и будет ОК.
PHP:
скопировать код в буфер обмена
  1. $query_task = mysqli_query($connect, "SELECT * FROM `task` WHERE id = " . (int)$id);
3. winddancer - 03 Ноября, 2019 - 03:43:10 - перейти к сообщению
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.
4. LIME - 03 Ноября, 2019 - 03:43:57 - перейти к сообщению
А еще нафиг не надо второй цикл в этом примере. Все что в фориче можно просто в вайле делать.
А для случая одного значения вообще без цикла. С телефона не удобно код писать.
(Добавление)
Так объясни тогда нормально задачу. Тебе надо для чего-то все данные а для другого чего-то отфильтровать определенный по полю?
5. winddancer - 03 Ноября, 2019 - 03:46:55 - перейти к сообщению
LIME пишет:
А еще нафиг не надо второй цикл в этом примере. Все что в фориче можно просто в вайле делать.
А для случая одного значения вообще без цикла. С телефона не удобно код писать.


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




Даааа, в точку. Для одной таблицы все, а для остальных только выборка по нужным параметрам
6. LIME - 03 Ноября, 2019 - 03:49:34 - перейти к сообщению
winddancer пишет:
Но хочу научиться делать все это одним запросом к бд
зачем? практически это не важно
или ты с целью изучения?
(Добавление)
вообще это возможно на sql сделать вообще без циклов
7. winddancer - 03 Ноября, 2019 - 03:52:41 - перейти к сообщению
LIME пишет:
winddancer пишет:
Но хочу научиться делать все это одним запросом к бд
зачем? практически это не важно
или ты с целью изучения?


Пишу для себя задачник и изучаю. Лично у меня вместо того, чтобы плодить файлы все в одном и разбито на вкладки.
В первой вкладке все задачи, а вторая под добавление/редактирование. Если есть GET параметр, тогда во второй вкладке подставляет нужные данные по Id. Но вкладок уже несколько.
Написать через where мог легко, но хочу научиться работать с циклами правильно, чтобы не плодить тонну мусора.
8. LIME - 03 Ноября, 2019 - 03:54:42 - перейти к сообщению
ладно не будем заморачиваться на тебе кусок кода и живи с этим
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
9. winddancer - 03 Ноября, 2019 - 03:57:49 - перейти к сообщению
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. }


Спасибо большое. Утром попробую до конца разобраться в этом Улыбка
Доброй ночи самаритянин.
10. LIME - 03 Ноября, 2019 - 03:58:08 - перейти к сообщению
это известный и признаный ресурс
не лично только мой совет
11. winddancer - 03 Ноября, 2019 - 03:58:09 - перейти к сообщению
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. }


Спасибо большое. Утром попробую до конца разобраться в этом Улыбка
Доброй ночи самаритянин.
12. LIME - 03 Ноября, 2019 - 03:59:31 - перейти к сообщению
не кашляй
ветренный танцор
13. winddancer - 03 Ноября, 2019 - 11:20:44 - перейти к сообщению
LIME пишет:
не кашляй
ветренный танцор


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

 

Powered by ExBB FM 1.0 RC1