无限极分类常用的是递归,但是比较不好理解,其实可以用数据库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. 设计模式原来如此-单例模式(Singleton Pattern)

    简单介绍一下我对Singleton的理解,说的不好请大家多多指点. 单例模式的简单定义就是确保一个类只有一个实例,并提供一个全局访问点. 单例模式有哪些用处呢? 有一些对象其实我们只需要一个,比方说: ...

  2. 51Nod 1239 欧拉函数前n项和 杜教筛

    http://www.51nod.com/Challenge/Problem.html#!#problemId=1239 AC代码 #include <bits/stdc++.h> #de ...

  3. PV、PVC、StorageClass讲解

    PV.PVC.StorageClass讲解 为了方便开发人员更加容易的使用存储才出现的概念.通常我们在一个POD中定义使用存储是这样的方式,我们以hostpath类型来说: apiVersion: v ...

  4. 洛谷——P2919 [USACO08NOV]守护农场Guarding the Farm

    P2919 [USACO08NOV]守护农场Guarding the Farm 题目描述 The farm has many hills upon which Farmer John would li ...

  5. 【面试】最容易被问到的N种排序算法!

    面试官:小明,是吧?你都知道哪些排序算法,哪几种是稳定排序? 小明:这个我有总结! 关于排序稳定性的定义 通俗地讲就是能保证排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同. ...

  6. ssm实现查看流程图

    jsp <!--显示数据列表--> <tbody id="TableData" class="dataContainer" datakey=& ...

  7. SPOJ 8222 Substrings

    题面 Description 给长度为 n 的字符串 S , 对任意的 L , 求长度为 L 的子串最多出现的次数. Input String S consists of at most 250000 ...

  8. javascript 函数初探 (五)--- 几种类型的函数

    即时函数: 目前我们已经讨论了匿名函数在回调时的应用.接下来,我们来看看匿名函数的另一种应用实例 --- javascript即时函数: 比如: ( function(){ alert('her'); ...

  9. ArcGIS 安装中,SQL的使用出现错误的解决

    1. SQL Server Configuration Manager 中 SQL Server Services出现 “远程调用失败..” 的问题 解决方法是卸载

  10. 仰视源代码,实现strcpy

    编程实现字符串的拷贝,不能用库函数. 一般的刚開始学习的人也许能写出来.可是要写的非常完美那就须要基本功了. char* strcpy(char* strDest, const char* strSr ...