Помогите при помощи пхп упорядочить данные из таблицы

V
На сайте с 04.04.2007
Offline
75
372

Помогите используя процедурный интерфейс mysqli корректно составить запрос и напечатать данные из таблицы такого вида:

поле1 поле2

-----------------------

марка1 самсунг

марка2 самсунг

марка3 сони

марка4 самсунг

марка5 сони

марка6 асус

марка7 сони

марка8 асус

...

в формате:

марка1, марка2, марка4

марка3, марка5, марка7

марка6, марка8

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

doctorpc
На сайте с 12.07.2009
Offline
112
#1

Можно в запросе сделать order by поле2, поле1.

Во время вывода в php в цикле условием перехода на новую строку будет не равенство предыдущего производителя текущему.

V
На сайте с 04.04.2007
Offline
75
#2

doctorpc, спасибо, иногда не зная основ и возможностей как "order by поле2, поле1" бывает трудновато )

Получилось вот что:

$query = "SELECT * FROM models ORDER BY manufacturer, model";

$result = mysqli_query($link, $query);

while($row = mysqli_fetch_array($result)) {

echo $row['model'];

}

Все в одну строку, хотя по индусски сделать как надо для меня не проблема. Но как упорядочить по алфавиту модели для каждого производителя? Может кто подскажет?

doctorpc
На сайте с 12.07.2009
Offline
112
#3
Vadya:

Все в одну строку, хотя по индусски сделать как надо для меня не проблема. Но как упорядочить по алфавиту модели для каждого производителя? Может кто подскажет?

По идее должно было упорядочить внутри каждой группы, для этого вы и делаете сортировку по двум полям, включая model

Покажите, что получилось.

А чтобы не было в одну строку, то самое простое

$prev_manufacturer = '';

while($row = mysqli_fetch_array($result)) {

if ($prev_manufacturer != $row["manufacturer"]) {

echo "<br/>"; // перенос строки

}

echo $row['model'];

$prev_manufacturer = $row['manufacturer'];

}

V
На сайте с 04.04.2007
Offline
75
#4

Да, действительно сортирует. Все дело было в ночных затуплениях. doctorpc, спасибо за помощь

F9
На сайте с 13.04.2008
Offline
104
#5

В MySQL еще вот так можно:

SELECT GROUP_CONCAT(model ORDER BY model ASC SEPARATOR ', ')
FROM table
GROUP BY firma;

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий