ci框架(二),ci框架_PHP教程
ci框架(二),ci框架
自定义SQL语句
当提供的API满足不了我们对SQL语句的要求的时候,我们通常是自己来写SQL语句,CI也提供了比较强大了,能够满足我们需求的一般的sql的API。
<span>$res</span>=<span>$this</span>->db->select('id,name'<span>) </span>->from('表名'<span>) </span>->whrer('id >=',5)<span>//</span><span>注意id后面要有个空格</span> ->limit(3,2<span>)<span>//这里与sql的limit是顺序是反的</span> </span>->order_by('id desc '<span>) </span>->get();<span>//</span><span>翻译成sql语句</span> <span>var_dump</span>(<span>$res</span>-><span>result()); </span><span>echo</span> <span>$this</span>->db->last_query();<span>//</span><span>先是最近一条SQL</span>
自定义扩展控制器
在application/core中新建MY_Controller.php
<span>class</span> MY_Controller <span>extends</span><span> CI_Controller { </span><span>public</span> <span>function</span><span> __construct() { parent</span>::<span>__construct(); </span><span>//</span><span>一定呀先调用父类的构造方法 //登录验证、权限验证、其他操作。。。</span> <span> } }</span>
同时需要在application/config/config.php中配置一下:
<span>$config</span>['subclass_prefix'] = 'MY_';
自定义扩展模型
在application/models中创建user_model.php
<span>class</span> User_model <span>extends</span><span> CI_Model { </span><span>public</span> <span>function</span><span> getAll() { </span><span>$res</span> = <span>$this</span>->db->get('表名'<span>); </span><span>return</span> <span>$res</span>-><span>result(); } }</span>
在控制器中调用自定义模型
application/controllers:
<span>class</span> User <span>extends</span><span> MY_Controller { </span><span>public</span> <span>function</span><span> index() { </span><span>$this</span>->load->model('User_model');<span>//</span><span>调用以类名为主,而不是文件名</span>
<span>$list</span> = <span>$this</span>->User_model->getAll();<span>//</span><span>调用模型获取数据</span>
<span>$this</span>->load->view('user/index',<span>array</span>('list'=><span>$list</span>));<span>//</span><span>加载视图</span><span> } }</span>
加载模型的时候可以给模型取一个名字:
<span>$this</span>->load->model('User_model','user');<span>//</span><span>调用以类名为主,而不是文件名 </span> <span>$list</span> = <span>$this</span>->user->getAll();<span>//</span><span>调用模型获取数据</span>
Url相关函数
在表单验证的时候,需要把数据传给控制器,怎么准确的而且可扩展的写action呢,调用API:
<span>public</span> <span>function</span><span> addView() { </span><span>$this</span>->load->helper('url');<span>//</span><span>为了不把表单传递的地址写死,用url函数</span> <span>$this</span>->load->view('user/add'<span>); }</span>
在user/add.php视图当中:
<span><</span><span>form </span><span>action</span><span>="<?php echo site_url('user/insert'); ?>"</span><span> method</span><span>="post"</span><span>></span> <span><!--</span><span> ........</span><span>--></span> <span></</span><span>form</span><span>></span>
如果是index.php目录的话,用:
base_url();
这个API。
同时,每次加载url很麻烦,也可是设置成自动加载,在config/config.php中修改:
<span>$config</span>['helper'] = <span>array</span>('url');
可能在后面的版本中就没有这个自动加载了。
路由
$route['rouxx/showxx/([\d]+)\.html'] = 'rou/show/$1';//插入这句话
分页
- 必须知道的一些参数
总共有多少条记录
一页要有多少条记录
总共多少页
当前页前后要显示多少个分页链接
- 设置一些CI分页类基本参数
<span>//</span><span>总条数</span> <span>$config</span>['total_rows'<span>] </span><span>//</span><span>一页显示几条</span> <span>$config</span>['per_page'<span>] </span><span>//</span><span>定义当前页的前后各有几个数字链接</span> <span>$config</span>['num_links'<span>] </span><span>//</span><span>定义没有分页参数,主URL</span> <span>$config</span>['base_url']
- 调用CI的分页类
<span>$this</span>->load->library('pagination');
- 执行分页方法
<span>$this</span>->pagination->initialize(<span>$config</span>);
- 输出分页链接
<span>echo</span> <span>$this</span>->pagination->create_links();
- 查询部分数据(limit)
<span>echo</span> <span>$this</span>->db->limit(<span>$num</span>,<span>$start</span>); <span>//</span><span>从$start查$num条</span>
<?<span>php </span><span>if</span> ( ! <span>defined</span>('BASEPATH')) <span>exit</span>('No direct script access allowed'<span>); </span><span>class</span> Page <span>extends</span><span> CI_Controller { </span><span>public</span> <span>function</span><span> user_add(){ </span><span>$this</span>->load->model('test_m'<span>); </span><span>for</span> (<span>$i</span> = 1;<span>$i</span> <= 100;<span>$i</span>++<span>){ </span><span>$name</span> = 'u'.<span>$i</span><span>; </span><span>$arr</span> = <span>array</span>("usid"=><span>$i</span>,"uname"=><span>$name</span>,"upass"=>123456<span>); </span><span>$this</span>->test_m->user_insert(<span>$arr</span><span>); } } </span><span>public</span> <span>function</span><span> pagelist(){ </span><span>$this</span>->load->model('test_m'<span>); </span><span>$user</span> = <span>$this</span>->test_m-><span>user_select_all(); </span><span>$allnum</span> = <span>count</span>(<span>$user</span><span>); </span><span>$pagenum</span> = 20<span>; </span><span>$config</span>['total_rows'] = <span>$allnum</span><span>; </span><span>$config</span>['per_page'] = <span>$pagenum</span><span>; </span><span>$config</span>['num_links'] = 3<span>; </span><span>$config</span>['base_url'] = "/CI/index.php/page/pagelist"<span>; </span><span>$config</span>['use_page_numbers'] = <span>true</span><span>; </span><span>$this</span>->load->library('pagination'<span>); </span><span>$this</span>->pagination->initialize(<span>$config</span><span>); </span><span>var_dump</span>(<span>$this</span>->pagination-><span>create_links()); </span><span>echo</span> <span>$this</span>->pagination-><span>create_links(); </span><span>echo</span> "<br />"<span>; </span><span>$id</span> = <span>$this</span>->uri->segment(3); <span>//</span><span>获得url第三段字符</span> <span>$id</span> =<span>$id</span> ? <span>$id</span>:1<span>; </span><span>$start</span> = (<span>$id</span> - 1) * <span>$pagenum</span><span>; </span><span>$list</span> = <span>$this</span>->test_m->user_select_limit(<span>$start</span>,<span>$pagenum</span><span>); </span><span>var_dump</span>(<span>$list</span><span>); } }</span>
上传文件
视图 /views/up.php:
<span><</span><span>html</span><span>></span> <span><</span><span>form </span><span>action</span><span>="ci/CodeIgniter_2.2.0/index.php/upload/up"</span><span> method</span><span>="post"</span><span> enctype</span><span>="multipart/form-data"</span><span>></span> <span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="upfile"</span> <span>/></span> <span><</span><span>input </span><span>type</span><span>="submit"</span><span> name</span><span>="sub"</span><span> value</span><span>="提交"</span> <span>/></span> <span></</span><span>form</span><span>></span> <span></</span><span>html</span><span>></span>
控制器:
- 定义一个数组,设置一些与上传相关的参数
<span>$config</span>['upload_path'] = './uploads/'<span>; </span><span>//</span><span>设置允许上传的类型</span> <span>$config</span>['allowed_types'] = 'gif|jpg|png'<span>; </span><span>$config</span>['max_size'] = '100'<span>; </span><span>//</span><span>如果是图片还可以设置最大高度和宽度</span> <span>$config</span>['max_height'] = 768<span>; </span><span>$config</span>['max_width'] = 1024;
还可以设置其他的一些额外参数,详细看用户手册。
- 调用CI的上传通用类,并执行上传
<span>//</span><span>upload为调用的类名,全小写</span> <span>$this</span>->load->library('upload',<span>$config</span><span>); </span><span>//</span><span>如果上传框的name写的是userfile,那就不用传参数了,如果不是,把name的值传进去</span> <span>$this</span>->upload->do_upload('上传框的name');
- 接收出错信息或成功信息
<span>//</span><span>出错信息</span> <span>$error</span> = <span>array</span>('error' => <span>$this</span>->upload-><span>display_error()); </span><span>//</span><span>成功信息</span> <span>$data</span> = <span>array</span>('upload_data' => <span>$this</span>->upload->data());
<?<span>php </span><span>if</span> ( ! <span>defined</span>('BASEPATH')) <span>exit</span>('No direct script access allowed'<span>); </span><span>class</span> Upload <span>extends</span><span> CI_Controller { </span><span>//</span><span>显示带表单的视图</span> <span>public</span> <span>function</span><span> index(){ </span><span>$this</span>->load->view('up'<span>); } </span><span>//</span><span>显示上传信息</span> <span>public</span> <span>function</span><span> up(){ </span><span>$config</span>['upload_path'] = './uploads/'<span>; </span><span>$config</span>['allowed_types'] = 'gif|jpg|png'<span>; </span><span>$config</span>['max_size'] = "2000"<span>; </span><span>$this</span>->load->library('upload',<span>$config</span><span>); </span><span>//</span><span>打印成功或错误的信息</span> <span>if</span>(<span>$this</span>->upload->do_upload('upfile'<span>)) { </span><span>$data</span> = <span>array</span>("upload_data" => <span>$this</span>->upload-><span>data()); </span><span>var_dump</span>(<span>$data</span><span>); } </span><span>else</span><span> { </span><span>$error</span> = <span>array</span>("error" => <span>$this</span>->upload-><span>display_errors()); </span><span>var_dump</span>(<span>$error</span><span>); } } }</span>
Session
利用CI类实现session登录
- 修改配置文件(config.php)
<span>//</span><span>生成一个随机不重复的字符串走位加密的key保存到config.php的encryption_key中</span> <span>$config</span>['encryption_key']='adb8bf6d0ac4e17b42a80941582497a4';
- 加载SESSION类
<span>$this</span>->load->library('session');
- 创建SESSION
<span>$array</span> = <span>array</span>('id'=>3,'name'=>'jack'<span>); </span><span>$this</span>->session->set_userdata(<span>$array</span>);
- 查看SESSION
<span>$this</span>->session->userdata(session名);
- 删除SESSION
<span>$this</span>->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;
- 一次性数据,只能读取一次
<span>//</span><span>设置</span> <span>$this</span>->session->set_flashdata('test','aaaaa'<span>); </span><span>//</span><span>读取</span> <span>$test</span> = <span>$this</span>->session->flashdata('test');
控制层
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”; }?>
在view文件里可以直接用$title了 |

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 배열을 2차원에서 1차원 배열로 변환하는 방법: 1. 루프 순회를 사용하여 2차원 배열을 탐색하고 각 요소를 1차원 배열에 추가합니다. 2. "array_merge" 함수를 사용하여 여러 항목을 병합합니다. 2차원 배열을 "array_merge" 함수에 매개변수로 전달하여 1차원 배열로 변환합니다. 3. "array_reduce" 함수를 사용하면 배열의 모든 값을 처리할 수 있습니다. 콜백 함수를 통해 최종적으로 결과를 반환합니다.

PHP 프로그래밍에서 array_sum 함수는 배열의 모든 요소의 합을 계산할 수 있는 매우 실용적인 함수입니다. 그러나 2차원 배열의 요소 열의 합을 계산해야 할 경우 몇 가지 문제에 직면할 수 있습니다. 이 기사에서는 PHP에서 array_sum 함수를 사용하여 2차원 배열 열의 요소 합계를 계산하는 방법을 소개합니다. 먼저 2차원 배열의 개념을 이해해야 합니다. 2차원 배열은 여러 개의 배열을 포함하는 배열로, 테이블로 간주할 수 있습니다. 각 배열은 테이블을 나타냅니다.

PHP에서 2차원 배열을 뒤집는 방법: 1. PHP 샘플 파일을 만듭니다. 2. 2차원 배열을 정의합니다. 3. "array_reverse($a,true);" 함수를 사용하여 배열을 뒤집습니다. "print_r"로 인쇄하려면 2차원 배열을 반대로 하면 됩니다.

PHP 프로그래밍에서는 지정된 열의 값을 얻는 것을 포함하여 배열에 대한 작업을 수행해야 하는 경우가 많습니다. PHP는 매우 편리한 함수인 array_column을 제공하는데, 이는 2차원 배열에서 지정된 열의 값을 빠르게 얻는 데 도움이 됩니다. 이 기사에서는 array_column 함수를 사용하는 방법을 소개합니다. array_column 함수의 기본 사용법: array_column(array$array,mixed$column_key[

PHP에서 2차원 배열을 1차원 배열로 변환하는 방법 PHP 개발 중에 2차원 배열을 1차원 배열로 변환해야 하는 시나리오를 자주 접하게 됩니다. 이 문서에서는 이 작업을 쉽게 완료하는 데 도움이 되는 몇 가지 일반적인 방법을 소개합니다. 방법 1: 루프 탐색 사용 가장 간단하고 직접적인 방법은 루프를 사용하여 2차원 배열을 탐색하고 각 요소를 새로운 1차원 배열에 추가하는 것입니다. 다음은 이 메서드를 사용하는 코드 예제입니다: functionflatenArray($array){$result

PHP5.5 함수에 대한 자세한 설명: array_column 함수를 사용하여 2차원 배열에서 특정 열을 추출하는 방법 PHP5.5 버전에서는 지정된 열을 추출할 수 있는 매우 실용적인 함수입니다. 2차원 배열의 데이터 열입니다. 이는 많은 양의 데이터를 작업할 때 유용하므로 필요한 데이터를 빠르게 얻을 수 있습니다. array_column 함수의 기본 구문은 다음과 같습니다: arrayarray_column(array$

PHP에는 다른 배열을 요소로 저장할 수 있는 특별한 유형의 배열인 2차원 배열이 있습니다. 2차원 배열의 선언과 액세스는 매우 간단합니다. 차원 배열을 사용하고 인덱싱 또는 연관을 요소로 사용하는 것은 실제 프로그래밍에 매우 유용하며 다양하고 복잡한 데이터 구조를 처리하는 데 사용할 수 있습니다.

질문 런타임 컴파일을 사용하여 2차원 배열에 있는 모든 요소의 합과 곱을 계산하는 C 프로그램을 작성하세요. 솔루션 런타임 컴파일 또는 초기화를 동적 할당이라고도 합니다. 실행 시간(런타임)에 메모리를 할당하는 것을 동적 메모리 할당이라고 합니다. calloc() 및 malloc() 함수는 동적 메모리 할당을 지원합니다. calloc() 및 malloc() 함수는 동적 메모리 할당을 지원합니다. p>이 프로그램에서는 2D 배열의 모든 요소의 합과 런타임 시 모든 요소의 곱을 계산합니다. 논리는 2D 배열의 모든 요소의 합을 계산하는 데 사용됩니다. printf("Sumarrayis:");for(i=0;i<2;i++){&
