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 相关文章推荐
把PHP安装为Apache DSO
Oct 09 PHP
剖析 PHP 中的输出缓冲
Dec 21 PHP
php miniBB中文乱码问题解决方法
Nov 25 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
一个简洁的PHP可逆加密函数(分享)
Jun 06 PHP
使用php验证复选框有效性的示例
Nov 13 PHP
windows7下安装php的php-ssh2扩展教程
Jul 04 PHP
PHP常用技术文之文件操作和目录操作总结
Sep 27 PHP
php解析xml方法实例详解
May 12 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
PHP中Trait及其应用详解
Feb 14 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
基于文本的留言簿
2006/10/09 PHP
php弹出对话框实现重定向代码
2014/01/23 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
js实现下一页页码效果
2017/03/07 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
nodejs中各种加密算法的实现详解
2019/07/11 NodeJs
Vue数字输入框组件的使用方法
2019/10/19 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
Python tkinter label 更新方法
2018/10/11 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Python pandas库中的isnull()详解
2019/12/26 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
Python编写单元测试代码实例
2020/09/10 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
18岁生日感言
2014/01/12 职场文书
导游个人求职信范文
2014/03/23 职场文书
出生公证书
2015/01/23 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android