заготовка для treemenu

irkprin

Новичок
Всем привет!

Написал SQL запрос, который выбирает информацию из 2-х таблиц proizvoditeli и tovari

PHP:
$query = "SELECT t.idt, t.tovar, t.alias, p.idp, p.title, p.alias, p.tovar FROM tovari AS t, proizvoditeli AS p WHERE t.tovar = p.tovar ORDER BY t.tovar, p.title ASC";			
$select =  mysql_db_query($db, $query) or die("Select Failed!");
При использовании цикла while в лоб получаю:

ламинат
Alloc
ламинат
Quick Step
.
.
и т.д.

3 вопроса:

1. Какой цикл уместнее здесь использовать (товаров будет много)?
2. Если использовать while, то как правильно склеить одинаковые товары к виду:

ламинат
Alloc
Quick Step
.
.
и т.д.
3. Как вычислить последний элемент массива каждой ветки в предложенном цикле, чтобы не нагружать сервер?
 

irkprin

Новичок
Поясню подробнее:

PHP:
$query = "SELECT t.idt, t.tovar, t.alias, p.idp, p.title, p.alias, p.tovar FROM tovari AS t, proizvoditeli AS p WHERE t.tovar = p.tovar ORDER BY t.tovar, p.title ASC";			
$select =  mysql_db_query($db, $query) or die("Select Failed!");

while ($row = mysql_fetch_array($select))
			
	{
		echo $row['tovar'].'<br />';
		echo $row['title'].'<br />';
	}
получаю:

Ламинат
Alloc
Ламинат
Classen
Ламинат
Egger
Ламинат
Kronopol
Ламинат
Quick Step
Ламинат
Tarkett
Ламинат
Tatami
Линолеум
Gerflor
Линолеум
IVC
Линолеум
Juteks
Линолеум
Ликонт

как вывести этот список в виде:


Ламинат
Alloc
Classen
Egger
Kronopol
Quick Step
Tarkett
Tatami
Линолеум
Gerflor
IVC
Juteks
Ликонт

?
 

AmdY

Пью пиво
Команда форума
тебе в цикле нужно формировать иерархический массив типа
PHP:
array(
    '<товар_ид>' => array(
        array('<производитель1', ....другие поля производителя..),
        array('<производитель2', ....другие поля производителя..)
   )
)
 

irkprin

Новичок
тебе в цикле нужно формировать иерархический массив типа
PHP:
array(
    '<товар_ид>' => array(
        array('<производитель1', ....другие поля производителя..),
        array('<производитель2', ....другие поля производителя..)
   )
)
а потом снова запускать цикл чтобы вывести его на экран?
 

С.

Продвинутый новичок
Ну если тебе циклов жалко, то можешь и в одном. Однако современные правила хорошего тона в программировании диктуют, что данные готовить надо в одном месте, а визуализировать их в другом.
 

irkprin

Новичок
всем спасибо!

проблему решил так:

PHP:
while ($row[] = mysql_fetch_array($select))
$irow = $irow + 1;
		for($i = 0; $i < $irow; $i++)  	
	{
				
		if ($row[$i]['tovar'] == $row[$i-1]['tovar']) { echo '&nbsp;&nbsp;&nbsp;'.$row[$i]['title'].' <br />';  }
			
                          else {	
				echo '<b>'.$row[$i]['tovar'].'</b><br />';
				echo '&nbsp;&nbsp;&nbsp;'.$row[$i]['title'].' <br />';
			         }	
		
	}
 
Сверху