十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在数据库建立的时候就已经分好了 给每个栏目一个p_id
公司主营业务:成都做网站、网站设计、外贸营销网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出衢江免费做网站回馈大家。
最上层菜单p_id为0
子菜单p_id为上级菜单的id
查询的时候就根据id和pid来查找
找出所有就按照递归来找
function selectReferee($rid){
//查询该推荐人是否满3个人
$sql = "SELECT * FROM talbe_name WHERE `id` = ".$rid;
$res = array();//$res为查询结果
if(count($res)=3){
foreach ($res as $k=$v){
selectReferee($v['id']);//如果该推荐人满了3个人,则递归查询下面的所有人
}
}else{
return $rid;//返回推荐人id
}
}
大概的思路就是这样,主要是一个递归,你自己完善,测试一下
这个需要用程序递归处理
$dept_tree=[];
$deptid = 19;
while($deptid0){
//假设你的数据库查询是这个函数,根据条件直接查询一条记录返回
$dept = getone('department',['id'=$deptid]);
//防止数据丢失出错
if(empty($dept))break;
array_unshift($dept_tree,$dept);
$deptid = $dept['dep_parentid'];
//如果需要防止数据错乱出现递归,这里可以判断一下
if(in_array($deptid,array_column($dept_tree,'id') !== false){
//说明职位关系乱了,有死循环
break;
}
}
可以把这段代码封装成一个函数使用。这里就不论从哪一级开始查询了,总是能把该职位及其上级全部查询出来,按顺序放进数组里
$dept_tree 类似这样
array(
0=array(
'id'=1,
'dep_parentid'=0,
'dep_name'='顶级',
),
1=array(
'id'=2,
'dep_parentid'=1,
'dep_name'='国灿金融',
),
2=array(
'id'=4,
'dep_parentid'=2,
'dep_name'='招聘部',
),
3=array(
'id'=19,
'dep_parentid'=4,
'dep_name'='经理助理',
),
)
?php
if(!defined("INCLUDE_MYSQL_OK")) {
define("INCLUDE_MYSQL_OK","");
class MySQL_class {
var $debug = true;
var $db,
$id,
$result, /* 查询结果指针 */
$rows, /* 查询结果行数 */
$fields, /* 查询结果列数 */
$data, /* 数据结果 */
$arows, /* 发生作用的纪录行数目 */
$iid; /* 上次插入操作后,可能存在的"AUTO_INCREMENT"属性字段的值,如果为"0",则为空 */
var $user, $pass, $host, $charset;
/*
* 请注意用户名和密码是否正确
*/
function Setup ($host, $user, $pass, $charset='utf8') {
$this-host = $host;
$this-user = $user;
$this-pass = $pass;
$this-charset = $charset;
}
function Connect ($db = "") {
global $CFG_MYSQL_INFO;
if (!$this-host) {
$this-host = $CFG_MYSQL_INFO["host"];
}
if (!$this-user) {
$this-user = $CFG_MYSQL_INFO["user"]; /* 在这里作修改 */
}
if (!$this-pass) {
$this-pass = $CFG_MYSQL_INFO["passwd"]; /* 在这里作修改 */
}
if (!$this-charset) {
$this-charset = "utf8"; /* 在这里作修改 */
}
if (empty($db))
$this-db = $CFG_MYSQL_INFO["database"];
else
$this-db = $db;
$this-id = @mysql_connect($this-host, $this-user, $this-pass);
if (!$this-id)
return false;
$this-SelectDB($this-db); /* 定位到指定数据库 */
$this-Query("SET NAMES '".$this-charset."'");
return true;
}
function Close(){
@mysql_close($this-id);
}
function SelectDB ($db) {
if(!@mysql_select_db($db, $this-id))
return false;
else
return true;
}
function Begin () {
$this-result = @mysql_query("START TRANSACTION WITH CONSISTENT SNAPSHOT", $this-id);
if (!$this-result)
return false;
return true;
}
function Commit () {
$this-result = @mysql_query("COMMIT", $this-id);
if (!$this-result)
return false;
return true;
}
function Rollback () {
$this-result = @mysql_query("ROLLBACK", $this-id);
if (!$this-result)
return false;
return true;
}
function Escape ($str) {
$escstr = mysql_escape_string($str);
return $escstr;
}
# 普通查询功能,主要用于返回结果是多条记录的情况
# 请使用 Fetch 方法取得每条记录信息
function Query ($query) {
$this-result = @mysql_query($query, $this-id);
if (!$this-result)
{
if ($this-debug)
MySQL_ErrorMsg ("不能执行查询(query): $query");
else
return false;
}
$this-rows = @mysql_num_rows($this-result);
$this-fields = @mysql_num_fields($this-result);
if (!$this-rows) return false;
return true;
}
function QuerySql ($query) {
$ret = @mysql_query($query, $this-id);
if ($ret === false)
{
if ($this-debug)
MySQL_ErrorMsg ("不能执行查询(query): $query");
else
return false;
}
$this-result = $ret;
$this-rows = @mysql_num_rows($this-result);
$this-fields = @mysql_num_fields($this-result);
return true;
}
# 如果查询结果为单条记录时使用,返回结果存储于数组 data 中
function QueryRow ($query) {
$this-result = @mysql_query($query, $this-id);
if (!$this-result)
{
if ($this-debug)
MySQL_ErrorMsg ("不能执行查询(query): $query");
else
return false;
}
$this-rows = @mysql_num_rows($this-result);
$this-data = @mysql_fetch_array($this-result, MYSQL_ASSOC);
//MySQL_ErrorMsg ("不能从查询结果中取得数据 $query");
if (!$this-result || !$this-rows)
return false;
return true;
}
# 移动到指定记录行,将该行结果储存于数组 data 中
function Fetch ($row) {
if(!@mysql_data_seek($this-result, $row))
//MySQL_ErrorMsg ("不能定位到指定数据行 $row");
return false;
$this-data = @mysql_fetch_array($this-result, MYSQL_ASSOC);
//MySQL_ErrorMsg ("不能提取指定数据行数据 $row");
if (!$this-data)
return false;
return true;
}
/* 以下方法将作用于 arows */
/* 此方法将作用于 iid */
function Insert ($query) {
$this-result = @mysql_query($query, $this-id);
if (!$this-result)
{
if ($this-debug)
MySQL_ErrorMsg ("不能执行查询(query): $query");
else
return false;
}
$this-arows = @mysql_affected_rows($this-id);
$this-iid = @mysql_insert_id($this-id);
return true;
}
function Update ($query) {
$this-result = @mysql_query($query, $this-id);
if (!$this-result)
{
if ($this-debug)
MySQL_ErrorMsg ("不能执行查询(query): $query");
else
return false;
}
$this-arows = @mysql_affected_rows($this-id);
if (!$this-arows || $this-arows == -1)
return false;
return true;
}
function Delete ($query) {
$this-result = @mysql_query($query, $this-id);
if (!$this-result)
{
if ($this-debug)
MySQL_ErrorMsg ("不能执行查询(query): $query");
else
return false;
}
$this-arows = @mysql_affected_rows($this-id);
return true;
}
function Error (){
return mysql_error()."(".mysql_errno().")";
}
function Errno (){
return mysql_errno();
}
}
/*
* MySQL_ErrorMsg
* 输出错误信息
*/
function MySQL_ErrorMsg ($msg) {
# 关闭可能影响字符显示的HTML代码
echo("/ul/dl/ol\n");
echo("/table/script\n");
# 错误信息
$text = "font color=\"#000000\" style=\"font-size: 9pt; line-height: 12pt\"p系统提示:".$msg."br";
$text .= "错误信息:";
$text .= mysql_error()."br";
$text .= "错误代码:".mysql_errno()."brbr";
$text .= "请稍候再试,如果问题仍然存在,请与 a href=\"mailto:wuqiong@igenus.org\"系统管理员/a 联系!";
$text .= "/font\n";
die($text);
}
}
?
一些细节的地方自己修改吧 主要是我在别的文件专门定义了全局变量,你看一遍,把应改的地方改一下就好了