עשיתי לך משהו קצת שונה.
PHP קוד:
all_categories('0');
function all_categories($id){
$sql="SELECT * FROM `categories` WHERE `category_id` ='$id' ORDER BY `id` DESC";
$result = mysql_query($sql) or die(mysql_error());
while( $row = mysql_fetch_object($result) ){
echo "<br>".get_name($row->id);
if($row->top==1) all_categories($row->id);
}
}
function get_name($id){
$row=mysql_fetch_array(mysql_query("SELECT `name` FROM `categories` WHERE `id`='$id'"));
return $row['name'];
}
אתה צריך להוסיף בזה עוד שורה top או שתעשה פונקציה שתחזיר אמת או שקר אם יש מתחת לקטגוריה עוד קטגוריה