вывод таблицей

ShVad

JSmart CMS
вывод таблицей

Помогите с выводом категорий.
В БД категрии хранятся так:
id / main_id / название

если категория основная то main_id пустая, если под-категория уазывается в main_id, ID основной категории
Как упорядочить вывод категорий чтобы выводилась основная, потом подкатегории?
Сейчас такой код вывода Вот сайт :
PHP:
$catlist = $db->query("SELECT * FROM " . PREFIX . "_files1 WHERE 1 ORDER BY id");
    while ($row_cat = mysql_fetch_array($catlist)){
      $catid = $row_cat[id];
      $main_id = $row_cat[main_id];
      if ($main_id == ""){$pr = "<br><b>$row_cat[name]:</b>";}
	  else{$pr = "<a href=\"\files/$row_cat[id]\">$row_cat[name]</a> -";}
	  $catpage.= "$pr ";}
 

20066temp

Новичок
я бы использовал рекурсию

PHP:
$catlist = $db->query("SELECT * FROM " . PREFIX . "_files1 WHERE 1 ORDER BY id"); 

while ($row_cat = mysql_fetch_array($catlist)) $rows_cat[] = $row_cat;

function draw_menu($rows, $main_id = '') {
foreach ($rows as $k => $row) {
if ($row['main_id'] === $main_id) {
echo ...;
draw_menu($rows, $row['id']);
}
}
}

draw_menu($rows_cat);
 

ShVad

JSmart CMS
не работает

-~{}~ 18.11.06 13:26:

может в запросе както указать условие вовода?
 

HraKK

Мудак
Команда форума
Выбираешь вначале основные категории
$catlist = $db->query("SELECT * FROM " . PREFIX . "_files1 WHERE main_id=0 ORDER BY id");

потом проверяешь если подкатегории зависящие от этой категории рекурсивно. если есть вывести.

вот и все.
 

ShVad

JSmart CMS
Можно подробней
Я в рекурсивносте еще не разбираюсь
 

HraKK

Мудак
Команда форума
образно напишу.
PHP:
function drawmenu($menu_array)
{
// Some draw element
}

function getCat($main_id)
{
    $catlist = $db->query("SELECT * FROM " . PREFIX . "_files1 WHERE main_id=$main_id ORDER BY id");
    while($catarray = mysql_fetch($catlist))
    {
        drawmenu($catarray);
        getCat($catarray['id']);
    }
}

getCat(0);
 

ShVad

JSmart CMS
Попытаюсь сделать

-~{}~ 22.11.06 17:55:

не получается
а запросом можно сгруппировать?
 
Сверху