PHP+MySQL无限分类语句

PHP+MySQL无限分类语句,第1张

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

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

}

没懂你的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()  就可以获取树形菜单


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存