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视图当中:
如果是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条
load->model('test_m'); for ($i = 1;$i $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:
控制器:
定义一个数组,设置一些与上传相关的参数$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());
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层:
添加结果显示
//此处选择了循环输出从控制层传输的结果
字段名称(含义) //该td中显示的是你从数据库、即model层中获取到的数据的含义,想显示多少,显示哪个,在这里确认
test; ?>
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也提供了比较强大了...