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采集相关教程之一 CURL函数库
Feb 15 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
php天翼开放平台短信发送接口实现方法
Dec 22 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
Sep 30 PHP
CodeIgniter配置之database.php用法实例分析
Jan 20 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 PHP
phpStorm+XDebug+chrome 配置详解
Apr 01 PHP
YII框架http缓存操作示例
Apr 29 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 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
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
JavaScript 事件记录使用说明
2009/10/20 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
深入浅析Python代码规范性检测
2020/07/31 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
财务会计实习报告体会
2013/12/20 职场文书
安全施工标语
2014/06/07 职场文书
2014年科技工作总结
2014/11/26 职场文书
入党团支部推荐意见
2015/06/02 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android
python manim实现排序算法动画示例
2022/08/14 Python