第六節視頻:6.CI框架學習-實例操做添加欄目如何定義使用模型以及配置數據庫與利用AR增javascript
本節要點:php
一、定義模型Modelhtml
二、輸入類使用java
三、數據庫配置mysql
四、使用AR類操做數據庫sql
五、激活調試模式數據庫
在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):安全
操做數據庫:app
一、建立數據庫:
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; //查看錶的詳細信息
二、操做表以前,須要配置數據庫:
在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;
三、在application/config/autoload.php中設置自動加載數據庫;
$autoload['libraries'] = array('database');
--------------------------------------------------------------------------------------------------
一、在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;
===============================================
輸入類:
一、爲了安全,預處理輸入數據;
二、提供helper的一些方法,取得輸入數據,並預處理輸入數據;
三、防止跨站:$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'); } } }