Создание динамического меню...

Slam

Новичок
Создание динамического меню...

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

PHP:
TABLE `tbl_cats` (
  `c_id` int(11) NOT NULL auto_increment,    /* id */
  `c_name` varchar(50) NOT NULL default '',  /*имя пункта меню*/
  `c_parent_id` int(11) default NULL,        /* id родительского пункта меню */
  `c_order` tinyint(11) NOT NULL default '0',/* порядок отображения пунктов меню */ 
  `c_enable` enum('Y','N') NOT NULL default 'N',
  PRIMARY KEY  (`c_id`)
)
По данным таблицы необходимо построить меню.
Меню строится на основе списка (<ul></ul>).
Например, вот что нужно получить в итоге обработки таблицы.

PHP:
<ul id="bars">
<li><a class="t0" href="#">Software</a>
	<ul style="height: auto;" class="">
		<li><a href="http://www.some.com/au/macosx/">Mac OS Tiger</a></li>
			<li><a href="http://www.some.com/au/">Final Cut Studio</a></li>
			<li><a href="http://www.some.com/au/aperture/">Aperture</a></li>
			<li><a href="http://www.some.com/au/ilife/">iLife 05</a></li>
			<li><a href="http://www.some.com/au/iwork/">iWork 05</a></li>
		</ul>
	</li>
	
	<li><a class="t0" href="#">Desktops</a>
		<ul style="height: auto;" class="">
			<li><a href="http://www.some.com/au/macmini/">Mac mini</a></li>
			<li><a href="http://www.some.com/au/imac/">iMac</a></li>
			<li><a href="http://www.some.com/au/powermac/">Power Mac</a></li>
		</ul>
	</li>
</ul>
То есть, обычный список, и каждый дочерний пункт меню идет как вложенный список.

В таблице, пункт, который не имеет родительских пунктов в поле ‘c_parent_id’ содержит 0, а дочерние – на оборот содержат id своих родительских пунктов, то есть тех к которым принадлежат.

Я написал вот такой код для обработки таблицы, но в результате получаю только один пункт вместо всех которые удовлетворяют условию.

PHP:
$i = 0;
$j = 0;

    // Перебираем все елементы массива в цикле
    while (list($id_cat, $name_cat, $parent_cat) = mysql_fetch_row($this->sql_res))
    {
    	$category_id = $id_cat;
    	
// I. Проверка является ли рубрика дочерней
    	if ( $parent_cat == 0 )
    	{
    		// Если нет (то есть, рубрика родительская)
    		// - сохраняем информацию о категории в массив
    		$arr = array($category_id=>array($i=>0));
    		$i = 0; // зануляем счетчик
    				
    		// Ищем рубрики у которых parent_id такой как у текущей - id
    		while (list($id, , $parent_id) = mysql_fetch_row($this->sql_res))
    		{
    			if ($parent_id == $category_id)
    			{
    				echo $category_id;
    				// Эта рубрика дочерняя по отношению к текущей
    				$arr = array($parent_id => array($j => $id));
    				$j++;    									
}
    		}
    	}
    	else // Рубрика является дочерней
    	{
    		// Проверка, не занесена ли рубрика уже в массив
    		// Перебор уже имеющихся в новом массиве рубрик
    		while (list($parent_id, $child_id) = $arr)
    		{
    			// Не занесена ли рубрика уже в массив
    			if ($child_id != $category_id)
    			{
    				// Нет, не занесена
    				// тогда добавляем елемент в массив
    				$arr = array($parent_id => array($j => $category_id));
    				$j++;
    			}
    		}
    	}
В результате, я хочу получить массив такого типа
[Parent_menu1_id]
[child1_item_id]
[child2_item_id]
[child3_item_id]

[Parent_menu2_id]
[child1_item_id]
[child2_item_id]
[child3_item_id]

И после этого обработать его и вывести меню.

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

Заранее благодарю, с уважением Slam.
 
Сверху