PHP MYSQL 请教 2个字段能无限分类吗?

PHP MYSQL 请教 2个字段能无限分类吗?,第1张

没懂你的CID,和scid  是什么。

无限分类是无限的树形结构么?

根据无限树形结构说一下。一般情况下 是用递归调用来处理的。字段中  用id 和parentid 两个字段。 假设有一个函数 fetch是取mysql 数据的。简单写一个函数

function getdata($parentid){

$tree=fetch("parentid = {$parentid}")

 foreach($tree as $k=>$v){

$tree[$k]['children']=getdata($v['id'])

}

return $tree

}

调用$tree=getdata(0)

$tree  就是树形的。

当然 如果有用框架估计更简单点。比如laravel 。定义一个$tree的模型,表中有id,和parentid两字段。模型中新增两个函数

public function childrentree()

  {

      return $this->hasMany(get_class($this), 'parentid', 'id')

  }

  public function children()

  {

      return $this->childrentree()

  }

然后使用

tree::with(["children"])->where('parentid', 0)->get()  就可以获取树形菜单

无限级别的,使用递归编程比较容易,基本方法是定义一个显示子菜单的函数:

function ShowMenu($pid){

....显示数据库里面PID为$pid的所有菜单项目以及子项目(通过调用自身实现).....

}

主程序调用ShowMenu(0)实现输出整个菜单。

整个程序的逻辑一般这样:

echo ShowMenu(0)

function ShowMenu($pid){

    //如果数据库不存在PID=$pid的记录,返回空串""

    $sql="select count(*) from tab where pid=$pid"

    mysql_query($sql)

    list($cnt)=mysql_fetch_row($res)

    mysql_free_result($res)

    if ($cnt==0) return ''

    //否则返回所有的子菜单项,格式<UL><LI>...<LI>...</UL>

    $ret_str='<UL>'

    $sql="select id,title from tab where pid=$pid"

    mysql_query($sql)

    while(list($id,$title)=mysql_fetch_row($res)){

        $ret_str.="<LI>$title".ShowMenu($id)."</LI>"

    }

    mysql_free_result($res)

    $ret_str.='<UL>'

    return $ret_str

}

这里在Load事件里向页面注册了一段JS,AjaxPagerCallBack方法做两个 *** 作,把自己表现的数据放入自己在客户端生成的DIV容器里,即id为this.UniqueID.Replace('$','_')的div,ClientID好像也可以!哈,一时糊涂!第二步就是把分页数据放到id为Info.ContainID的div中,Info对象下面会说到。


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

原文地址: https://outofmemory.cn/zaji/6119897.html

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

发表评论

登录后才能评论

评论列表(0条)

保存