首页 > 开发 > PHP > 正文

php+mysql实现无限级分类

2024-05-04 23:40:17
字体:
来源:转载
供稿:网友
这篇文章主要介绍了php+mysql实现无限级分类,一个php项目需要用到分类,动手制作了一个php无限极分类,感兴趣的小伙伴们可以参考一下
 

项目思路分析:一个PHP项目要用到分类,但不确定分几级,所以就想做成无限级分类。
一开始想是按以前一样,数据库建4个值,如下:
id: 自增   |   pid: 父类ID   |  xid: 排序ID   |  classname: 分类名称
后来想到这种在读取数据时和修改时比较不方便,而且在产品读取时尤其不便,于时改成了以下的方案:
在Mysql的表中新增了一个字段,现数据库如下:
表名 w_faqclass:   id: 自增   |   pid: 父类ID   |  xid: 排序ID   |  classname: 分类名称  |  rank:  等级
定义:
一级分类,pid 为 0 ,rank 为"/"
二级分类,pid 为 一级分类的id,rank 为"/一级分类的id/"
三级分类,pid 为 二级分类的id,rank 为"/一级分类的id/二级分类的id/"
依此类推...
1. 基础函数     
 

  1. /* 
  2. 利于递归返回已经进行了排序的无限级分类的数组 
  3. 不想用递归的话也可以用 like 来获取后再进行排序,我比较懒,就不写那种获取方式了,其实用 like 更好,推荐用那种方式 
  4. $datatable    : 数据表名 
  5. $startid    : 开始父类ID 
  6. $wheretColumns  :父类列名 
  7. $xColumns    : 排序列名 
  8. $xtype      : 排序方式 
  9. $returnArr    : 返回数组 
  10. */ 
  11. function ReadClass($datatable,$startid,$xtype,$returnArr){ 
  12.   $db    =  $datatable; 
  13.   $sid  =  $startid; 
  14.   $xtype  =  $xtype; 
  15.   $lu    =  $returnArr; 
  16.     
  17.   $sql  =  "select * from `".$db."` where `pid`='".$sid."' order by xid ".$xtype.";"
  18.   $cresult=  mysql_query($sql); 
  19.   if(mysql_num_rows($cresult)>0){ 
  20.     while($rs = mysql_fetch_array($cresult)){ 
  21.       $lunum = count($lu); 
  22.       $lu[$lunum]['id']    =  $rs['id']; 
  23.       $lu[$lunum]['pid']    =  $rs['pid']; 
  24.       $lu[$lunum]['rank']    =  $rs['rank']; 
  25.       $lu[$lunum]['classname']=  $rs['classname']; 
  26.       $lu[$lunum]['xid']    =  $rs['xid']; 
  27.         
  28.       $lu            =  ReadClass($db,$rs['id'],$xtype,$lu); 
  29.     } 
  30.   } 
  31.   return $lu; 
  32. /* 
  33. 查询某表中的某个值,只会返回一个值 
  34. $datatable    : 数据表名 
  35. $wherevalue    : 条件值 
  36. $selectColumns  : 查询列名 
  37. $whereColumns  : 条件列 
  38. */ 
  39. function SelectValue($datatable,$wherevalue,$selectColumns,$whereColumns){ 
  40.   $sql  =  "select `".$selectColumns."` from `".$datatable."` where `".$whereColumns."`='".$wherevalue."';"
  41.   $result  =  mysql_query($sql); 
  42.   while($rs = mysql_fetch_array($result)){ 
  43.     return $rs[$selectColumns]; 
  44.   } 
?
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表