Держи функцию, которую я когда-то писал для этих целей:
$link - соед. с базой
$sqlTblCat - таблица, хранящая меню
my_mysql_query() - я ей ошибки обрабатывал
$href передаётся для формирования ссылки в меню
Хотя это всё не важно, думаю можно и так разобраться
PHP код:
function printTree($pid,$href) {
global $link;
global $sqlTblCat;
$ret='';
$query="SELECT * FROM $sqlTblCat WHERE pid='$pid' ORDER BY descName";
$result = my_mysql_query($query, $link) or die(mysql_die(__FILE__.': '.__LINE__.' in '.__FUNCTION__,false,true,true));
if (mysql_num_rows($result) > 0)
{
$ret.=("<UL>\n");
while ( $row = mysql_fetch_array($result) ) {
$ret.=("<LI>\n");
$ret.="<A HREF='$href"."?id=".$row['id']."'>".htmlspecialchars(stripslashes($row["descName"]), ENT_QUOTES)."</A><br>\n";
$ret.="</li>\n";
$ret.=printTree($row['id'],$href);
}
$ret.=("</UL>\n");
}
return $ret;
}
Вызов:
PHP код:
printTree(0,$HTTP_SERVER_VARS['PHP_SELF'])
База:
Код:
CREATE TABLE `cathegories` (
`id` int(11) NOT NULL auto_increment,
`pid` int(11) NOT NULL default '0',
`descName` varchar(255) NOT NULL default ''
)