PHP-面向对象-无限分类2

前些天只实现了便利出来这个分类。并没有给出全部代码,而且自己对这个很感冒。一直都没动这个地方,想放到最后做,今天晚上遇到难题了,本来打算是从链接的path路径这入手,判断传过来的id是否在path内,使用了strstr函数,不理想,最后utaoy给了一个函数 false===strpos($id,$c["path"]) 来判断,返回值为0或者假,但是在我这里判断还是不好用,一直纠结,最后还是笨办法实现了这个地方的代码。最后把这个原理搞明白,松了一口气,看来这个是自己的弱项。不过以后不会了。因为这个实现原理搞明白了。而且还给自己的队员讲解了一番。哈哈!当中一口抽了3只烟,我在想,以后会不会有了烟瘾,况且现在自己不怎么抽烟都,而且抽完嘴里也不舒服!o(︶︿︶)o 唉!

好了,下面不多说了。下面的代码是Brophp框架写的一个无限分类的一个类。和thinkphp原理几乎一样!知道了原理,不管什么框架,都是一个写法。自己的代码亮出来,希望高手帮我看看,那些地方需要更改的,谢谢!

 

<?php
              /***************************************************************
               **界面:无限分类界面
               **作者:曲来金
               **时间:2011-6-12
               **文件名:category.class.php
               ***************************************************************/

	class Category extends Action{
		function index(){
			$list=$this->catlist();
			$this->assign("cat",$list);
			$this->display();
		}
		function catlist(){
		$cat=D("category");			
			$list=$cat->field("id,fid,name,path,concat(path,'-',id) as bpath")->order('bpath')->select();//查询				
			foreach($list as $key=>$value){
				$list[$key]["name"]=str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',count(explode('-',$list[$key]['bpath']))-2).'|-'.$list[$key]['name'];				
			}		
			return $list;		
		}
		 /*
          * 添加分类:
		  * str_repeat:重复count得到的值 -> str_repeat("填充值",int())
		  * explode('-',$list[$key]['bpath']):按照 '-' 分割$list[$key]['bpath']
		  * 最后使用 |- 连接分类名
          */		 
		function addcat(){
			$cat=D("category");	
			$list=$cat->field("id,fid,name,path,concat(path,'-',id) as bpath")->order('bpath')->select();			
			foreach($list as $key=>$value){
				$list[$key]["name"]=str_repeat('&nbsp;&nbsp;&nbsp;',count(explode('-',$list[$key]['bpath']))-2).'|-'.$list[$key]['name']; //遍历		
				}			
			$this->assign("cate",$list);
			$this->display();		
		}
		function insert(){
			$cat=D("category");	
			$fid=isset($_POST['fid'])?(int)$_POST['fid']:0;		//判断fid值是否为0,为0时是顶级分类		
			$list=$cat->where("id=$fid")->find();	//查询出POST内传过来的fid值	
			if($fid==0){			
			$path=0-$fid; //返回path值
			}else{
			$path=$list['path'].'-'.$list['id']; //定义bpath,使原有path和新id连接组成新path
			}
			$_POST['path']=$path;
			if(!empty($_POST["name"])){
				if($cat->insert()){
				$this->success("添加分类成功",1,"index");
				}else{
				$this->error("添加分类失败",1,"addcat");
				}
			}else{
				$this->error("分类名不能为空");
			}
		}
		//删除分类,如有子分类提示
		function delcat(){
			$cat = D("category");
			$id=$_GET["id"];
			$c=$cat->where("fid=$id")->select();
			P($id);
			P($c);
			if($id!==$c[0]["fid"]){
				if($cat->delete($id)){
					$this->success("删除分类成功",1,"index");
				}else{
					$this->error("删除分类失败",2,"index");
				}
			}else if($id==$c[0]["fid"]){
				$this->error("分类下面有子分类,请删除!",2,"index");
			}else if($c[0]["fid"]==0){
				if($c->delete($_GET["id"])){
					$this->success("删除分类成功",1,"index");
				}else{
					$this->error("删除分类失败",2,"index");
				}
			}		
		}
	}

相关文章

已有 10 条评论
  1. 青岛网站建设

    呵呵,博主很有才呀

    青岛网站建设 回复
  2. 本草护肤品

    没看懂,呵呵

    本草护肤品 回复
  3. 青岛专业软件研发

    楼主有才华啊,支持

    青岛专业软件研发 回复
  4. 脚气的治疗方法

    只留 言 不看文……{smile:5}

    脚气的治疗方法 回复
  5. 小A

    这个代码非常实用~~

    小A 回复
    1. 枫叶红秋雨

      @小A

      @小A
      这个分类搞了我好几天,代码还要精简

      枫叶红秋雨 回复
  6. 俊文

    话说我看不懂,不过祝贺下!{smile:12}

    俊文 回复
    1. 枫叶红秋雨

      @俊文

      @俊文
      。。一段PHP代码,是在框架里面使用的

      枫叶红秋雨 回复
  7. 燕窝

    有部分没看懂·

    燕窝 回复
  8. 青岛公关

    恭喜恭喜

    青岛公关 回复
发表新评论