自定義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_自定義擴展模型
在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="<?php echo site_url('user/insert'); ?>" method="post"><!-- ........--></form>如果是index.php目錄的話,用:
base_url();這個API。
同時,每次加載url很麻煩,也可是設置成自動加載,在config/config.php中修改:
$config['helper'] = array('url');可能在后面的版本中就沒有這個自動加載了。
路由
想要把12.html中的.html刪了怎么辦,這就需要匹配路由規則了(在config/routes.php):
$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 accessallowed');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 "<br />"; $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;
還可以設置其他的一些額外參數,詳細看用戶手冊。
//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); } }}
利用CI類實現session登錄
//生成一個隨機不重復的字符串走位加密的key保存到config.php的encryption_key中$config['encryption_key']='adb8bf6d0ac4e17b42a80941582497a4';
$this->load->library('session');
$array = array('id'=>3,'name'=>'jack');$this->session->set_userdata($array);
$this->session->userdata(session名);
$this->session->unset_userdata('SESSION名');
在config.php文件中修改一下配置,便可以對cookie加密:
$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');
新聞熱點
疑難解答