Вывод в несколько колонок

regi

Новичок
Вывод в несколько колонок

Что-то сижу и сделать не могу :)

Делаю запрос к бд "SELECT id, size, tire_type FROM tire_sizes";
Получаю, к примеру, такие данные:
id size tire_type
1 66x 1
2 36x 2
3 1c6x 1
4 256x 4
5 1v6x 2
6 156x 2
7 с6x 3

Необходимо сформировать таблицу, где колонками будут являться tire_type, и вывести size или id, это не имеет значения :)
то есть:
1 | 2 | 3 | 4
66x | 36x| c6x | 256x
1с6x |1v6x|
| 156x|

Вот не пойму, как сделать, помогите :) в поиске поискал, там другие вопросы про вывод в колонки )

-~{}~ 29.05.06 22:49:

Пытаюсь сформировать массив, чтобы потом пройтись по нему foreach'ом вот так:
$i = $k = 0;
while($row = $db->fetch_array($result)){
$i++;
if($i%4 == 0) $k++;
$arr[$k][$row['tire_type']]['size'] = $row['size'];
$arr[$k][$row['tire_type']]['id'] = $row['id'];

Это, понятное дело, неверно. Так как, естественно, запрос не выдает записи в порядке(tyre_type) 1 2 3 4 1 2 3 4 1 2 3 4.
У меня есть некоторые идеи, но они, как мне кажется, слишком громоздки для данной задачи.
 

MadGreen

meninweb
выводишь в обычную таблицу и кладешь монитор набок :)

а вообще очень похоже на транспонирование матрицы... я бы написал функцию по формулам вышки...
 

Maxxon

Новичок
Двойным запросом?
Сначала выбираешь tyre_type, рисуешь <td>, затем вторым запросом по каждому tyre_type выбираешь остальные данные (условие WHERE), причем ставя группировку (GROUP BY tyre_type). Это если таблицы не очень большие...
 

SelenIT

IT-лунатик :)
regi

А так: $arr[$row['tire_type']][] = array('size' => $row['size'],
'id' => $row['id']); ?

Но с какой-то строки все равно, скорее всего, пойдут пропуски...

Maxxon
GROUP BY - абсолютно мимо. И вообще одного запроса больше чем достаточно
 

regi

Новичок
Нет, ваш вариант не получилось применить.
Сейчас буду пытаться сформировать массив, в котором в каждом ключе $arr['ключ'] будут доступны все ['tire_type']. То есть типа того:
$arr[0][1] = 'my_size1';
$arr[0][2] = 'my_size6fdg2';
$arr[0][3] = 'my_size12';
$arr[0][4] = '';
$arr[1][1] = 'my_sizetrh2cv';
$arr[1][2] = 'my_sizzxve2nbv;
и т.д.
 

Mishanja

Новичок
Если я все правильно понял, то вам надобно в итоге получить таблицу. Где 1 колонка - id, 2 - type, 3 - size.

Я обычно после запроса делаю так:

$tablica="<table>";

while(list($id, $type, $size)=mysql_fetch_row($result))
{
$tablica.="
<tr>
<td>$id</td>
<td>$type</td>
<td>$size</td>
</tr>";
}
$table.="</table>";

echo $table;
 

MadGreen

meninweb
ну ты думешь тут люди не могут понять как в браузер вывести данные из элементарного запроса к бд?

прочитай первый вопрос еще раз...
сорри за офтоп...
 

hermit

Новичок
Транспонировать можно вот так
PHP:
$req = array();
$req[] = array('id'=>1,'size'=>'r1');
$req[] = array('id'=>2,'size'=>'r2');
$req[] = array('id'=>3,'size'=>'r3');
$req[] = array('id'=>4,'size'=>'r4');
$req[] = array('id'=>5,'size'=>'r5');

$new = array();
foreach ($req as $row){
	foreach ($row as $key=>$value){
		$new[$key][] = $value;
	}
}
А потом уже выводишь как хочешь =)
 
Сверху