Thấy thỉnh thoảng anh em lại gặp vấn đề về menu đa cấp và viết đệ qui, mấy hôm nay viết shopping cart nên có chút kinh nghiệm share với anh em
Về database, tạo menu có cấu trúc đơn giản như sau:
table categories: id,parentid,title
id parentid title
1 0 Menu 1
2 0 Menu 2
3 1 Menu 1.0
4 1 Menu 1.1
5 3 Menu 1.0.0
6 3 Menu 1.0.1
yêu cầu khi tạo thành menu phải có dạng
Menu 1
Menu 1.0
Menu 1.0.0
Menu 1.0.1
Menu 1.1
Menu 2
Phần code:
<?php
function Menu($parentid = 0,$space = '--', $trees = NULL){
if(!$trees) $trees = array();
$sql = mysql_query("SELECT * FROM php_category WHERE cat_parentid = ".intval($parentid));
while($rs = mysql_fetch_assoc($sql)){
$trees[] = array('id'=>$rs['cat_id'],'title'=>$space.$rs['cat_title']);
$trees = Menu($rs['cat_id'],$space.'--',$trees);
}
return $trees;
}
$Menu = Menu(0);
$str = '';
foreach($Menu as $k=>$rs) $str .= '<a href="#menu='.$rs['id'].'">'.$rs['title'].'</a>';
echo $str;
?>
Ngoài ra hàm này có thể hiển thị được cây thư mục của 1 category bất kỳ, ví dụ: $Menu = Menu(3) sẽ hiển thị cây thư mục của các menu con của category có id = 3
Chúc thành công
Tác giả:TG
Webmaster
http://phpbasic.com
