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 相关文章推荐
Win2000+Apache+MySql+PHP4+PERL安装使用小结
Oct 09 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
php多任务程序实例解析
Jul 19 PHP
php基于str_pad实现卡号不足位数自动补0的方法
Nov 12 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
WIFI万能钥匙密码查询接口实例
Sep 28 PHP
Zend Framework教程之Resource Autoloading用法实例
Mar 08 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 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 session_start()出错原因分析及解决方法
2013/10/28 PHP
php中异常处理方法小结
2015/01/09 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
python pickle 和 shelve模块的用法
2013/09/16 Python
Python进行数据科学工作的简单入门教程
2015/04/01 Python
python实现手机通讯录搜索功能
2018/02/22 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
Python元组知识点总结
2019/02/18 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
应届毕业生简历自我评价
2014/01/31 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
师德师风个人整改措施
2014/10/27 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
锅炉工岗位职责
2015/02/13 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL