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下MYSQL limit的优化
Jan 10 PHP
hessian 在PHP中的使用介绍
Dec 13 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
php实现CSV文件导入和导出
Oct 24 PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 PHP
YiiFramework入门知识点总结(图文教程)
Dec 28 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
Laravel5权限管理方法详解
Jul 26 PHP
php弹出提示框的是实例写法
Sep 26 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处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
jQuery之网页换肤实现代码
2011/04/30 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
js的.innerHTML = &quot;&quot;IE9下显示有错误的解决方法
2013/09/16 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
python树的同构学习笔记
2019/09/14 Python
python使用scapy模块实现ping扫描的过程详解
2021/01/21 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
经贸日语专业个人求职信
2013/12/13 职场文书
模范教师事迹材料
2014/12/16 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
小学毕业教师寄语
2019/06/21 职场文书
创业计划书详解
2019/07/19 职场文书