news.php代码如下:
<pre name="code" class="php"><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class News extends CI_Controller{
public function __construct()
{
parent::__construct();
#载入news_model,载入之后可以使用$this->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);
}
//编辑新闻
public function edit(){
}
//删除新闻
public function delete(){
}
}
News_model.php代码:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class News_model extends CI_Model{
const TBL = 'news';
//构造函数
public function __construct()
{
//调用父类构造函数,必不可少
parent::__construct();
//手动载入数据库操作类
$this->load->database();
}
/**
*@access public
*@param $data array
*@return bool 成功返回true,失败返回false
*/
public function add_news($data){
//使用AR完成插入操作
return $this->db->insert(self::TBL,$data);
}
/**
*@access public
*@return array 查询结果
*/
public function list_news(){
$query = $this->db->get(self::TBL);
return $query->result_array();
}
public function edit_news(){
}
public function delete_news(){
$query = $this->db->delete(oid);
}
}
add.html代码如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="utf-8">
<title>添加新闻</title>
<style>
</style>
</head>
<body>
<form action="<?php echo site_url('news/insert')?>" method="POST"/>
<!--form action="news.php" method="post"-->
<fieldset>
<legend>添加新闻</legend>
<ul>
<li><label for="">标题</label><input type="text" name="title"/></li>
<li><label for="">作者</label><input type="text" name="author"/></li>
<li><label for="">正文</label><textarea name="content" id="" cols="100" rows="7"></textarea></li>
<li><label for=""> </label><input type="submit" name="btn" value="添加"/></li>
<input type="hidden" name="act" value="add" />
</ul>
</fieldset>
</form>
</body>
</html>
注意点:构造函数这里__construct是两个下划线,method方法后最好是大写,比如POST,GET等等。
第一个添加新闻的案例编码结束后,总结CI的执行流程大致为:
控制器:囊括了所有可能的操作函数或者方法
一般首先加载视图,也就是HTML文件,页面的操作由<form action="<?php echo site_url('news/insert')?>" method="POST"/></form>这样一个表单操作来触发后续流程,这里触发的操作就是一个insert的操作,这个insert的函数或者方法依然是控制器中news这个扩展类的函数,而由于insert涉及到了操作数据库,所以首先必须将操作数据库的model扩展类在控制器中首先加载进来,这样insert函数就可以直接调用news_model中方法了。