【thinkphp无限级分类】Thinkphp无限级分类实现程序代码

更新时间:2019-06-17    来源:thinkphp    手机版     字体:

【www.bbyears.com--thinkphp】

数据库结构

id    pid  username

1      0    www.111cn.net
2      1    mb.111cn.net
3      2    down.111cn.net

从上面来看我们id =1 是最终根级了,其它的就是子级了,下面我们就来看看要如何在thinkphp中读取无限分类吧。

首先呢,这是thinkphp无限极分类,那么咱们就按照thinkphp的结构来写。比如你的模板显示方法叫index(),那么咱就在index()方法里面写:

$message = M("message");//评论
//有必要说下where条件,当然我这是项目里的代码,评论需要显示出来当前文章的评论,这个条件就是查询当前文章评论

 代码如下

public $listall = array();

$listmessage = $message->where("article_id = ".$list["artid"]."")->order("id DESC")->select(); //暂且你的表名字为message

foreach( $listmessage as $v){
if($v["pid"] == 0){
echo $v["username"]."
";
$this->listall[] = $v;
$this->wuxian_f($v["id"] ,$nb );
}
}

 

下面的这个就是调用的无限极分类方法:

 代码如下

//无限极分类测试
protected function wuxian_f( $fid ,$nb){
$message = M("message");
$hf = $message->where("pid = "".$fid.""")->select();
if($hf){
foreach($hf as $c){
$nb = $nb . "----";
echo  $nb.$c["username"]."
";
$this->listall[] = $c;
$hc = $message->where("pid = "".$c["id"].""")->find();
if($hc){
$nb = $nb . "----";
echo $nb.$hc["username"]."
";
$this->listall[] = $hc;
$this->wuxian_f( $hc["id"] ,$nb);
}
}
}
}

如果想去前台遍历的话,就把$this->assign("mess",$this->listall);  listall赋值到view页面,然后前台页面循环mess就可以了。

分析,其实就是一个递归查找之后再输出就可以了,方法非常的简单哦。

本文来源:http://www.bbyears.com/jiaocheng/54663.html