php 无限级 SelectTree 类


Posted in PHP onMay 19, 2009
/* 
author: nick 
date: 2009.05.17 
功能:生成SeletTree 
属性: 
$result 结果集 
$id_field 自身id字段 
$parent_field 父类id字段 
$option_text 选项显示名称 
$select_name 下拉菜单的名称 
$elected 默认选中 
$no_top 是否需要顶层选项 
$level 层深度 
$parent_id 同层中的id 
*/ 
class SelectTree{ 
public $result; 
public $select_name; 
public $option_text; 
public $elected; 
public $id_field; 
public $parent_field; 
public $no_top; 
public $level; 
public $parent_id; 
public $getarray; 
function __construct($result,$id_field,$parent_field,$option_text,$select_name='',$elected=0,$no_top=0,$level=0,$parent_id=0){ 
$this->result =$result; 
$this->id_field =$id_field; 
$this->parent_field =$parent_field; 
$this->option_text =$option_text; 
$this->select_name =$select_name; 
$this->elected =$elected; 
$this->no_top =$no_top; 
$this->level =$level; 
$this->parent_id =$parent_id; 
$this->getarray =self::getArray(); 
} 
/* 
功能:返回Tree二维数组 
*/ 
function getArray(){ 
$arrays=array(); 
while($row=mysql_fetch_array($this->result)){ 
$arrays[$row[$this->parent_field]][$row[$this->id_field]]=$row; 
} 
return $arrays; 
} 
/* 
功能:获取SelectTree 
*/ 
function getSelectTree(){ 
$tree = '<select name="'.$this->select_name.'">'; 
if($no_top){ 
$tree .= '<option value="0">最顶层</option>'; 
} 
self::buildTree($this->getarray,&$tree,$this->id_field,$this->option_text,$this->selected,$this->level,$this->parent_id); //生成树状结构 
$tree .= '</select>'; 
return $tree; 
} 
/* 
功能:递归构建树状结构 
*/ 
function buildTree($array,&$tree,$option_value,$option_text,$selected,$level=0,$parent_id=0){ 
if(is_array($array[$parent_id])){ 
for($i=0;$i<$level;$i++) 
$space .= ' '; //选项缩进深度 
foreach($array[$parent_id] as $key => $value){ 
if($value[$option_value] == $selected){ 
$tree .= '<option value="'.$value[$option_value].'" selected="selected">'.$space.$value[$option_text]."</option>"; 
}else{ 
$tree .= '<option value="'.$value[$option_value].'">'.$space.$value[$option_text]."</option>"; 
} 
$tree .=self::buildTree($array,&$tree,$option_value,$option_text,$selected,$level+1,$key); 
} 
}else{ 
$tree .= ''; 
} 
} 
} 
/****************************************************************************/ 
header("CONTENT-TYPE:TEXT/HTML;CHARSET=UTF-8"); 
mysql_connect("localhost","root","root"); 
mysql_select_db("tree"); 
mysql_query('set names utf8'); 
$result = mysql_query("select * from tvmenu"); 
$tree=new SelectTree($result,'id','bid','name','tree'); 
echo $tree->getSelectTree();
PHP 相关文章推荐
多文件上传的例子
Oct 09 PHP
用文本文件制作留言板提示(上)
Oct 09 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
深入理解PHP中的count函数
May 31 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 PHP
PHP实现移除数组中为空或为某值元素的方法
Jan 07 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 PHP
PHP日期时间函数的高级应用技巧
May 16 #PHP
PHP 模拟登陆MSN并获得用户信息
May 16 #PHP
抓取YAHOO股票报价的类
May 15 #PHP
PHP 采集心得技巧
May 15 #PHP
DISCUZ 论坛管理员密码忘记的解决方法
May 14 #PHP
PHP获取当前文件所在目录 getcwd()函数
May 13 #PHP
php 购物车实例(申精)
May 11 #PHP
You might like
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
深入解析php模板技术原理【一】
2008/01/10 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
Bootstrap精简教程
2015/11/27 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
python使用thrift教程的方法示例
2019/03/21 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
Python 求数组局部最大值的实例
2019/11/26 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
关于python中remove的一些坑小结
2021/01/04 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
小班下学期评语
2014/05/04 职场文书
自我管理的活动方案
2014/08/25 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python