ci架構(二),ci架構_PHP教程

來源:互聯網
上載者:User

ci架構(二),ci架構


自訂SQL語句

當提供的API滿足不了我們對SQL語句的要求的時候,我們通常是自己來寫SQL語句,CI也提供了比較強大了,能夠滿足我們需求的一般的sql的API。

$res=$this->db->select('id,name')    ->from('表名')    ->whrer('id >=',5)//注意id後面要有個空格    ->limit(3,2)//這裡與sql的limit是順序是反的    ->order_by('id desc ')    ->get();//翻譯成sql語句var_dump($res->result());echo $this->db->last_query();//先是最近一條SQL

自訂擴充控制器

在application/core中建立MY_Controller.php

class MY_Controller extends CI_Controller{    public function __construct()    {        parent::__construct();        //一定呀先調用父類的構造方法        //登入驗證、許可權驗證、其他動作。。。    }}

同時需要在application/config/config.php中配置一下:

$config['subclass_prefix'] = 'MY_';

自訂擴充模型

在application/models中建立user_model.php

class User_model extends CI_Model{    public function getAll()    {        $res = $this->db->get('表名');        return $res->result();    }}

在控制器中調用自訂模型

application/controllers:

class User extends MY_Controller{    public function index()    {        $this->load->model('User_model');//調用以類名為主,而不是檔案名稱
$list = $this->User_model->getAll();//調用模型擷取資料
$this->load->view('user/index',array('list'=>$list));//載入視圖      }   }

載入模型的時候可以給模型取一個名字:

$this->load->model('User_model','user');//調用以類名為主,而不是檔案名稱        $list = $this->user->getAll();//調用模型擷取資料

Url相關函數

在表單驗證的時候,需要把資料傳給控制器,怎麼準確的而且可擴充的寫action呢,調用API:

public function addView(){    $this->load->helper('url');//為了不把表單傳遞的地址寫死,用url函數    $this->load->view('user/add');}

在user/add.php視圖當中:

<form action="" method="post">form>

如果是index.php目錄的話,用:

base_url();

這個API。

同時,每次載入url很麻煩,也可是設定成自動載入,在config/config.php中修改:

$config['helper'] = array('url');

可能在後面的版本中就沒有這個自動載入了。

路由

$route['rouxx/showxx/([\d]+)\.html'] = 'rou/show/$1';//插入這句話

分頁

  • 必須知道的一些參數

總共有多少條記錄

一頁要有多少條記錄

總共多少頁

當前頁前後要顯示多少個分頁連結

  • 設定一些CI分頁類基本參數
//總條數$config['total_rows']//一頁顯示幾條$config['per_page']//定義當前頁的前後各有幾個數字連結$config['num_links']//定義沒有分頁參數,主URL$config['base_url']
  • 調用CI的分頁類
$this->load->library('pagination');
  • 執行分頁方法
$this->pagination->initialize($config);
  • 輸出分頁連結
echo $this->pagination->create_links();
  • 查詢部分資料(limit)
echo $this->db->limit($num,$start);  //從$start查$num條
php if ( ! defined('BASEPATH')) exit('No direct script access allowed');class Page extends CI_Controller {    public function user_add(){        $this->load->model('test_m');        for ($i = 1;$i <= 100;$i++){            $name = 'u'.$i;            $arr = array("usid"=>$i,"uname"=>$name,"upass"=>123456);            $this->test_m->user_insert($arr);        }    }    public function pagelist(){        $this->load->model('test_m');        $user = $this->test_m->user_select_all();        $allnum = count($user);        $pagenum = 20;        $config['total_rows'] = $allnum;        $config['per_page'] = $pagenum;        $config['num_links'] = 3;        $config['base_url'] = "/CI/index.php/page/pagelist";        $config['use_page_numbers'] = true;        $this->load->library('pagination');        $this->pagination->initialize($config);        var_dump($this->pagination->create_links());        echo $this->pagination->create_links();        echo "
"; $id = $this->uri->segment(3); //獲得url第三段字元 $id =$id ? $id:1; $start = ($id - 1) * $pagenum; $list = $this->test_m->user_select_limit($start,$pagenum); var_dump($list); }}

上傳檔案

視圖 /views/up.php:

<html>    <form action="ci/CodeIgniter_2.2.0/index.php/upload/up" method="post" enctype="multipart/form-data">        <input type="file" name="upfile" />        <input type="submit" name="sub" value="提交" />    form>html>

控制器:

  • 定義一個數組,設定一些與上傳相關的參數
$config['upload_path'] = './uploads/';//設定允許上傳的類型$config['allowed_types'] = 'gif|jpg|png';$config['max_size'] = '100';//如果是圖片還可以設定最大高度和寬度$config['max_height'] = 768;$config['max_width'] = 1024;

還可以設定其他的一些額外參數,詳細看使用者手冊。

  • 調用CI的上傳通用類,並執行上傳
//upload為調用的類名,全小寫$this->load->library('upload',$config);//如果上傳框的name寫的是userfile,那就不用傳參數了,如果不是,把name的值傳進去$this->upload->do_upload('上傳框的name');
  • 接收出錯資訊或成功資訊
//出錯資訊$error = array('error' => $this->upload->display_error());//成功資訊$data = array('upload_data' => $this->upload->data());
php if ( ! defined('BASEPATH')) exit('No direct script access allowed');class Upload extends CI_Controller {    //顯示帶表單的視圖    public function index(){        $this->load->view('up');    }    //顯示上傳資訊    public function up(){        $config['upload_path'] = './uploads/';        $config['allowed_types'] = 'gif|jpg|png';        $config['max_size'] = "2000";        $this->load->library('upload',$config);        //列印成功或錯誤的資訊        if($this->upload->do_upload('upfile'))        {            $data = array("upload_data" => $this->upload->data());            var_dump($data);        }        else        {            $error = array("error" => $this->upload->display_errors());            var_dump($error);        }    }}

Session

利用CI類實現session登入

  • 修改設定檔(config.php)
//產生一個隨機不重複的字串走位加密的key儲存到config.php的encryption_key中$config['encryption_key']='adb8bf6d0ac4e17b42a80941582497a4';
  • 載入SESSION類
$this->load->library('session');
  • 建立SESSION
$array = array('id'=>3,'name'=>'jack');$this->session->set_userdata($array);
  • 查看SESSION
$this->session->userdata(session名);
  • 刪除SESSION
$this->session->unset_userdata('SESSION名');

$config['sess_cookie_name'] = 'ci_session';$config['sess_expiration'] = 7200;$config['sess_expire_on_close'] = FALSE;$config['sess_encrypt_cookie'] = TRUE$config['sess_use_database'] = FALSE;$config['sess_table_name'] = 'ci_sessions';$config['sess_match_ip'] = FALSE;$config['sess_match_useragent'] = TRUE;$config['sess_time_to_update'] = 300;

  • 一次性資料,只能讀取一次
//設定$this->session->set_flashdata('test','aaaaa');//讀取$test = $this->session->flashdata('test');

php CI 架構怎從資料庫中取值(一個二維數組)以表格的形式顯示到view層

控制層
function test_func(){
//擷取model頁面需要的兩個參數
$competition_id = $_GET["competition_id"];
$report_class = $_GET["report_class"];
$this->load->model("Action"); //引入model
$data["head"] = $this->Action->get_report_item($competition_id, $report_class); //引用model的函數
$this->load->view("test_result",$data); //將結果顯示在test_result.php頁面中
}
view層:

添加結果顯示</h3>
//此處選擇了迴圈輸出從控制層傳輸的結果



欄位名稱(含義)</td> //該td中顯示的是你從資料庫、即model層中擷取到的資料的含義,想顯示多少,顯示哪個,在這裡確認
</tr>

test; ?></td>
</tr>
</table>
echo “123”;
}?>
</div>
 

php CI架構問題?小弟是初學者

在view檔案裡可以直接用$title了
是 CI 根據$data裡的每一個可以聲明了一個變數 到view中可以直接調用
CI 架構就是這麼幹活的 具體怎麼去聲明的 沒太細看
 

http://www.bkjia.com/PHPjc/838913.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/838913.htmlTechArticleci架構(二),ci架構 自訂SQL語句 當提供的API滿足不了我們對SQL語句的要求的時候,我們通常是自己來寫SQL語句,CI也提供了比較強大了...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.