PHP MYSQL 的多级分类树结构

PHP MYSQL 的多级分类树结构,第1张

打开数据库那就不写了。

前几天刚写了一个。你看下

/* 表结构

CREATE TABLE `lh_categroy` (

`id` int(10) NOT NULL auto_increment,

`parentid` int(6) NOT NULL,

`name` varchar(255) NOT NULL,

`keyword` varchar(255) NOT NULL COMMENT '关键字',

`des` varchar(255) NOT NULL COMMENT '描述',

PRIMARY KEY  (`id`),

UNIQUE KEY `name` (`name`)

) ENGINE=MyISAM AUTO_INCREMENT=44 DEFAULT CHARSET=utf8

*/

/**

* 获得所有栏目排序后的列表

* @return array

*/

function getAllOrderColumns($id = 0) {

global $columns

$result = array()

if ($id) $result[$id] = $columns[$id]

foreach ($columns as $column) {

if ($column['parentid'] == $id) {

$column['level'] = 0

$result[$column['id']] = $column

getColumns($columns, $column['id'], $result, 1)

}

}

return $result

}

function getColumns($columns, $cid, &$result, $l = 1) {

foreach ($columns as $c) {

if ($c['parentid'] == $cid) {

$c['level'] = $l

$result[$c['id']] = $c

getColumns($columns, $c['id'], $result, $l + 1)

}

}

}

$sql = 'select * from lh_categroy'

$query = mysql_query($sql)

while($row = mysql_fetch_assoc($query)){

$columns[]=$row

}

$fenlei = ''

$fenlei =  '<select name="cid" style="width:200pxheight:25px">

<option value="0">请选择分类</option>'

foreach(getAllOrderColumns() as $v){

$v[name] = $v[level] ? ($v[level]==1 ? '&nbsp&nbsp|-'.$v[name]:'&nbsp&nbsp&nbsp|-'.$v[name]) : $v[name]

$fenlei .= "<option value='$v[id]'>$v[name]</option>"

}

$fenlei .= '</select>'

echo $fenlei

首先,这个是mysql的事情,如果不需要动态创建数据表,建议直接用mysql创建好数据库后再用调用。

数据表设计可以用一个表就好,字段

id,name(名称),level(分级,0是省,1是市,2是区),parent_id(上级id,省的上级为0即可),这样就可以了,比如要查广东省广州市下面的区,就where level=2 and parent_id=广州市的id,以此类推。

你的表2有上下级关系的话,就缺少一个字段存储这个关系,加一个pnode(parent)字段,把这个领导上一级的领导id存进去,如果没有上一级就存0

然后先从表2获取pnode是领导5id的行,根据得出来结果,从表1找到对应员工的工资,相加

可追问


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7601289.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存