后盾网-CI框架实例教程-马振宇 - 学习笔记(6)

第六节视频:6.CI框架学习-实例操作添加栏目如何定义使用模型以及配置数据库与利用AR增

  本节要点:

    1、定义模型Model

    2、输入类使用

    3、数据库配置

    4、使用AR类操作数据库

    5、激活调试模式

   在application/controllers/admin/category.php栏目管理控制器中:

    

// 添加动作
    public function add(){
        //载入表单验证类库
        $this ->load ->library('form_validation');
        $status = $this ->form_validation ->run('cate');

        if($status){
           // echo '数据库操作';
            //首先定义一个模型,也就是说验证成功,操作模型,然后模型操作数据库;
        }else{
            $this ->load ->helper('form');
            $this ->load ->view('admin/add_cate.html');
        }

    }

  在application/models/下新建一个模型:category_model.php(注意:定义文件名时一定要加上:_model.php):

  操作数据库

    1、创建数据库:

      create database article charset utf8;

      use article;

      create table hd_category(cid int unsigned primary key auto_increment,  //cid作为主键

                  cname varchar(15) not null default ''  //cname作为栏目名称,默认为空;

                      );

      show tables; //查看表

      desc hd_category;  //查看表的详细信息

    2、操作表之前,需要配置数据库:

      在application/config/database.php下配置:

$active_group = 'default';//项目测试时使用test,向里面填充一些数据;
$active_record = TRUE;//为TRUE时,代表其继承AR模型,(AR模型:system/database/DB_active_rec.php)

$db['default']['hostname'] = '127.0.0.1';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'article';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = 'hd_';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

    3、在application/config/autoload.php中设置自动加载数据库;

      $autoload['libraries'] = array('database');

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

   1、在application/models/category_model.php中添加数据库:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/10/8
 * Time: 16:40
 */

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

 //栏目管理模型
class Category_model extends CI_Model{

    //添加
    public function add($data){
//        echo 'hello';
        $this ->db->insert('category',$data);//第一个参数为表名,第二个参数为传递的数组;

    }
}

  在application/controllers/admin/category.php中:

// 添加动作
    public function add(){
        //载入表单验证类库
        $this ->load ->library('form_validation');
        $status = $this ->form_validation ->run('cate');

        if($status){
           // echo '数据库操作';
            //首先定义一个模型,也就是说验证成功,操作模型,然后模型操作数据库;

            $data = array(
                'cname' => $_POST['cname'] //cname为字段名,数组的键名也是数据库的字段名;
            );
            //载入模型
            $this ->load ->model('category_model','cate');//第二个参数为第一个参数的别名;
            //执行模型里面的方法
            //$this ->category_model ->add();
            $this ->cate ->add($data);
        }else{
            $this ->load ->helper('form');
            $this ->load ->view('admin/add_cate.html');
        }

    }

  查看数据库表里插入的数据:select * from  hd_category;

 

  ===============================================

  输入类:

    1、为了安全,预处理输入数据;

    2、提供helper的一些方法,取得输入数据,并预处理输入数据;

    3、防止跨站:$config['global_xss_filtering'] = TRUE;

 

  在system/core/Common.php定义全局函数,会被全局加载:

//下面是自定义函数
/* 格式化打印函数*/
function p($arr){
    echo '<pre>';
    print_r($arr);
    echo '</pre>';

}

/*成功提示函数*/
function success($url,$msg){ //$url表示跳转地址,$msg表示跳转提示信息
    header('Content-Type:text/html;charset = utf-8');//防止出现乱码
    $url = site_url($url);
    echo "<script type='text/javascript'>alert('$msg');location.href = '$url'</script>";
    die;
}

/*错误提示信息*/
function error($msg){
    header('Content-Type:text/html;charset = utf-8');
    echo "<script type='text/javascript'>alert('$msg');window.history.back();</script>";
}

 

  附:application/contronllers/admin/category.php:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/10/8
 * Time: 12:03
 */

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Category extends CI_Controller{

    //查看栏目
    public function index(){
        echo '查看栏目';

    }

    //添加栏目
    public function add_cate(){
        $this ->load ->helper('form');
        $this ->load ->view('admin/add_cate.html');
    }

    // 添加动作
    public function add(){
        //载入表单验证类库
        $this ->load ->library('form_validation');
        $status = $this ->form_validation ->run('cate');

        if($status){
           // echo '数据库操作';
            //首先定义一个模型,也就是说验证成功,操作模型,然后模型操作数据库;
            //var_dump($this->input ->post('abc'));die;
//                $this->input->get('name');
//                $a = $this ->input->server('HTTP_HOST');
//                echo $a;
//                p($_SERVER);die;

            //接收数据预处理,更安全;
            $data = array(
               'cname'=>$this->input->post('cname')
            );

//            $data = array(
//                'cname' => $_POST['cname'] //cname为字段名,数组的键名也是数据库的字段名;
//            );
            //载入模型
            $this ->load ->model('category_model','cate');//第二个参数为第一个参数的别名;
            //执行模型里面的方法
            //$this ->category_model ->add();
            $this ->cate ->add($data);

            //成功提示信息
            success('/admin/category/index','添加成功');

        }else{
            $this ->load ->helper('form');
            $this ->load ->view('admin/add_cate.html');
        }

    }

    //编辑栏目
    public function editor_cate(){
        $this ->load ->helper('form');
        $this ->load ->view('/admin/editor_cate.html');

    }

    //编辑栏目动作
    public function editor(){
        //载入表单验证类库
        $this ->load ->library('form_validation');
        $status = $this ->form_validation ->run('cate');

        if($status){
            echo '数据库操作';
        }else{
            $this ->load ->helper('form');
            $this ->load ->view('admin/editor_cate.html');
        }

    }


}

 附:application/models/category_madel.php:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/10/8
 * Time: 16:40
 */

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

 //栏目管理模型
class Category_model extends CI_Model{

    //添加
    public function add($data){
//        echo 'hello';
        $this ->db->insert('category',$data);//第一个参数为表名,第二个参数为传递的数组;

    }
}

 

  激活调试模式:

    $this ->output ->enable_profiler(TRUE);

    会在模板尾部显示

    将$this ->output ->enable_profiler(TRUE);写入application/controllers/admin/category;

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/10/8
 * Time: 12:03
 */

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Category extends CI_Controller{

    //查看栏目
    public function index(){
        echo '查看栏目';

    }

    //添加栏目
    public function add_cate(){
        $this ->output ->enable_profiler(TRUE);//激活调试模式,需注意要载入模板,在模板的底部显示;
        $this ->load ->helper('form');
        $this ->load ->view('admin/add_cate.html');
    }

    // 添加动作
    public function add(){
        //载入表单验证类库
        $this ->load ->library('form_validation');
        $status = $this ->form_validation ->run('cate');

        if($status){
           // echo '数据库操作';
            //首先定义一个模型,也就是说验证成功,操作模型,然后模型操作数据库;
            //var_dump($this->input ->post('abc'));die;
//                $this->input->get('name');
//                $a = $this ->input->server('HTTP_HOST');
//                echo $a;
//                p($_SERVER);die;

            //接收数据预处理,更安全;
            $data = array(
               'cname'=>$this->input->post('cname')
            );

//            $data = array(
//                'cname' => $_POST['cname'] //cname为字段名,数组的键名也是数据库的字段名;
//            );
            //载入模型
            $this ->load ->model('category_model','cate');//第二个参数为第一个参数的别名;
            //执行模型里面的方法
            //$this ->category_model ->add();
            $this ->cate ->add($data);

            //成功提示信息
            success('/admin/category/index','添加成功');

        }else{
            $this ->load ->helper('form');
            $this ->load ->view('admin/add_cate.html');
        }

    }

    //编辑栏目
    public function editor_cate(){
        $this ->load ->helper('form');
        $this ->load ->view('/admin/editor_cate.html');

    }

    //编辑栏目动作
    public function editor(){
        //载入表单验证类库
        $this ->load ->library('form_validation');
        $status = $this ->form_validation ->run('cate');

        if($status){
            echo '数据库操作';
        }else{
            $this ->load ->helper('form');
            $this ->load ->view('admin/editor_cate.html');
        }

    }


}

 

 

  

   

posted @ 2017-10-08 13:08  一纸流年  阅读(329)  评论(0编辑  收藏  举报