php 无限分类,支持缓存分类树

//这个是后台管理当中的分类列表页

//包含无限分类

include ROOT.'include/tree.class.php';

//声明无限分类

$tree = new tree();

//设置缓存目录

$tree->cDir = ROOT.'cache/class/';

//读入分类缓存

$tree->getCache('class');

//获取缓存

$rootArray = $tree->nodes;      //分类信息在写入缓存之前,就已经按照顺序排列好了,不需再次生成分类树,可以拿来直接进行输出
复制代码//只有在修改数据库中的分类表时才需要重新生成分类树

//包含无限分类

   include ROOT.'include/tree.class.php';

   //声明无限分类

   $tree = new tree();

   //设置缓存目录

   $tree->cDir = ROOT.'cache/class/';

   //查询数据库,返回分类的ID,名称,父类3个字段

   $db->select('all','class','id,name,parent');

   //遍历结果集,并压入无限分类

   while ($row = $db->record('all'))

   {

    $tree->newNode($row['id'],$row['name'],(int)$row['parent']);    //父类ID需要为数字

   }

   //生成分类树,并写入缓存

   $tree->putCache('class');
复制代码//另一种更简便的重写缓存方式,该代码是删除分类页中的

//包含无限分类

include ROOT.'include/tree.class.php';

//声明无限分类

$tree = new tree();

//设置缓存目录

$tree->cDir = ROOT.'cache/class/';

//读入分类缓存

$tree->getCache('class');

//是否存在该分类

if (isset($tree->nodes[$id]))

{

  //生成查询条件

  $condition = 'id='.$id;

  //获取该分类的子分类ID

  $childsId = $tree->getChildsId($id);   //如果存在子分类,改方法返回的是一个一维数组,值分别为各子分类的ID,如果不存在子分类,该方法返回false

  //如果存在子分类

  if ($childsId)

  {

   //如果子分类存在,连同子分类一同删除

   foreach ($childsId as $childId)

   {

    $condition .= ' or id='.$childId;  //生成删除条件

    //卸载无限分类中的条目

    unset($tree->nodes[$childId]);  //直接将分类树中对应ID的分类信息删除

   }

  }

  //开始删除

  $db->delete('class',$condition);

  //删除该分类在无限分类中条目

  unset($tree->nodes[$id]);

  //重写无限分类缓存

  $tree->putCache('class');

 

  //输出删除成功标记

  exit('OK');

} else {

  //不存在则输出错误消息

  exit('该分类不存在!');

}
复制代码

时间: 2024-10-24 03:29:42

php 无限分类,支持缓存分类树的相关文章

php无限分类, 支持输出树状图

<?php /** * 通用的树型类,可以生成任何树型结构 */ class tree { /** * 生成树型结构所需要的2维数组 * @var array */ var $arr = array(); /** * 生成树型结构所需修饰符号,可以换成图片 * @var array */ var $icon = array('│','├','└'); /** * @access private */ var $ret = ''; /** * 构造函数,初始化类 * @param array 2维

php通过分类列表产生分类树数组的方法

  这篇文章主要介绍了php通过分类列表产生分类树数组的方法,涉及php操作数组与分类节点的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php通过分类列表产生分类树数组的方法.分享给大家供大家参考.具体分析如下: 这里$list 为分类列表数组,键为分类 ID,值为分类节点对象,pid 为父分类 ID php代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 $tree = array(); foreach ($list as $id => $row) { $

php通过分类列表产生分类树数组的方法_php技巧

本文实例讲述了php通过分类列表产生分类树数组的方法.分享给大家供大家参考.具体分析如下: 这里$list 为分类列表数组,键为分类 ID,值为分类节点对象,pid 为父分类 ID php代码如下: $tree = array(); foreach ($list as $id => $row) { $pid = $row->pid; if ($pid == 0) { $tree[] = &$list[$id]; } else if (isset($list[$pid])) { $par

Magento中显示指定分类产品 子分类及分类产品数量

二次开发中经常遇到一种情况,就是判断一个分类是否属于某一个大的分类,而大的分类包括很多子分类成树状结构,基本的方法都是先获取大分类下的所有子分类的信息,然后再挨个比较看是否有ID和待定ID相等.一种用递归方法获取大分类所有的ID:第二种用队列等非递归的方法获取所有子分类ID,第二种明显性能要好一些. 本文在magento的模板文件里测试成功一个函数:输入一个分类的ID,将返回该分类下所有子分类(递归获取)的ID,组成一个数组返回.所用的方法为用队列实现的非递归方法:  代码如下 复制代码 /**

destoon实现调用当前栏目分类及子分类和三级分类的方法_php实例

调用当前栏目分类及子分类和三级分类是程序设计里常用的方法,本文就来详细讲述destoon实现调用当前栏目分类及子分类和三级分类的方法.具体操作如下: 在destoon中提供了如下的调用语句: 一级分类名: {$m[catname]} 二级分类名: {$c[catname]} 三级分类名: {$b[catname]} 具体调用示例如下: 一.直接调用分类名称和链接: {loop $maincat $i $m}<dl> {php $child = get_maincat($maincat, $CA

代码-数据库怎么建立有一级分类和二级分类的表?

问题描述 数据库怎么建立有一级分类和二级分类的表? 像这种的,麻烦给出代码 解决方案 三张表,一张是一类表,二张是二类表,由于每个类型你都要定义一个key,那么第三张表就是两类key的对应表,一对多 解决方案二: 其实一张表就可以实现无线级分类: Id pId name

azure-Windows Azure 国内版支持缓存么?

问题描述 Windows Azure 国内版支持缓存么? windows azure 国内版本的支持在云服务中启用一个CacheRole么? 解决方案 山寨版azure目前不支持cacherole 解决方案二: Hi, 目前中国版Azure中我们可以使用Windows Azure Caching来提供缓存服务,你可以建立专门的角色实例来提供Cache服务.,详细请参考:http://www.windowsazure.cn/zh-cn/develop/net/how-to-guides/cache

WordPress中获取指定分类及其子分类下的文章数目_php实例

获取特定分类文章数  有时候我们想获取某个分类(category)下的文章数目,以便在博客的某个地方显示出来.下面就提供几个获取特定分类的文章数的方法,你可以根据个人喜好选择: 方法一:      将以下PHP代码放置在主题目录下的functions.php中: function wt_get_category_count($input = '') { global $wpdb; if($input == '') { $category = get_the_category(); return

分类网站和分类搜索冲突开始

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 "因为中国三大航空公司决定了所有机票的价格,因此不同网站的机票价格基本一样."最近在业内出现了这样一个声音,而这一论断的影响正迅速波及到日常层面,因为它试图表述一种"机票准垄断"的现象.圈内人都知道这个人就是携程网范敏... 携程网炮轰"机票搜索"并不是没有原因的,由于携程网会员储备