第一天ci框架开发商城2
ci框架开发商城2
1/28/2016 9:45:52 PM
mvc完整案例 mvc完成新闻的增删改查
news控制器news.php
class News extends CI_controller{
public __construct(){
parent::__construct();
//载入news_model
$this->load->model('news_model');}
public function add(){
$this->load_view('add.html');
}
}
设计一张表news.sql
create database ci;
use ci
create table news(
id int unsigned not null primary key auto_increment,
title varchar(50) not null default '',
author varchar(30) not null default '',
content text,
add_time int unsigned not null default 0)engine=myisam charset=utf8;
连接数据库
数据库相关配置 config/database.php
连接数据库 数据库操作类两种方式只需要加载该类即可,手动载入 或者自动载入
$this->load->database
//需要的地方手动载入
自动载入config/autoload.php
$autoload['libraries'] =array('database');加入database
操作数据库,
定义news模型 继承模型基类CI_Model Model_name 类名首字母大写其他字母小写 文件名 类名的小写版News_model news_model.php
class News_model extends CI_Model{
//构造函数
public function __construct(){
//调用父类构造函数 必不可少
parent::__construct();
//手动载入数据库操作类
$this->load->database(); }
}
操作数据库 $this->db->query($sql);//select返回结果集 insert update delete返回布尔值更希望有一个能够自动完成增删改查的一个功能CI中提供了一个active record类 $this->db->insert/update/delete/get 自动能够拼凑sql语句 支持多种数据库
news_model.php 写完后控制器中调用模型
const TBL='news';
public function add_news($data){
return $this->db- >insert(self::TBL,$data);//ar类完成操作
}
/**
*@param $data array
*@return bool 成功返回* true 失败返回FALSE
*/
控制器 news.php 在构造函数中载入news_model,并写入insert方法
class News extends CI_controller
{
public __construct()
{
parent::__construct();
//载入news_model
$this->load->model('news_model');
}
public function add(){
$this->load_view('add.html');
}
public function insert()
{
//调用news_model
if($this->news_model->add_news()
{echo "插入成功";
}else
{echo "插入失败";}
}
}
视图文件中表单action怎么写?
涉及到ci的辅助函数url
配置config.php中 $config['base_url']="http://localhost/citest"
默认情况下 url函数没有加载
可在配置文件中自动加载 config/autoload.php $autoload['helper']=array('url');
提供了 site_url= base_url+index.php
action="<?php echo site_url('news/insert')?>"
//========控制器news.php
class News extends CI_controller
{
public __construct()
{
parent::__construct();
//载入news_model
$this->load->model('news_model');
}
public function add(){
$this->load_view('add.html');
}
public function insert()
{//获取表单数据
$data['title'] = $_POST['title'];
$data['author'] = $_POST['author'];
$data['content'] = $_POST['content'];
$data['add_time'] = time();
//调用news_model
if($this->news_model->add_news($data)
{echo "插入成功";
}else
{echo "插入失败";}
}
}
new.php中显示新闻列表 news_model加入list _news方法
//======news_model
class News_model extends CI_Model{
//构造函数
public function __construct()
{
//调用父类构造函数 必不可少
parent::__construct();
//手动载入数据库操作类
$this->load->database();
}
/**
*@param $data array
*@return bool 成功返回* true 失败返回FALSE
*/
const TBL='news';
public function add_news($data)
{
return $this->db->insert(self::TBL,$data);//AR类完成操作
}
/**
*@acess public
*@return array
*/
public function list_news()
{
$query = $this->db->get(self::TBl,);
return $query->result_array();
}
} //========控制器news.php
class News extends CI_controller
{
public __construct()
{
parent::__construct();
//载入news_model
$this->load->model('news_model');
}
public function add(){
$this->load_view('add.html');
}
public function insert()
{//获取表单数据
$data['title'] = $_POST['title'];
$data['author'] = $_POST['author'];
$data['content'] = $_POST['content'];
$data['add_time'] = time();
//调用news_model
if($this->news_model->add_news($data)
{echo "插入成功";
}else
{echo "插入失败";}
}
public function index()
{//调用list_news方法
$data['news'] =$this->news_model->list_news();
//在视图文件中展示
$this->load->view('list.html',$data);
} }
list.html视图文件
php控制结构替代语法
<?php foreach($news as $row) : ?>
<tr>
<td><?php echo $row['id'] ?></td>
<td><?php echo $row['title'] ?></td>
<td><?php echo $row['author'] ?></td>
<td><?php echo $row['add_time'] ?></td>
<td><a href="<?php echo site_url('news/edit') ;?>" >编辑</a>
<a href="<?php echo site_url('news/delete');?>" >删除</a></td>
</tr>
<?php endforeach; ?>
//读取数据库操作已完成
第一天ci框架开发商城2的更多相关文章
- 第一天ci框架开发商城1
ci框架开发商城1 1/28/2016 9:43:52 PM userguide删除 system application controllers 控制器 models 模型 views 视图 模板 ...
- 记录使用CI框架开发项目时遇到的问题
关于CI框架在视图文件中怎样引入静态资源文件(js,css,images)的问题: 第一步:在application/config/config.php文件中配置 $config['base_url ...
- CI框架 -- 开发环境、生产环境
开发者常常希望当系统运行在开发环境或生产环境中时能有不同的行为, 例如,在开发环境如果程序能输出详细的错误信息将非常有用,但是在 生产环境这将造成一些安全问题. ENVIRONMENT 常量 Code ...
- CI框架入门笔记
当前(2019-03-22)CodeIgniter 框架的最新版本是 3.1.5,于2017年6月发布,距今快两年了也没有更新,这与 Laravel 的更新速度相比差距太大了.因为确实,它是一个很古老 ...
- ***PHP基于H5的微信支付开发详解(CI框架)
这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...
- bootstrap框架开发电子商城案例
bootstrap框架开发电子商城案例 玛图 bootstrap 商城框架
- [原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇)
原文:[原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇) .NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇) 前言:接着上篇来. 系列文章链接: [ ...
- struts2框架开发的第一个应用
写这篇博文,主要是帮助那些刚接触struts2框架开发而不知所措的人,希望批评指正 一.先建立一个web project,命名为struts2 二.在webroot/WEB-INF/lib目录下添加如 ...
- CI框架微信开发-自定义菜单
在CI框架下面实现了自定义菜单功能.写了一个model,一个类库.顺便附带access_token的实现方式 <?php class Makemenu{ public $menustr; pub ...
随机推荐
- 【转】ORACLE的REDO与UNDO
一.什么是redo?redo:oracle在在线或者归档重做日志文件中的记录的信息,外以出现失败时可以利用这些数据来"重放"事务.每个oracle数据都至少有二个在线重做日志组,每 ...
- 为什么类和接口不能使用private和protected?接口的方法不能使用private、protected、default
对于java程序员来说,java的访问权限修饰词public.protected.default.private的区别和使用肯定都不是问题,这里也不再啰嗦了,反正度娘一搜就一大把.最近在整理java ...
- Lr中关于字符串的截取
Action() { char separators[] = "\"processId\":\"";//截取条件 char * token; char ...
- ubuntu14.04下直接修改apache2默认目录导致wordpress样式改变的解决办法
一开始看到网上有各种各样的解决方法: 第一种是直接将 sites-available目录下的000-default.conf中的下列代码: DocumentRoot /var/www/html 修改为 ...
- ecshop不同样式文章页调用不同文章模板
根据需要,希望不同的文章分类下的文章页有不一样的页面风格.也就是说根据文章分类ID来判断,输出不同的文章页模板. 重点就是文章分类的ID. 打开:article.php,在120多行左右,找到$sma ...
- Java笔记:异常
Exception 类的层次 所有的异常类是从 java.lang.Exception 类继承的子类. Exception 类是 Throwable 类的子类.除了Exception类外,Throwa ...
- mysql 分页查询
mysql,; : mysql,; -last. //如果只给定一个参数,它表示返回最大的记录行数目: mysql; 个记录行 ,n. 动态传参的分页查询 SELECT * FROM table LI ...
- 深入理解Web标准(网站标准)
深入理解Web标准(网站标准) 我觉得一名Web前端应该好好理解Web标准到底是什么,为什么要在我们的实际实践中遵循Web标准. 什么是Web标准.百度百科的解释是: WEB标准不是某一个标准,而 ...
- spring自动扫描、DispatcherServlet初始化流程、spring控制器Controller 过程剖析
spring自动扫描1.自动扫描解析器ComponentScanBeanDefinitionParser,从doScan开始扫描解析指定包路径下的类注解信息并注册到工厂容器中. 2.进入后findCa ...
- sqlserver事务隔离小结
SQL Server通过在锁资源上使用不同类型的锁来隔离事务.为了开发安全的事务,定义事务内容以及应在何种情况下回滚至关重要,定义如何以及在多长时间内在事务中保持锁定也同等重要.这由隔离级别决定.应用 ...