php实现smarty模板无限极分类的方法

本文和大家分享的主要是php中 实现smarty 模板无限极分类相关内容,一起来看看吧,希望对大家 学习php有所帮助。

<?php

$conn = mysql_connect("localhost","admin","admin");

mysql_select_db("people_shop",$conn);

mysql_query("SET NAMES ’UTF-8’");

$class_arr= array();

$sql = "select * from ecs_brand ORDER BY brand_id asc ";

$query = mysql_query($sql); while($row = mysql_fetch_array($query)){

$class_arr[] =  array($row[’brand_id’],$row[’brand_name’],$row[’parent_id’],$row[’sort_order’]);

} function  dafenglei_select($m,$id,$index){

global $class_arr;

global $str;

$n = str_repeat("    ",$m);

// $n = $m;

for($i=0;$i<count($class_arr);$i++){

if($class_arr[$i][’2’]==$id){

if($class_arr[$i][’0’]==$index){

$str.= "file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsAF4F.tmp.png

} else{

$str.= "file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsAF50.tmp.png

}

dafenglei_select($m+1,$class_arr[$i][0],$index);

}

}

return $str;

}

$aa = dafenglei_select(1,0,0);?>< select name="parent_id">< option value=’0’> 顶级分类 option><?php

echo $aa;?>select>

如果是用smarty 的话

再加一个

$smarty->assign(’wuxian_class’,$aa);

在html 页面加上这句就可以了

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsAF51.tmp.png

< option  value=’0’> 顶级分类 option>

{$wuxian_class}

还有一个问题要注意 $str 必须要是 global 行的,否则会有错误。

无限极分类的延伸:

我们可以写一个函数,每次调用这个函数的时候我们只需要传入这个数组及数据,就可以调用了,下面是我写的一个方法。

function  dafenglei_select(& $arr=array(),$m,$id,$index){

// global $class_arr;

global $str;

$n = str_repeat("    ",$m);

// $n = $m;

for($i=0;$i<count($arr);$i++){

if($arr[$i][’2’]==$id){

if($arr[$i][’0’]==$index){

$str.= "file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsAF52.tmp.png

} else{

$str.= "file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsAF53.tmp.png

}

dafenglei_select($arr,$m+1,$arr[$i][0],$index);

}

}

return $str;

}

调用只需要这样就行了:

$aa = dafenglei_select($class_arr,0,0,0);

希望本文所述对大家基于smarty 模板的 PHP 程序设计有所帮助。

来源:Linux 视野

时间: 2024-10-24 16:04:02

php实现smarty模板无限极分类的方法的相关文章

PHP无限极分类生成树方法

你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,整理分享了. function generateTree($items){ $tree = array(); foreach($items as $item){ if(isset($items[$item['pid']])){ $items[$item['pid']]['son'][] = &$items[$item['id']]; }els

夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)

我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是出现了,但是没有向我们平常时候见到的无限极分类一样噢,一般比如分类 多多,分类下面的 好多美女啊 是多多的下级分类,那么好多美女啊他前面是有几个空格之类的隔开, 那么我们就需要在model层里面对她进行排序的设置了: <?php namespace Admin\Model; use Think\Mo

PHP无限极分类详谈

当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,让我们怎么学习嘛,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了. 比如一个category表:有id, name, pid, sort 就这四个简单的字段,不要太复杂了. id    name          pid      sort1     PHP           0       1

thinkphp5.0无限极分类及格式化输出

首先我们来看数据表 从上图中可以发现,中国下有贵州,北京两个子节点,而北京有天安门一个子节点,纽约的子节点是"纽约的子类". 从pid为0看出,中国和纽约是顶级节点. 因为贵州的pid是1,而中国的id为1,所以贵州的父节点是中国,至于type字段,可以不用管,只是我自己的项目需要. 可以发现,着写数据在数据表中是无序的,并没有我们想象中的层次结构分明并且可读性很好. 那么,当使用无限极分类之后数据的输出是怎样的呢?如下: 这样就能够很清晰的看出他们的层次结构了,那么这样的效果在thi

PHP无限极分类,多种方法|很简单,这里说的很详细,其它地方说的很不好懂

当你学习php无限极分类的时候,大家都觉得一个字"难"我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,让我们怎么学习嘛,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了. 比如一个category表:有id, name, pid, sort 就这四个简单的字段,不要太复杂了. id    name          pid      sort1     PHP           0   

PHP实现无限极分类的两种方式

无限极分类说简单点就是一个类可以分成一个分子类,然后一个子类又可以分另一个子类这样无限分下去,就是好象windows可以新建一个文件夹,然后在这个文件夹里又可以建一个文件夹,PHP要实现无限极分类有两种常用的做法,递归和引用算法. 数据表(两种实现方式都是一样的数据表): 建数据表的时候,增加一个字段(一般用pid作为字段名)用来区别自己所属的分类,字段值为其父级的主键id,0为一级分类. 1.引用算法: (1)获取一级分类 获取pid为0的数据,返回给模板,循环展示. 循环展示新增id属性,其

PHP无限极分类

概述 ??在实际工作中,经常要用到无限极分类.如导航表等等.到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了.下面介绍两种无限极分类:递归,使用引用 数据准备 //初始化原始数据(id=>编号,name=>显示名称,pid=>父级目录id,sort=>排序顺序) $data[1] = array('id'=>'1','name'=>'一级目录A','pid'=>'0','sort'=>'1

php递归无限极分类

递归无限级分类有几种形式,我这里只举例比较常用的三种: 第一种:返回有排序的数组: <?php $data = array( 1 => array( 'id' => 1, 'pid' => 0, 'user_name' => 'one', ), 2 => array( 'id' => 2, 'pid' => 1, 'user_name' => 'two', ), 3 => array( 'id' => 3, 'pid' => 1, '

递归与无限极分类

在函数内部调用本身,且在调用时要做判断. 例:输出1~9 function deeploop(&$i=1){   //引用传值,防止递归时从1开始 echo  $i; $i++; if($i < 10){             //条件判断,防止无限递归 deeploop($i); } } 2.无限极分类原理:每次分类都需要记录它的父级id,如果是顶级,则父级id为0,通过父级id,一层一层往下查. 首先从数据库中取出结果集,把结果集中的pid与顶级的pid开始,然后确定顶级父级.依次往下