打开数据库那就不写了。
前几天刚写了一个。你看下
/* 表结构
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找到对应员工的工资,相加
可追问
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)