[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод из базы по группам
Oskar
Доброго времени суток!
Итак имееться база с полями:
id | Name | Value | Group
1 | Мышка k23 | Что-то | 1
2 | Мышка Logitech | Что-то | 1
3 | Клава Microsoft | Что-то | 2
4 | Клава A4Tech | Что-то | 2
5 | Материнка m2n | Что-то | 3

Собственно вывод

<?php
$result = mysql_query("SELECT * FROM $dbtable");
while ($row = mysql_fetch_assoc($result)) {
echo $row["name"];
echo $row["value];
}
?>


Вывод этого я думаю понятен:)

А надо чтоб шло не подряд а с разделением на группы:
Мышки
..Список мышек в базе (выборка по групе 1)
Клавиатуры
..Список мышек в базе (выборка по групе 2)
и тд.
Хочеться сделать это без отдельного запроса под каждую групу типа:

echo "Мышки";
$result = mysql_query("SELECT * FROM $dbtable WHERE group=1");
..
тут вывод строк
echo "Клавиатуры";
$result = mysql_query("SELECT * FROM $dbtable WHERE group=2");
..
вывод строк

Как это реализовать на php чтоб он выводил название группы, а потом список того что в группе?
Как-то криво обьяснил, надеюсь помете о чем речь smile.gif



Спустя 8 минут, 54 секунды (20.04.2010 - 16:43) DedMorozzz написал(а):
order by
А запрос, в любом случае делай 1. Далее пыхом уже разбирай и сортируй результаты выборки.

Спустя 2 минуты, 51 секунда (20.04.2010 - 16:46) Oskar написал(а):
Нет, вы всеже не поняли smile.gif
Нужно чтоб перед выводом из базы выводилось название группы, а не просто отсортировать по группам.

Спустя 4 минуты, 10 секунд (20.04.2010 - 16:50) Oskar написал(а):
Т.е никак не сделать? Должно же как-то быть более адекватно, если групп допустим 50, это значит мне надо 50 селектов сделать, и если я хочу новую группу добавть то это опять код изменять?

Спустя 3 минуты, 40 секунд (20.04.2010 - 16:54) vagrand написал(а):
2-а запроса:
1. Выборка всех групп;
2. По id выбранных групп выборка всех товаров через IN ();

А потом раскидываешь товары по группам

Спустя 35 секунд (20.04.2010 - 16:54) DedMorozzz написал(а):
ага, ну смотри метод который первым пришёл в голову:
берём название группы, запоминаем и записываем в эчо, далее рисуем 1ю строку этой группы. Далее 2я строка сравниваеться с 1й, если група та же - дописываем ниже 2ю строку, если отличаеться, тогда заголовком название групы и пишем эту строку. Как-то так. Надеюсь мысль донёс, хотя сомневаюсь. Вобщем если не понял поподробнее распишу

Спустя 43 секунды (20.04.2010 - 16:55) DedMorozzz написал(а):
выборку всего отсортировано по группам делаем сразу и единожны

Спустя 2 минуты, 46 секунд (20.04.2010 - 16:58) Oskar написал(а):
Ребят, если не сложно покажите как это должно выглядеть в коде, я в php всеже новичек, потому и пишу в этой ветке:)

Спустя 2 минуты, 48 секунд (20.04.2010 - 17:01) DedMorozzz написал(а):
В смысле за тебя написать решение задачи? Дык тогда точно не та ветка...алгоритм всегда подскажем иль поправим, там, где будет ошибка. Но сделать - ветка работа

Спустя 5 минут, 47 секунд (20.04.2010 - 17:06) Oskar написал(а):
Я не прошу решения, я прошу подсказки ввиде простейшего примера.. Просто очень тяжко обьяснять это гуглу, уже 2 день))

Спустя 11 минут, 55 секунд (20.04.2010 - 17:18) vagrand написал(а):
Хех, дружище, ты даже поленился зарегатся на форуме, а хочешь каких-то кодов чтоб тебе написали.

Спустя 2 минуты, 52 секунды (20.04.2010 - 17:21) Oskar написал(а):
Злые вы) Незарегился потому что сомневался что помогут..думаю так оно и оказалось, чтож и на том спасибо. Удачи!

Спустя 7 минут, 38 секунд (20.04.2010 - 17:29) vagrand написал(а):
Тебе помогли советом.

Спустя 1 час, 31 минута, 39 секунд (20.04.2010 - 19:00) DeeKeiD написал(а):
$res	=	mysql_query("SELECT * FROM `categories` ORDER BY `id` ASC");
while ($cat = mysql_fetch_array($res))
{
echo $cat['name'];
$res2 = mysql_query("SELECT * FROM `tovari` WHERE `group` = '". $cat['id'] ."' ORDER BY `id` ASC");
while($tovar = mysql_fetch_array($res2))
{
echo $tovar['name'].' '.$tovar['price'];
}
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.