无限极分类常用的是递归,但是比较不好理解,其实可以用数据库path,pid两个字段的设计来实现无限分类的功能

1、数据库设计

通过上图可以看出pid就是该栏目的父id,而path = 父path+pid;

2、php实现《树形查询》《逆向查询》以及给定栏目id《查询下一级》的方法:

$mysql = new MySQLi('localhost','root','','test');
$mysql->query("set names gb2312");
/**
* 获取无限分类列表(树形查询) 主要用于后台的栏目列表
*/
$sql = 'select ac_name,concat(path,"-",ac_id) as bpath from article_class order by bpath,ac_id';
$result = $mysql->query($sql);
while($row = $result->fetch_assoc()){
echo $row['ac_name'].'<br />';
}
echo '<hr />';
/**
* 指定分类获取全部的父类(逆向查询) 主要用于编辑文章时获取该文章的相关分类
*/
$ac_id = 10;
$sqlonly = 'select * from article_class where ac_id='.$ac_id;
$resultonly = $mysql->query($sqlonly);
$pclass = array();
$curclass = '';
while ($rowonly = $resultonly->fetch_assoc()){
$curclass = $rowonly['ac_name'];
$arrpaht = explode('-',$rowonly['path']);
$arrpaht = implode(',',$arrpaht); $sqlall = 'select * from article_class where ac_id in ('.$arrpaht.') order by ac_id'; $resultall = $mysql->query($sqlall);
while($rowall = $resultall->fetch_assoc()){
$pclass[] = $rowall['ac_name'];
}
}
array_push($pclass,$curclass);
echo '<pre>';
print_r($pclass);
echo '</pre>';
echo '<hr />';
/**
* 指定分类获取下一级分类 主要用于展开分类时显示下一级分类使用
*/
function getNextClass($ac_id){
global $mysql;
$sql = 'select * from article_class where pid='.$ac_id;
$resultnext = $mysql->query($sql);
while($rownext = $resultnext->fetch_assoc()){
echo $rownext['ac_name'].'<br />';
}
}
getNextClass(1);

3、相应的页面效果如下:

php不使用递归实现无限极分类的更多相关文章

  1. python 1 默写用递归实现无限极分类 2 默写用树实现无限极分类

    data=[ {"cat_id":3,"name":"沙河","parent_id":1}, {"cat_id ...

  2. java递归、js递归,无限极分类菜单表

    java-json import com.alibaba.fastjson.JSONObject; import java.util.ArrayList; import java.util.List; ...

  3. PHP实现无限极分类的两种方式,递归和引用

    面试的时候被问到无限极分类的设计和实现,比较常见的做法是在建表的时候,增加一个PID字段用来区别自己所属的分类 $array = array( array('id' => 1, 'pid' =& ...

  4. js实现无限极分类

    转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来 ...

  5. PHP无限极分类生成树方法,无限分级

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function g ...

  6. PHP无限极分类生成树方法

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,整理分享了. function genera ...

  7. 分享一个牛逼的PHP无限极分类生成树方法,巧用引用(转)

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function g ...

  8. php无限极分类递归与普通

    1. 递归 public function getInfo(){$data=$this->select();$arr=$this->noLimit($data,$f_id=0,$level ...

  9. Think PHP递归重新排序无限极子分类数组(递归无限极分类)

    Think PHP递归重新排序无限极子分类数组 // 递归重新排序无限极子分类数组 function recursive($array,$pid=0,$level=0){ $arr = array() ...

随机推荐

  1. Xamarin.Forms特殊的视图BoxView

    Xamarin.Forms特殊的视图BoxView   BoxView是Xamarin.Forms比较特殊的视图.该视图构建非常简单,其作用也很单一.它的作用就是构成一个特定颜色的色块.在界面设计中, ...

  2. 使用viewPage实现图片轮播

    概述 图片循环播放这种效果,在许多的场合都能看到,只要一打开各大主流网站的首页几乎都有一个这样的组件,它可以很显目的提供给用户最近最火热的信息.因为它应用得如此之广泛,今天,我们就来写一下这个组件. ...

  3. Lucene的基本应用

    import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; ...

  4. 别样JAVA学习(五)继承上(1.1)Object类toString()

    接下来说完equals以后,我们学习接下来的toString(), Java又觉得全部对象不光具有比較性, 还能使对象变成字符串被打印. 出现 曾经前面显示的是数组.如今显示的是这个对象所属的类. 紧 ...

  5. Word Ladder II——找出两词之间最短路径的所有可能

    Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from ...

  6. 本机上使用Three.js载入纹理

    怎样载入纹理 // 首先, 创建一个纹理 var mapUrl = "../images/molumen_small_funny_angry_monster.jpg"; var m ...

  7. Lightoj 1088 - Points in Segments 【二分】

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1088 题意: 有一维的n个点和q条线段.询问每条线段上的点有多少个. 思路:寻 ...

  8. 大型视频网站YouTube架构学习笔记

    http://www.kaiyuanba.cn/html/1/131/147/7540.htm这几天一直在关注和学习一些大型网站的架构,希望有一天自己也能设计一个高并发.高容错的系统并能应用在实践上. ...

  9. mysql 查询表索引的命令详解

    http://hi.baidu.com/wylinux/item/cbc458c2984381300831c651查看索引命令mysql> show index from tblname;mys ...

  10. iOS 私有库的使用

    最近项目说要用私有库 主要过程 创建两个库:  索引库   组件库 组件库  用git操作  比如更新代码 push   打tag等 索引库  存放组件的描述信息 也就是 .spec文件 这个文件和 ...