0

0

ci框架(二),ci框架

php中文网

php中文网

发布时间:2016-06-13 09:29:24

|

3440人浏览过

|

来源于php中文网

原创

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。

Phidata
Phidata

Phidata是一个开源框架,可以快速构建和部署AI智能体应用

下载

同时,每次加载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层:


添加结果显示
//此处选择了循环输出从控制层传输的结果




字段名称(含义) //该td中显示的是你从数据库、即model层中获取到的数据的含义,想显示多少,显示哪个,在这里确认


test; ?>


echo “123”;
}?>

 

php CI框架问题?小弟是初学者

在view文件里可以直接用$title了
是 CI 根据$data里的每一个可以声明了一个变量 到view中可以直接调用
CI 架构就是这么干活的 具体怎么去声明的 没太细看
 

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

65

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

43

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

35

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

41

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

204

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

9

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

8

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 2.7万人学习

Excel 教程
Excel 教程

共162课时 | 10.3万人学习

MongoDB 教程
MongoDB 教程

共17课时 | 1.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号