php 递归实现无限极分类和排序_php 无限极分类以及使用递归实现的排序方法
至于添加删除之类的功能我就不多写了!仔细看看就知道这么用了.
难的是显示方面
希望高手扩展一下!
这是类
代码如下:<?php
/*========================================================
类名:catalog
功能:无限分级类
方法:
树形显示分类
catalog_show($id) //参数$id 递归调用
流程:找到父分类为0所有根分类-> 一直递归取得所有分类并显示
添加分类
catalog_add($uid,$name) //$uid 父id //$name 分类名
流程:依据$uid,在此id下添加一个新子id
删除分类
catalog_del($uid)//参数 $uid 数要删除的分类
修改分类
catalog_set($id,$name) //参数 $id 要修改的分类 //参数 $name 新的分类名
变量:
$config //数据库信息-> host,user,pass,dbname
$catalog_dbname //分类数据库名
数据库:
catalog_id //分类的自然序号
catalog_uid //分类的父分类
catalog_name //分类名
catalog_path_number //亲缘树数字形式 0:1:2
catalog_path_char //亲缘树字符形式 分类1:分类1.1:分类1.1.1
========================================================*/
class catalog{
var $config;
var $catalog_dbname;
var $links;
private function connect(){
$this->links = mysql_connect($this->config['host'],$this->config['user'],$this->config['pass']) or die("错误: 第".LINE."行
".mysql_error());
mysql_select_db($this->config['dbname'],$this->links);
mysql_query("SET NAMES gb2312");
}
function catalog_show($uid = 0){
$this->connect();
$sql = "Select * FROM ".$this->catalog_dbname. "
Where catalog_uid = ". $uid ."
orDER BY catalog_id ";
$result = mysql_query($sql,$this->links) or die("错误: 第".LINE."行
".mysql_error());
if(mysql_num_rows($result) > 0){
while ($row = mysql_fetch_assoc($result)){
if($this->sun_catalog($row['catalog_id'])){//判断有没有子分类
$cata_img = "";
}else{
$cata_img = "";
}
$path = explode(":",$row['catalog_path_number']);
if(count($path) > 1){
for($i=1;$i
$path_img .= "";
}
}
echo $path_img.$cata_img;
echo "";
echo $row['catalog_name']."
";
$path_img = "";
if($this->sun_catalog($row['catalog_id'])){
$hidden_p = "style='display:none'";
echo "
";
$this->catalog_show($row['catalog_id']);
echo "
";
}
}
}
}
private function sun_catalog($uid){//判断是否有子分类
$sql = "Select * FROM ".$this->catalog_dbname. "
Where catalog_uid = ". $uid ."
orDER BY catalog_id ";
$result = mysql_query($sql,$this->links) or die("错误: 第".LINE."行
".mysql_error());
if(mysql_num_rows($result) > 0){
return true;
}else{
return false;
}
}
function catalog_add($uid,$name){
//获取父id的亲缘树
$this->connect();
$sql = "Select * FROM ".$this->catalog_dbname."
Where catalog_id = '".$uid."'";
$result = mysql_query($sql,$this->links)
or die("错误: 第".LINE."行
".mysql_error());
$row = mysql_fetch_assoc($result);
$fid_path_number = $row['catalog_path_number'];//id的数字亲缘树
$fid_path_char = $row['catalog_path_char'];//id的字符亲缘树
//插入数据 先插入行->再找到最新插入的id, 在依据这个id进行修改
$sql = "Insert INTO ".$this->catalog_dbname."(catalog_uid,catalog_name)
VALUES(".$uid.",'".$name."')";
$result = mysql_query($sql,$this->links)
or die("错误: 第".LINE."行
".mysql_error());
$catalog_id = mysql_insert_id();//获取自己的id
$catalog_path_number = $fid_path_number.":".$catalog_id;//得到自己的数字亲缘数
$catalog_path_char = $fid_path_char.":".$name;//得到自己的字符亲缘数
$sql = "Update '".$this->catalog_dbname."'
SET
catalog_path_number = '".$catalog_path_number."',
catalog_path_char = '".$catalog_path_char."'
Where
catalog_id = ".$catalog_id;
mysql_query($sql,$this->links)
or die("错误: 第".LINE."行
".mysql_error());
}
function catalog_del($id){
$this->connect();
$sql = "Delete FROM ".$this->catalog_dbname."
Where catalog_id = ".$id;
mysql_query($sql,$this->links)
or die("错误: 第".LINE."行
".mysql_error());
}
function catalog_set($id,$name){
$this->connect();
$sql = "Update ".$this->catalog_dbname."
SET
catalog_name = '".$name."'
Where
catalog_id = ".$id;
mysql_query($sql,$this->links)
or die("错误: 第".LINE."行
".mysql_error());
}
}
?>
下面主要介绍了php无限极分类递归排序实现方法,通过一个简单的递归函数实现无限递归分类排序,是非常实用的技巧,需要的朋友可以参考下function order ($array,$pid=0){
$arr = array();
foreach($array as $v){
if($v['pid']==$pid){
$arr[] = $v;
$arr = array_merge($arr,order($array,$v['id']));
}
}
return $arr;
}
php 递归实现无限极分类和排序_php 无限极分类以及使用递归实现的排序方法相关推荐
- php mysql 双条件排序_php – 是否有通过匹配多个条件进行排序的SQL技术?
如果我理解正确,看起来您可以在ORDER BY中使用表达式,其方式类似于给出以下Stack Overflow帖子的接受答案: 因此,您的查询可能如下所示: SELECT imageID FROM .. ...
- 无限极分类php简单,创建无限极分类树型结构的简单方法
先上效果图 顶级分类其实就是一级分类,二级分类也叫作一级分类的子分类,在这个基础上,子分类还可以拥有子分类,这样就构成了无限极分类. 接下来看具体实现的代码: 一.在控制器中按字段查询,查询出所有分类 ...
- 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)
常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...
- php分类程序,PHP无限分类实现程序_PHP教程
1.数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类:2.数据库设计通过特定格式进行排列,然后使用mysql查询关键函数:concat.程序实现比较简单 首先我们假设有这样的一 ...
- php无限级分类是什么意思,PHP 无限级分类(递归)
网上有很多,这是我自己做测试用的 $arr = array( array('id'=>1,'name'=>'电脑','pid'=>0), array('id'=>2,'name ...
- php无极分类非递归_php实现无限级分类(递归方法)
相信很多学php的很多小伙伴都会尝试做一个网上商城作为提升自己技术的一种途径.各种对商品分类,商品名之类的操作应该是得心应手,那么就可以尝试下无限级分类列表的制作了. 到网上一搜php无限极分类,很多 ...
- DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台、刷题集合、问题为导向的十大类刷题算法(数组和字符串、栈和队列、二叉树、堆实现、图、哈希表、排序和搜索、动态规划/回溯法/递归/贪心/分治)总
DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台.刷题集合.问题为导向的十大类刷题算法(数组和字符串.栈和队列.二叉树.堆实现.图.哈希表.排序和搜索.动态规划/回溯法/递归/贪心/分治)总 ...
- R语言:排序、筛选以及分类汇总操作
在Excel中我们可以很方便的对数据进行排序.筛选.分类汇总等基本操作,R语言中没有这种傻瓜式的一键操作,如何才能完成这种操作? 一.排序 1.单变量序列排序 单变量序列的排序常用到rank.sort ...
- 通讯录排序 (20分)_算法入门篇:简单的排序算法
作者:dorseyCh来源:http://www.imooc.com/article/264180 很久之前有过一次面试,被问到一个问题,能不能写一个冒泡排序?说实话,尽管在这之前曾经写过不少比这个更 ...
最新文章
- 雷军深情告白:在我心里,武汉大学是全球最好的大学
- angular微信支付实际url地址不同
- Docker Swarm集群搭建
- python标准库有多强大_Python标准库——走马观花
- 最通俗易懂的乐观锁与悲观锁原理及实现
- HH SaaS电商系统的商品类目设计
- poj-2528线段树练习
- android 水印背景功能,Android 给View添加剧复的文字水印背景 相似钉钉通信录的背景效果...
- pycharm:一直indexing,怎么解决?
- Ubuntu设置终端相对短路径
- java-实战java高并发程序设计-ch2java并行程序基础
- 使用Clip Converter网站下载Yotube视频
- 离线安装linux的gcc,nvidia等错误
- python循环语句打印输出1-10_python_不用循环打印1-1000
- 风变编程python 知乎_风变编程python到底怎么样?可以自学吗?
- TPS5430DDAR高输出电流PWM转换器
- [官方Flink入门笔记 ] 五、客户端操作
- 计算机规划语句,有关规划人生的句子
- 清华大学鲍橒计算机1999,《最强大脑》观察员学历:鲍橒清华,王峰武大,DR魏非211...
- 如何使用Facebook进行选品使用