各類demo——CI框架學習

寒假學習一下CI框架,請各位多多指教!php

一.CI的HelloWorld!html

注意:CI禁止直接經過文件目錄來訪問控制器。數據庫

 ./application/controllers/hello.php
1
<?php 2 //放止用戶直接經過路徑來訪問控制器,若是這樣的話會顯示找不到(封裝) 3 if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 4 5 class Hello extends CI_Controller { 6 7 public function sayhello($name,$name2){ 8 echo $name,",Hello CI to ",$name2; 9 } 10 }

 

 

二.CI的文本計時器demo——文本操做與調用視圖操做數組

調用視圖的基本格式:session

$this->load->view('XXX');app

 

 1 <?php
 2 //./applications/controllers/hello.php
 3 //放止用戶直接經過路徑來訪問控制器,若是這樣的話會顯示找不到(封裝)
 4 if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 5 
 6 class Hello extends CI_Controller {
 7 
 8     public function sayhello($name,$name2){
 9         echo $name,",Hello CI to ",$name2;
10     }
11 
12     public function show(){
13         $name = "deng";
14         @$count = file_get_contents('./num.txt');  //裝飾器
15         $count = $count ? $count:0;
16         $count++;
17         $data = array('key'=>$name,'value'=>$count);
18 
19         $re = fopen('./num.txt','w');
20         fwrite($re, $count);
21 
22         $this->load->view("testview.php",$data);   //裝載兩個視圖頁面
23         $this->load->view("testview2.php");
24     }
25 }

 

 

三.CI的數據庫demo——對數據模型的增,刪,改,查框架

數據模型——函數

1.數據模型是一個數據庫類post

2.一個模型針對一張表學習

建立一個模型必須注意——

必須繼承數據核心類CI_Model,同時重載父類中的構造方法

class Model_name extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }
}

對數據庫的操做——

1.鏈接數據庫($this->load->database());

2.插入數據($this->db->insert($t_name,$arr);)

$t_name——你要操做的表]

$arr——你要插入的數據("key"=>value)

3.更新數據

$this->db->where(字段名,字段值)

$this->db->update(表名,修改值的數組)

4.查詢數據

$this->db->where(字段名,字段值)

$this->db->select(字段)

$query = $this->db->get(表名)

return $query->result();

5.刪除數據

$this->db->where(字段名,字段值)

$this->db->delete(表名)

 

 1 ./application/controllers/user.php
 2 <?php 
 3 if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 4 
 5 class User extends CI_Controller {
 6 
 7     public function insert(){
 8         $this->load->model('test_m');
 9         $arr = array('usid'=>1,'uname'=>'deng1','upass'=>'1234');
10         $this->test_m->user_insert($arr);
11     }
12 
13     public function update(){
14         $this->load->model('test_m');
15         $arr = array('usid'=>22,'uname'=>'deng222','upass'=>'1233333');
16         $this->test_m->user_update(2,$arr);
17     }
18 
19     public function delete(){
20         $this->load->model('test_m');
21         $this->test_m->user_delete(22);
22     }
23 
24     public function select()
25     {
26         $this->load->model('test_m');
27         $arr = $this->test_m->user_select(1);
28         print_r($arr);
29         echo $arr[0]->usid;
30 
31     }
32 }
33 
34 /* End of file welcome.php */
35 /* Location: ./application/controllers/welcome.php */

 

 1 <?php
 2 /**
 3 *  ./application/models/test_m.php
 4 */
 5 class Test_m extends CI_Model
 6 {
 7     
 8     function __construct()
 9     {
10         parent::__construct();
11         //connect to the database
12         $this->load->database();
13         //$this->load->insert($t_name,$data)
14     }
15 
16     function user_insert($arr){
17         $this->db->insert('user',$arr);
18     }
19 
20     function user_update($id,$arr)
21     {
22         $this->db->where('usid',$id);
23         $this->db->update('user',$arr);
24     }
25 
26     function user_delete($id){
27         $this->db->where('usid',$id);
28         $this->db->delete('user');
29     }
30 
31     function user_select($id){
32         $this->db->where('usid',$id);
33         $this->db->select('*');
34         $query = $this->db->get('user');
35         return  $query->result();
36     }
37 }
38 ?>

 

 四.CI的文件上傳demo

 1.面向過程的文件上傳方法

 

 1 #/controllers/upload.php
 2 <?php 
 3 if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 4 
 5 class Upload extends CI_Controller {
 6 
 7     //顯示帶表單的視圖
 8     public function index(){
 9         $this->load->view('up');
10 
11     }
12 
13     //顯示上傳信息
14     public function up(){
15 
16         if(!empty($_POST['sub'])){
17             //打印變量的函數
18             //var_dump($_FILES['upfile']);   
19             $file = $_FILES['upfile'];
20             if($file['size'] >= 20000000){
21                 echo "size no!";
22             }
23             else{
24                 switch ($file['type']) {
25                     case 'image/jpeg':
26                         $br = '.jpg';
27                         break;
28                     
29                     default:
30                         $br = false;
31                         break;
32                 }
33 
34                 if($br){
35                     $time = time();
36                     move_uploaded_file($file['tmp_name'], "./upload/$time$br");
37 
38                 }
39                 else{
40                     echo "type no";
41                 }
42             }
43 
44         }
45     }
46 
47 }

 

1 #/views/up.php
2 <html>
3 <!--注意相對路徑的創建-->
4     <form action="/CI/index.php/upload/up" method="post" enctype="multipart/form-data">
5         <input type="file" name="upfile" />
6         <input type="submit" name="sub" value="提交" />
7     
8     </form>
9 </html>

 2.面向對象的CI框架文件上傳方法

 

 a.定義一個數組,設置一些與上傳相關的參數

//設置上傳目錄,這裏寫./,目錄要建在網站根目錄,就是和application同級

//若是你要放在application目錄下,能夠用系統定義的路徑常量APPPATH

//例如:APPPATH.'uploads/'

$config['upload_path'] = './uploads/';

//設置容許上傳的類型

$config['allowed_types'] = 'gif|jpg|png';

$config['max_size'] = '100';

//若是是圖片還能夠設置最大高度和寬度

$config['max_height'] = 768;

$config['max_width'] = 1024;

b.還能夠設置其餘的一些額外參數,詳細看用戶手冊

c.調用CI的上傳通用類,並執行上傳

//upload爲調用的類名,全小寫

$this->load->library('upload',$config);

//若是上傳框的name寫的是userfile,那就不用傳參數了,若是不是,把name的值傳進去

$this->upload->do_upload('上傳框的name');

d.接收出錯信息或成功信息

//出錯信息

$error = array('error' => $this->upload->display_error());

//成功信息

$data = array('upload_data' => $this->upload->data());

 

 1 <?php 
 2 if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 3 
 4 class Upload extends CI_Controller {
 5 
 6     //顯示帶表單的視圖
 7     public function index(){
 8         $this->load->view('up');
 9 
10     }
11 
12     //顯示上傳信息
13     public function up(){
14 
15         $config['upload_path'] = './uploads/';
16         $config['allowed_types'] = 'gif|jpg|png';
17         $config['max_size'] = "2000";
18 
19         $this->load->library('upload',$config);
20 
21         //打印成功或錯誤的信息
22         if($this->upload->do_upload('upfile'))
23         {
24             $data = array("upload_data" => $this->upload->data());
25             var_dump($data);
26         }
27         else
28         {
29             $error = array("error" => $this->upload->display_errors());
30             var_dump($error);
31         }
32     }
33 
34 }

 

 五.CI的登陸驗證demo

1.利用CI類實現session登陸

a.修改配置文件(config.php)

$config['encryption_key']

b.加載SESSION類

$this->load->library('session');

c.建立SESSION

$this->session->set_userdata($array);

d.查看SESSION

$this->session->userdata(session名);

e.刪除SESSION

$this->session->unset_userdata('SESSION名');

 

 1 ./application/controllers/login.php
 2 <?php 
 3 if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 4 
 5 class Login extends CI_Controller {
 6 
 7     public function index()
 8     {
 9         $this->load->view('login.html');
10     }
11 
12     public function checklogin(){
13         $this->load->model("test_m");
14         $user = $this->test_m->user_select($_POST['uname']);
15         if($user){
16             if($user[0]->upass == $_POST['upass']){
17                 echo '密碼正確!';
18                 $this->load->library('session');
19                 $arr = array("uid" => $user[0]->usid);
20                 $this->session->set_userdata($arr);
21                 echo "<br />";
22                 echo $this->session->userdata('uid');
23             }
24             else{
25                 echo '密碼不正確!';
26             }
27         }
28         else{
29             echo '用戶名不存在';
30         }
31     }
32 
33     public function checksession(){
34         $this->load->library('session');
35         if($this->session->userdata('uid')){
36             echo '已經登陸。';
37         }
38         else{
39             echo '沒有登陸。';
40         }
41     }
42 
43     public function loginout(){
44         $this->load->library('session');
45         $this->session->unset_userdata('uid');
46     }
47 }

 六.CI的分頁功能demo

1.必須知道的一些參數

a.總共有多少條記錄

b.一頁要有多少條記錄

c.總共多少頁

d.當前頁先後要顯示多少個分頁連接

2.設置一些CI分頁類基本參數

//總條數

$config['total_rows']

//一頁顯示幾條

$config['per_page']

//定義當前頁的先後各有幾個數字連接

$config['num_links']

//定義沒有分頁參數,主URL

$config['base_url']

3.調用CI的分頁類

$this->load->library('pagination');

4.執行分頁方法

$this->pagination->initialize($config);

5.輸出分頁連接

echo $this->pagination->create_links();

6.查詢部分數據(limit)

echo $this->db->limit($num,$start);  //從$start查$num條

 1 ./applications/controllers/page.php
 2 <?php 
 3 if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 4 
 5 class Page extends CI_Controller {
 6 
 7     public function user_add(){
 8         $this->load->model('test_m');
 9 
10         for ($i = 1;$i <= 100;$i++){
11             $name = 'u'.$i;
12             $arr = array("usid"=>$i,"uname"=>$name,"upass"=>123456);
13             $this->test_m->user_insert($arr);
14 
15         }
16     }
17 
18     public function pagelist(){
19         $this->load->model('test_m');
20         $user = $this->test_m->user_select_all();
21         $allnum = count($user);
22         $pagenum = 20;
23 
24         $config['total_rows'] = $allnum;
25         $config['per_page'] = $pagenum;
26         $config['num_links'] = 3;
27         $config['base_url'] = "/CI/index.php/page/pagelist";
28         $config['use_page_numbers'] = true;
29 
30         $this->load->library('pagination');
31         $this->pagination->initialize($config);
32 
33         var_dump($this->pagination->create_links());
34         echo $this->pagination->create_links();
35 
36         echo "<br />";
37         $id = $this->uri->segment(3);  //得到url第三段字符
38         $id =$id ? $id:1;
39         $start = ($id - 1) * $pagenum;
40         $list = $this->test_m->user_select_limit($start,$pagenum);
41         var_dump($list);
42     }
43 }
相關文章
相關標籤/搜索