时间: 2014年4月1日16:17:28 栏目删除功能完善


一、解决删除上级目录,其子目录仍有内容,

/*

1 要判断该栏目是否有子栏目,如果有子栏目,不能删除

思路:无限极分类,查子栏目,子孙栏目,家谱树

可以在model里写一个方法,查子栏目,判断是否有子栏目

*/

修改CatModel.class.php ,增加查找子栏目功能

   public function getSon($id){

       $sql = 'select cat_id,cat_name,parent_id from '.$this->table.' where parent_id = '.$id;

       return $this->db->getAll($sql);

   }

修改catedel.php,增加判断是否有子栏目

$res = $cat->getSon($cat_id);

if (!empty($res)) {

exit('有子栏目删除失败!');

}

二 解决:栏目编辑,栏目选择上的混乱

一个栏目A,不能修改成A的子孙栏目的子栏目

思考:

如果BA的后代,则A不能成为B的子栏目

反之,如果BA的后代,则AB 的祖先

因此,我们为A设定一个新的父栏目时,设为N

先查找N的家谱树,

如果N 的家谱树里,如果有A ,那么子孙差辈了

修改CatModel.class.php ,增加查找家谱树功能

   //查找家谱树

   public function getTree($id){

       $trees = array();

       $res = $this->select();

       while ($id>0) {

           foreach($res as $v){

               if ($v['cat_id'] == $id) {

                   $trees[] = $v;

                   $id = $v['parent_id'];

                   break;

               }

           }

       }

       return $trees;

   }

修改cateditAct.php ,增加判断在新选择的父栏目的家谱树中,是否存在子栏目

//查找新父栏目的家谱树

$trees = $cat->getTree($data['parent_id']);

//判断自身是否在新父栏目的家谱树中

//如果存在,那么自身就是新父栏目的父栏目,不允许修改

$flag = true;

foreach($trees as $v){

if ($v['cat_id'] == $cat_id) {

$flag = false;

break;

}

}

if (!$flag) {

echo "父栏目选取失败";

exit;

}


你可能感兴趣的:(return,function,public,where)