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 相关文章推荐
phpfans留言版用到的install.php
Jan 04 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
PHP利用str_replace防注入的方法
Nov 10 PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
深入理解PHP内核(一)
Nov 10 PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
Aug 23 PHP
微信公众号实现会员卡领取功能
Jun 08 PHP
Laravel 创建指定表 migrate的例子
Oct 09 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 adodb连接mssql解决乱码问题
2009/06/12 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
使用Python抓取模板之家的CSS模板
2015/03/16 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
Django中的静态文件管理过程解析
2019/08/01 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
python opencv如何实现图片绘制
2020/01/19 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
薪酬专员岗位职责
2014/02/18 职场文书
幼教求职信
2014/03/12 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
参赛口号
2014/06/16 职场文书
社区服务活动报告
2015/02/05 职场文书
2015年商场工作总结
2015/04/27 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书