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 相关文章推荐
一个更简单的无限级分类菜单代码
Jan 16 PHP
收藏的一个php小偷的核心程序
Apr 09 PHP
mysql limit查询优化分析
Nov 12 PHP
Thinkphp多文件上传实现方法
Oct 31 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
May 21 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
php中bind_param()函数用法分析
Mar 28 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
php递归函数怎么用才有效
Feb 24 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
php&amp;java(一)
2006/10/09 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
Swoole源码中如何查询Websocket的连接问题详解
2020/08/30 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
canvas实现钟表效果
2017/02/13 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
Python的pycurl包用法简介
2015/11/13 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
营业员演讲稿
2013/12/30 职场文书
《乡愁》教学反思
2014/02/18 职场文书
学生手册评语
2014/05/05 职场文书
初中学校对照检查材料
2014/08/19 职场文书
庆祝教师节标语
2014/10/09 职场文书
工伤私了协议书范本
2014/11/24 职场文书
python 镜像环境搭建总结
2022/09/23 Python