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. tovarz - 28 Марта, 2018 - 17:49:52 - перейти к сообщению
Здравствуйте.
Пример таблицы в phpmyadmin
id | title | group_id
1 | Кот | 0
2 |Рысь| 1
3 | Пес | 0
4 | Хомяк|0
5 | Лев | 1

Тут group_id=0 - домашние, group_id=1 - дикие
Хочу вывести на странице название групп (домашние/дикие), под каждой из которых выводятся животные, типа:
Домашние:
Кот, Пес, Хомяк
Дикие:
Рысь, Лев

Я так понимаю. надо сделать 2 запроса:
$ss=mysqli_query($sql, "SELECT * FROM table WHERE group_id=0");
while($rr=mysqli_fetch_array($ss)){
echo $rr['title'];
}
и
$ss=mysqli_query($sql, "SELECT * FROM table WHERE group_id=1");
while($rr=mysqli_fetch_array($ss)){
echo $rr['title'];
}

Можно ли обойтись одним запросом?
2. Строитель - 28 Марта, 2018 - 21:56:46 - перейти к сообщению
tovarz пишет:
Можно ли обойтись одним запросом?
Можно сначала сделать выборку, а потом средствами пхп "разложить" значения по своим местам.

Но если использовать PDO, то этот процесс можно автоматизировать. Я написал рабочий пример, вам нужно только прописать в начале скрипта параметры для доступа к вашей базе:
Спойлер (Отобразить)
В результате работы скрипта вы получите два отдельных массива - $homey (домашние животные) и $wild (дикие животные).
3. RizyaRU - 02 Июня, 2018 - 03:15:32 - перейти к сообщению
tovarz пишет:
Можно ли обойтись одним запросом?


CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `group_id`, GROUP_CONCAT(`title`) AS `title` FROM `phpmyadmin` GROUP BY `group_id`

 

Powered by ExBB FM 1.0 RC1