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="<?php echo site_url('user/insert'); ?>" method="post">
<!-- ........-->
</form>

如果是index.php目录的话,用:

base_url();

这个API。

同时,每次加载url很麻烦,也可是设置成自动加载,在config/config.php中修改:

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

可能在后面的版本中就没有这个自动加载了。

路由                                                                                           

image

想要把12.html中的.html删了怎么办,这就需要匹配路由规则了(在config/routes.php):

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

image

分页                                                                                           

  • 必须知道的一些参数

总共有多少条记录

一页要有多少条记录

总共多少页

当前页前后要显示多少个分页链接

  • 设置一些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 "<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;

还可以设置其他的一些额外参数,详细看用户手册。

  • 调用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名');

image

在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');

转载于:https://www.cnblogs.com/yydcdut/p/3849974.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

到底该不该使用存储过程

百度百科对存储过程的定义存储过程&#xff08;Stored Procedure&#xff09;是在大型数据库系统中&#xff0c;一组为了完成特定功能的SQL 语句集&#xff0c;它存储在数据库中&#xff0c;一次编译后永久有效&#xff0c;用户通过指定存储过程的名字并给出参数&#xff08;如…

智能卡门禁管理系统_汉中停车场智能门禁系统简介,保安服务收费,行业知识

首页 > 新闻列表 > 正文作者&#xff1a;佚名 点击数&#xff1a; 5更新时间&#xff1a;2020-11-04 08:21:21 导读&#xff1a;名将安防为您提供汉中停车场智能门禁系统简介,保安服务收费的相关知识与详情&#xff1a; 接警时&#xff0c;系统自动调出预警方案&#xf…

推荐系统中协同过滤算法实现分析

原创博客&#xff0c;欢迎转载&#xff0c;转载请注明&#xff1a;http://my.oschina.net/BreathL/blog/62519 最近研究Mahout比较多&#xff0c;特别是里面协同过滤算法&#xff1b;于是把协同过滤算法的这个实现思路与数据流程&#xff0c;总结了一下&#xff0c;以便以后对系…

老黄的2021

0x01 21年怎么说呢&#xff0c;平淡中带点惊喜。21年在现在的公司待满 2 年了&#xff0c;仔细想想&#xff0c;还真是&#xff0c;这是第一个待满 2 年的公司。这一年&#xff0c;有了很多的挑战&#xff0c;业务上的&#xff0c;技术上的&#xff0c;管理上的都是。下半年开始…

document.elementFromPoint

先说一下这个方法的参数 elemntFromPoint(x,y);//传入坐标值&#xff0c;返回当前页面上包含该坐标点的顶层元素 注意2点&#xff0c;坐标值和顶层元素 先说坐标&#xff0c;因为不同的人理解是不一样的&#xff0c;也就造就了这个方法在不同的浏览器中表现是不一样的&#xff…

iis6 开启options方法_《王者荣耀》暗夜危机什么时候开启 暗夜危机开启时间

导读 王者荣耀神秘关卡暗夜危机怎么进&#xff1f;许多玩家对于这个暗夜危机的关卡还不太熟悉&#xff0c;不知道如何开启&#xff0c;下面就让九游小编为大家带来&#xff0c;王者荣耀暗夜危机开启方法介绍。 王者荣耀神秘关卡暗夜危机怎么进&#xff1f; 峡谷异闻... 王者荣耀…

全球顶级大学,在中国录取率却不足0.5%,答案一针见血!

▲点击查看一提起新加坡教育&#xff0c;恐怕大家的第一反应都是&#xff1a;特别牛&#xff01;到底有多牛呢&#xff1f;我们拿数据说话——在全球公认的学生能力测试中&#xff0c;新加坡数学屡屡夺魁&#xff01;在“国际数学和科学评测趋势报告 2019”&#xff08;TIMSS&a…

div+css+js 树形菜单

2019独角兽企业重金招聘Python工程师标准>>> 代码&#xff1a; <div class"main_2"> <div class"m_left"> <ul class"nav"> <li id"bottom_none"><a href"#" onClick"DoMenu(C…

马化腾最崇拜的作家吴晓波《历代经济变革得失》读书笔记

吴晓波先生&#xff0c;是马化腾最崇拜的作家&#xff0c;腾讯的朋友说&#xff0c;马化腾逢人便推荐吴晓波的写的书《历代经济变革得失》&#xff0c;并亲自指示腾讯视频免费推广这个视频讲座。这本书我通读了两遍&#xff0c;总结了如下的笔记&#xff1a;

SQL:认识数据库约束

讲了关于数据库的很多内容&#xff0c;也讲了很多约束&#xff0c;对唯一和主键、核查和规则、外键约束很感兴趣。 一、唯一和主键&#xff08;实体完整性&#xff09;区别&#xff1a;数量&#xff1a;一张表只可以有一个主键约束&#xff0c;却可以有多个唯一约束。是否空值&…

Android之使用IDA Pro静态分析so文件

安卓应用程序的开发语言是java&#xff0c;但是由于java层的代码很容易被反编译&#xff0c;而反编译c/c程序的难度比较大&#xff0c;所以现在很多安卓应用程序的核心部分都使用NDK进行开发。关于NDK的开发知识点&#xff0c;请看这篇博客&#xff1a;Android之NDK开发。 关于…

.NET 6 中的 Logging Source Generator

.NET 6 中的 Logging Source GeneratorIntroLogging source generator 是 .NET 6 引入的一个新功能&#xff0c;借助 Source Generator 来实现&#xff0c;因为要用到 C# 9 中的分部方法(partial method)&#xff0c;C# 语言需要使用 9 及以上版本&#xff0c;具有更好的性能以…

电脑内部录音教程Virtual Audio Cable使用教程

1:下载Virtual Audio Cable2&#xff1a;安装Virtual Audio Cable3&#xff1a;设置&#xff08;注意这里line1不要开启监听其他设备&#xff09;3&#xff1a;打开声音传输通道软件C:\Program Files\Virtual Audio Cable\audiorepeater.exe点击start启动&#xff0c;最小化。4…

战队口号霸气押韵8字_高考励志班级口号霸气押韵大全

【导语】高考没有什么可怕的&#xff0c;一定要保证心态好&#xff0c;就可能考出比平时更好的成绩。下面是无忧考网分享的高考励志班级口号霸气押韵大全。欢迎阅读参考&#xff01;【篇一】高考励志班级口号霸气押韵1.激情澎湃&#xff0c;高考不败&#xff0c;斗志昂扬&#…

别说理科男不懂撩妹,这个老司机一生只爱两样:物理和18岁的少女

全世界只有3.14 % 的人关注了爆炸吧知识相信在很多人的眼中&#xff0c;科研人员都是正经和严肃的代名词。成就大&#xff0c;光芒大&#xff0c;仿佛天生圣人。但是超模君在和大家讲了这么多科学家的故事后&#xff0c;发现还是那句俗话说得好&#xff1a;科研是科研&#xff…

一条nginx命令引发的对于容器的思考

去年的时候写了一篇原创《前后端分离&#xff0c;如何在前端项目中动态插入后端API基地址&#xff1f;&#xff08;in docker&#xff09;》&#xff0c; 我自认为这篇生产实践是对大前端、 容器化、CI/CD的得意之作。对于前后端分离的web项目&#xff0c;在容器启动的瞬间&…

部门树形结构,使用Treeview控件显示部门

部门树形结构。设计张部门表用于存储部门编码、名称、上级部门id&#xff0c;使用Treeview控件显示部门树&#xff0c;并实现部门增删改、移动、折叠等功能。特别提示&#xff0c;部门有层级关系&#xff0c;可用donetbar的adtree控件 代码如下 1 using System;2 using System.…

移动端 登陆 模板 html_聚会邀请函请柬模板 免费设计制作生成

制作邀请函 请关注我们聚会并非你的个人发布会和生活成果展&#xff0c;而在于描绘经历了风雨沧桑的那道彩虹&#xff0c;世事变化&#xff0c;聚会不是为了显示某人身居高位&#xff0c;也不是衣锦还乡或日过斗金、大富大贵的炫耀&#xff0c;重温那充满梦想的花样年华&#x…