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 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
php巧获服务器端信息
Dec 06 PHP
一个简单的PHP&amp;MYSQL留言板源码
Jul 19 PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 PHP
php导出word格式数据的代码实例
Nov 25 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
php中使用url传递数组的方法
Feb 11 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
laravel按天、按小时,查询数据的实例
Oct 09 PHP
基于laravel belongsTo使用详解
Oct 18 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 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
咖啡与水的关系
2021/03/03 冲泡冲煮
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
Jquery截取中文字符串的实现代码
2010/12/22 Javascript
js防止表单重复提交实现代码
2012/09/05 Javascript
jquery放大镜效果超漂亮噢
2013/11/15 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
js登录弹出层特效
2014/03/07 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
python中assert用法实例分析
2015/04/30 Python
Python中join函数简单代码示例
2018/01/09 Python
python实现五子棋游戏
2019/06/18 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
Django重设Admin密码过程解析
2020/02/10 Python
python如何从键盘获取输入实例
2020/06/18 Python
python脚本第一行如何写
2020/08/30 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
2014年自我评价
2014/01/04 职场文书
高三地理教学反思
2014/01/11 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
2014班子成员自我剖析材料思想汇报
2014/10/01 职场文书
信用卡催款律师函
2015/05/27 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
php修改word的实例方法
2021/11/17 PHP