要实现无限极分类,数据库建表是关键。
表结构中至少需要三个字段,如果想避免递归循环,那么需要四个字段。
1. id ,当前数据的唯一标识;
2. typename ,类型名称;
3. parentid , 当前类型的上一层父类型的id;
4. path , 其中存储当前类型的id和它所有父级类型的id。
这些id之间采用“-”隔开。
5. 当通过以下sql语句就可以实现,相同顶级类下的信息都在一起集中显示。
select * from 表名 where 条件 order by path;
例如:
2088shop商城购物系统是商城系统中功能最全的一个版本:非会员购物、商品无限级分类、不限商品数量、商品多级会员定价、上货库存、Word在线编辑器、订单详情销售报表、商品评论、留言簿、管理员多级别、VIP积分、会员注册积分奖励、智能新闻发布、滚动公告、投票调查、背景图片颜色更换、店标上传、版权联系方式修改、背景音乐(好歌不断)、广告图片支持Flash、弹出浮动广告、搜索引擎关健词优化、图文友情联
一个非常简单清晰简单的无极限分类范例,带缩进效果,只需查询一次数据表,然后递归遍历结果集,就可以了,要在php中实现栏目缩进显示可以参考一下。
$sql = 'select * from cat order by cat_id desc';
$list = $db->getAll($sql);
$list = getLevelCat($list);
function getLevelCat($catlist, $parent_id='0', $html=' ', $level='0'){
$arr = array();
foreach($catlist as $val){
if($val['parent_id']==$parent_id){
$val['html'] = str_repeat($html,$level);
$val['level'] = $level;
$arr[] = $val;
$arr = array_merge($arr, getLevelCat($catlist, $val['cat_id'], $html, $level+1));
}
}
return $arr;
}
短短几行代码,比较清晰,也比较好用。
相关推荐:








