6 自动填加系统无限级分类

1.建立数据库think_cate

-- phpMyAdmin SQL Dump
-- version 3.2.2
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2011 年 01 月 21 日 08:21
-- 服务器版本: 5.1.39
-- PHP 版本: 5.2.11

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- 数据库: `videodemo`
--

-- --------------------------------------------------------

--
-- 表的结构 `think_cate`
--

CREATE TABLE IF NOT EXISTS `think_cate` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(30) NOT NULL,
  `pid` int(11) NOT NULL,
  `path` varchar(200) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;

--
-- 转存表中的数据 `think_cate`
--

INSERT INTO `think_cate` (`id`, `name`, `pid`, `path`) VALUES
(1, '新闻', 0, '0'),
(2, '中国新闻', 1, '0-1'),
(3, '美国新闻', 1, '0-1'),
(4, '北京新闻', 2, '0-1-2'),
(5, '华盛顿新闻', 3, '0-1-3'),
(6, '海淀新闻', 4, '0-1-2-4'),
(7, '上地新闻', 6, '0-1-2-4-6'),
(8, '七街新闻', 7, '0-1-2-4-6-7'),
(9, '9号楼新闻', 8, '0-1-2-4-6-7-8'),
(11, '体育', 0, '0');

2.home\lib\action\cateaction.class.php

<?php
class CateAction extends Action{
   public function index(){
    $cate=D('cate');//2
    $list=$cate->field("id, name, pid, path, CONCAT( path, '-', id ) AS bpath")
     ->order('bpath')->select();//2

         foreach($list as $key=>$value){
            $list[$key]['count']=count(explode('-',$value['bpath']));//3
            }
    $this->assign(alist,$list);
  
       $this->display();//1
        }
     function add(){
        $cate=D('cate');
        if($vo=$cate->create()){
                if($cate->add()){
                    $this->success('添加成功');
            }else{
                $this->error('添加栏目失败');
            }
            //dump($vo);
           
        }else{
            $this->error($cate->getError());
        }

  3.home\lib\model\CateModel.class.php

<?php
  class CateModel extends Model{
      //自动添充加入栏目
      protected $_auto=array(array('path','tclm',3,'callback'));
      function tclm(){
          //
          $pid=isset($_POST['pid'])?(int)$_POST['pid']:0;//判断表单是否提交
             echo $pid;//5
          if($pid){
              $list=$this->where("id=$pid")->find();
             // dump($list);//5
              $data=$list['path'].'-'.$list['id'];//6
             // dump($data);//6
              return $data;
          }
          else
              return;
         
      }
  }
 
?>
   }

?>

4.tpl\cate\index.html

<form action="__URL__/add" method="POST">

请选择父级栏目<select name="pid" size="20">
            <option value="0">根栏目</option>
            <volist name="alist" id="vo">
            <option value="{$vo['id']}">
                <php>
                    for($i=0;$i<$vo['count']*2;$i++){
                                echo '&nbsp;';
                   
                    }
                </php>
                {$vo['name']}</option>
            </volist>

</select><br>

添加栏目:<input type="text" name="name"><br>
<input type="submit" value="提交">
</form>

    如图所示

6 自动填加系统无限级分类_第1张图片

你可能感兴趣的:(6 自动填加系统无限级分类)