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 相关文章推荐
解析PayPal支付接口的PHP开发方式
Nov 28 PHP
php邮件发送,php发送邮件的类
Mar 24 PHP
php中用foreach来操作数组的代码
Jul 17 PHP
探讨:使用XMLSerialize 序列化与反序列化
Jun 08 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
迁移PHP版本到PHP7
Feb 06 PHP
PHP借助phpmailer发送邮件
May 11 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
php图像处理函数imagecopyresampled用法详解
Dec 02 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
Feb 28 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与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
php自动加载的两种实现方法
2010/06/21 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
php中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
php中preg_replace_callback函数简单用法示例
2016/07/21 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
PHP对象相关知识总结
2017/04/09 PHP
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
javascript操作数组详解
2014/12/17 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
django Serializer序列化使用方法详解
2018/10/16 Python
django的settings中设置中文支持的实现
2019/04/28 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
迟到检讨书400字
2014/01/13 职场文书
培训主管岗位职责
2014/02/01 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
酒店温馨提示语
2015/07/14 职场文书
联村联户简报
2015/07/21 职场文书
申请吧主发表的感言
2015/08/03 职场文书
小学英语教学反思范文
2016/02/15 职场文书
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL