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


Posted in PHP onDecember 07, 2015

本文实例讲述了php实现smarty模板无限极分类的方法。分享给大家供大家参考,具体如下:

<?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.= "<option value=\"".$class_arr[$i][0]."\" selected=\"selected\">".$n.$class_arr[$i][1]."</option>\n";
      }else{
        $str.= "<option value=\"  ".$class_arr[$i][0]."\">".$n.$class_arr[$i][1]."</option>\n";
      }
      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页面加上这句就可以了
<select name="parent_id">
<option value='0'>顶级分类</option>
{$wuxian_class}
</select>

还有一个问题要注意 $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.= "<option value=\"".$arr[$i][0]."\" selected=\"selected\">".$n.$arr[$i][1]."</option>\n";
      }else{
        $str.= "<option value=\"  ".$arr[$i][0]."\">".$n.$arr[$i][1]."</option>\n";
      }
      dafenglei_select($arr,$m+1,$arr[$i][0],$index);
    }
  }
   return $str;
}

调用只需要这样就行了:

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

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

PHP 相关文章推荐
一个可查询所有表的“通用”查询分页类
Oct 09 PHP
自己动手做一个SQL解释器
Oct 09 PHP
PHP VS ASP
Oct 09 PHP
新闻分类录入、显示系统
Oct 09 PHP
使用php4加速网络传输
Oct 09 PHP
php 缓存函数代码
Aug 27 PHP
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
Nov 18 PHP
用PHP书写安全的脚本代码
Feb 05 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
Nov 05 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
PHP number_format函数原理及实例解析
Jul 14 PHP
学习php设计模式 php实现单例模式(singleton)
Dec 07 #PHP
学习php设计模式 php实现桥梁模式(bridge)
Dec 07 #PHP
学习php设计模式 php实现装饰器模式(decorator)
Dec 07 #PHP
PHP函数func_num_args用法实例分析
Dec 07 #PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 #PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 #PHP
学习php设计模式 php实现建造者模式
Dec 07 #PHP
You might like
PHP.MVC的模板标签系统(五)
2006/09/05 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
jQuery实现自定义事件的方法
2015/04/17 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
js禁止表单重复提交
2017/08/29 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
使用JS获取页面上的所有标签
2018/10/18 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python多线程多进程实例对比解析
2020/03/12 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
老师自我鉴定范文
2013/12/25 职场文书
婚礼司仪主持词
2014/03/14 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
逃课检讨书
2015/01/26 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
react antd实现动态增减表单
2021/06/03 Javascript
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL
AJAX实现省市县三级联动效果
2021/10/16 Javascript
深入理解go缓存库freecache的使用
2022/02/15 Golang