当前位置:首页 > PHP教程 > php应用 > 列表

php+mysql无限级分类程序代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-07-29 09:05:29 浏览: 评论:0 

无限级分类主要就是数据库中表的存储,一个是父ID,一个是子ID通过他们来查询父级关系,然后出来我们想要的.

表结构:id字段为分类标识,name字段为分类名,father_id字段为所属父分类的id,path字段为分类路径(储存该分类祖先的集合),isdir判断是否是目录(1为是,0为否).

例1,代码如下:

  1. //$count为分类等级  
  2. sort_list($str,$fatherid,$count)  
  3. {  
  4. $rs = $this->sql->re_datas("select * from sort where father_id = fatherid");  
  5. $num = $this->sql->sql_numrows();  
  6. $i=0;  
  7. $n = 1;  
  8. while(isset($rs[$i]))  
  9. {  
  10. $name = "";  
  11. for($n = 1 ; $n < $count ; $n++)  
  12. {  
  13. $name.="│ ";  
  14. }  
  15. if($i+1==$num)  
  16. {  
  17. $name.="└─".$rs[$i][name];  
  18. }  
  19. else  
  20. {  
  21. $name.="├─".$rs[$i][name];  
  22. }  
  23. if($rs[$i][isdir])  
  24. {  
  25. $str.="<span style='color:#CCCCCC'>".$name."</span>";  
  26. }  
  27. else  
  28. {  
  29. $str.=$name";  
  30. }  
  31. $temp = $count+1;  
  32. $str = $this->sort_list($str,$rs[$i][id],$temp);  
  33. $i++;  
  34. }  
  35. return $str;  

其中$this->sql对象为sql操作类对象,re_datas()函数返回查到的数组,sql_numrows()函数返回查询到的数目.

调用方法:$sort_list = sort_list($sort_list,0,1);

实例上2,方法如下:

  1. id 编号 
  2. fid 父分类编号 
  3. class_name 分类名 
  4. path 分类路径,以 id 为节点,组成类似 ,1,2,3,4, 这样的字符串 
  5. ———————————————————————————- 
  6. 可以假设有如下的数据 
  7. id fid class_name path 
  8. —————————————————- 
  9. 1  0       分类1 ,       1, 
  10. 2  0       分类2 ,       2, 
  11. 3  1       分类1-1 ,    1,3, 
  12. 4  1       分类1-2 ,    1,4, 
  13. 5  2       分类2-1 ,    2,5, 
  14. 6  4       分类1-2-1 , 1,4,6, 
  15. —————————————————- 

代码如下:

  1. <?php      
  2. $sql=”SELECT * FROM tree order by path”;    
  3. $result=$nbs->Query($sql);    
  4. while($rows=$nbs->fetch_array($result)){    
  5.     if(substr_count($rows['path'],’,')>2){    
  6.         for($i=0;$i<(substr_count($rows['path'],’,')-2);$i++)    
  7.             echo ‘ ‘;    
  8.     }    
  9.     echo $rows['class_name'].’<br>’;    
  10. }    
  11. ?>     
  12. //代码如下 
  13. $conn = mysql_connect ( 'localhost''root''root' ); 
  14. mysql_select_db ( 'wanggou123'$conn ); 
  15. mysql_query ( 'set names UTF8' ); 
  16. $sql = "select id,concat(catpath,'-',id) as abspath,name from category order by abspath"
  17.  
  18. $query = mysql_query ( $sql ); 
  19. while ( $row=mysql_fetch_array($query)) { 
  20.  
  21. /** 
  22.    * 第一种展示方法 
  23. */ 
  24. /*$space = str_repeat ( '&nbsp;&nbsp;&nbsp;&nbsp;', count ( explode ( '-', $row ['abspath'] ) ) - 1 ); 
  25. echo $space . $row ['name'] . ' 
  26. ';*/ 
  27. /** 
  28.  第二种展示方法 
  29. */ 
  30. $space = str_repeat ( '——'count ( explode ( '-'$row ['abspath'] ) ) - 1 ); 
  31. $option .= '' . $space . $row ['name'] . '<Br>'
  32. echo $option
  33. exit(); 
  34. echo '<select name="opt">' . $option . '</select>'

Tags: php+mysql 无限级分类

分享到: