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运行环境配置的详解
Jun 04 PHP
ThinkPHP表单数据智能写入create方法实例分析
Sep 27 PHP
PHP5.3新特性小结
Feb 14 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
php用户密码加密算法分析【Discuz加密算法】
Oct 12 PHP
Zend Framework框架实现类似Google搜索分页效果
Nov 25 PHP
php+ajax简单实现全选删除的方法
Dec 06 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 PHP
PHP实现小程序批量通知推送
Nov 27 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
Jan 28 PHP
PHP高并发和大流量解决方案整理
Dec 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实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
php算法实例分享
2015/07/14 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
Javascript面向对象编程
2012/03/18 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
单击某一段文字改写文本颜色
2014/06/06 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
js实现旋转木马效果
2017/03/17 Javascript
javascript 玩转Date对象(实例讲解)
2017/07/11 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
Python的面向对象编程方式学习笔记
2016/07/12 Python
python实现微信远程控制电脑
2018/02/22 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
html5图片上传预览示例分享
2014/04/14 HTML / CSS
Aosom西班牙:家具在线商店
2020/06/11 全球购物
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
儿科护士自我鉴定
2013/10/14 职场文书
职业生涯规划书的格式
2013/12/29 职场文书
合伙协议书
2014/04/23 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
2014年体育部工作总结
2014/11/13 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
升学宴学生致辞
2015/09/29 职场文书