2014-03-25 22:53 1015人阅读 评论(0) 收藏 举报
 分类:
Code Igniter(3) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

1、建立数据库

运用Navicat For MySQL工具,创建一个数据库,名称为"news",

并建立如下表(鼠标右键,命令行运行如下sql语句):

  1. CREATE TABLE news (
  2. id int(11) NOT NULL AUTO_INCREMENT,
  3. title varchar(128) NOT NULL,
  4. slug varchar(128) NOT NULL,
  5. text text NOT NULL,
  6. PRIMARY KEY (id),
  7. KEY slug (slug)
  8. );

建立完数据库以及表之后,刷新数据库,然后双击打开news表,填充两条内容。

第一条:(title slug text) 分别为(1,first,Nice Weather!)

第二条:(title slug text) 分别为(2,second, Pray for MH370!)

2、建立Model模型

在本系列第二讲中,已经将codeigniter安装包拷贝到了wampserver的www目录下。

在codeigniter文件夹中,我们在application/models下新建一个文件,名称为“news_model.PHP

  1. <?php
  2. class News_model extends CI_Model {
  3. public function __construct()
  4. {
  5. $this->load->database();
  6. }
  7. public function get_news($slug = FALSE)
  8. {
  9. if ($slug === FALSE)
  10. {
  11. $query = $this->db->get('news');
  12. return $query->result_array();
  13. }
  14. $query = $this->db->get_where('news', array('slug' => $slug));
  15. return $query->row_array();
  16. }
  17. public function set_news()
  18. {
  19. $this->load->helper('url');
  20. $slug = url_title($this->input->post('title'), 'dash', TRUE);
  21. $data = array(
  22. 'title' => $this->input->post('title'),
  23. 'slug' => $slug,
  24. 'text' => $this->input->post('text')
  25. );
  26. return $this->db->insert('news', $data);
  27. }
  28. }
  29. ?>

model必须继承CI_Model,构造函数用于加载数据库,get_news用于读取数据库中的新闻,set_news用于插入一条新闻记录。

3、建立View

在application下新建两个文件夹,templates和news。

在templates文件夹下,新建两个文件,header.php和footer.php。

header.php的内容如下:

  1. <html>
  2. <head>
  3. <title><?php echo $title ?> - News</title>
  4. </head>
  5. <body>
  6. <h1>News</h1>

footer.php的内容如下:

  1. <strong>© 2011</strong>
  2. </body>
  3. </html>

在news文件夹下,新建四个文件,index.php, success.php, view.php和create.php。

index.php内容如下:

  1. <?php foreach ($news as $news_item): ?>
  2. <h2><?php echo $news_item['title'] ?></h2>
  3. <div id="main">
  4. <?php echo $news_item['text'] ?>
  5. </div>
  6. <p><a href="news/<?php echo $news_item['slug'] ?>">View article</a></p>
  7. <?php endforeach ?>

success.php内容如下:

  1. Success

view.php内容如下:

  1. <?php
  2. echo '<h2>'.$news_item['title'].'</h2>';
  3. echo $news_item['text'];
  4. ?>

create.php内容如下:

  1. <h2>Create a news item</h2>
  2. <?php echo validation_errors(); ?>
  3. <?php echo form_open('news/create') ?>
  4. <label for="title">Title</label>
  5. <input type="input" name="title" /><br />
  6. <label for="text">Text</label>
  7. <textarea name="text"></textarea><br />
  8. <input type="submit" name="submit" value="Create news item" />
  9. </form>

4、建立Controller

在application/controllers下新建文件news.php。

news.php文件内容如下:

  1. <?php
  2. class News extends CI_Controller {
  3. public function __construct()
  4. {
  5. parent::__construct();
  6. $this->load->model('news_model');
  7. }
  8. public function index()
  9. {
  10. $data['news'] = $this->news_model->get_news();
  11. $data['title'] = 'News archive';
  12. $this->load->view('templates/header', $data);
  13. $this->load->view('news/index', $data);
  14. $this->load->view('templates/footer');
  15. }
  16. public function view($slug)
  17. {
  18. $data['news_item'] = $this->news_model->get_news($slug);
  19. if (empty($data['news_item']))
  20. {
  21. show_404();
  22. }
  23. $data['title'] = $data['news_item']['title'];
  24. $this->load->view('templates/header', $data);
  25. $this->load->view('news/view', $data);
  26. $this->load->view('templates/footer');
  27. }
  28. public function create()
  29. {
  30. $this->load->helper('form');
  31. $this->load->library('form_validation');
  32. $data['title'] = 'Create a news item';
  33. $this->form_validation->set_rules('title', 'Title', 'required');
  34. $this->form_validation->set_rules('text', 'text', 'required');
  35. if ($this->form_validation->run() === FALSE)
  36. {
  37. $this->load->view('templates/header', $data);
  38. $this->load->view('news/create');
  39. $this->load->view('templates/footer');
  40. }
  41. else
  42. {
  43. $this->news_model->set_news();
  44. $this->load->view('news/success');
  45. }
  46. }
  47. }
  48. ?>

Controller用于加载news_model以及生成view视图。其中,除了构造函数之外,其他的每一个函数对应一个界面。

5、修改配置文件

修改数据库文件,在application/config下,打开database.php,修改如下内容,添加数据库、用户名、密码等信息。

修改application/config下的routes.php,输出已有的两行代码,添加如下内容,

  1. $route['news/create'] = 'news/create';
  2. $route['news/(:any)'] = 'news/view/$1';
  3. $route['news'] = 'news';
  4. $route['(:any)'] = 'pages/view/$1';
  5. $route['default_controller'] = 'welcome';

6、测试

在浏览器中输入如下网址,

http://127.0.0.1/codeigniter/index.php/news

可以看到如下页面:

输入如下网址:

http://127.0.0.1/codeigniter/index.php/news/create

可以看到如下添加新闻的界面:

同时两个页面中都有一些链接,可以点击,对应着views/news下的几个文件。

总结:CodeIgniter是基于MVC架构的。只要相应的开发model、view以及controller即可。model用于管理数据,view用于显示,controller充当中介者,用于管理model以及view以及其他资源。学习框架最好的方式,就是搭建一个简单的项目,并且阅读其中的代码。要学习model、view以及controller的代码。

CodeIgniter开发实际案例-新闻网站【转】的更多相关文章

  1. 使用JDK开发WebServrice案例

    使用JDK开发WebServrice案例: 一.开发WebService服务器端 第一步:创建Java工程 ,创建相应的包(服务端)使用JDK开发(1.6以上版本) 第二步:建一个接口WebServi ...

  2. Hadoop企业开发场景案例,虚拟机服务器调优

    Hadoop企业开发场景案例 1 案例需求 ​ (1)需求:从1G数据中,统计每个单词出现次数.服务器3台,每台配置4G内存,4核CPU,4线程. ​ (2)需求分析: ​ 1G/128m = 8个M ...

  3. Unit01: JAVA开发环境案例

    Top JAVA Fundamental DAY01 JDK及Eclipse目录结构操作 JDK的安装及配置 控制台版的JAVA HelloWorld 使用Eclipse开发Java应用程序 1 JD ...

  4. Codeigniter开发技巧:连接多个数据库(可实现DB读写分离)

    在开发中,我们有时候会遇到在同一程序中链接多个数据库的需求,这对Codeigniter框架来说是很简单的,我们只需要在 database.php文件中配置少许参数即可. 默认情况下,CI配置的是链接一 ...

  5. C++/C# 开发高级案例资料一次送!关注加群领取哦!

    目前C/C++.C#.JAVA等语言开发的在线教育比较火爆,但小编所见的讲解高级案例的非常少,切合市场需求的较少.而且针对铁路.公路.建筑.市政.制造业等所有工业计算机辅助设计的开发技术和案例几乎没有 ...

  6. WinFrom开发小案例

    C# 开发环境: VisualStudio2015 数据库: SQLserver2008 程序主界面: 注释: lbl标签: 程序中的lbl标签:编号.人数.姓名.性别.请输入要查询的信息,这里他们只 ...

  7. Hadoop应用开发实战案例 第2周 Web日志分析项目 张丹

    课程内容 本文链接: 张丹博客 http://www.fens.me 用Maven构建Hadoop项目 http://blog.fens.me/hadoop-maven-eclipse/程序源代码下载 ...

  8. 015_[小插曲]看黄老师《炼数成金Hadoop应用开发实战案例》笔记

    1.大数据金字塔结构 Data Source-->Data Warehouses/Data Marts-->data exploration-->Data Mining-->D ...

  9. js--基于面向对象的组件开发及案例

    组件的开发:多组对象之间想兄弟关系一样,代码复用的形式. 问题:1).参数不写会报错:利用对象复制————配置参数和默认惨啊书的覆盖关系(逻辑或也可以)2).参数特别多时会出现顺序问题:json解决 ...

随机推荐

  1. Day9 网络编程

    OSI(Open System Interconnect),即开放式系统互联. ISO(International Standards Organization)国际标准化组织 OSI七层模型: TC ...

  2. c#自动更新+安装程序的制作 (转)

    c#自动更新+安装程序的制作 (转)  http://blog.csdn.net/myhuli120/article/details/6927588 一.自动更新的实现 让客户端实现自动更新,通常做法 ...

  3. c++11 auto_ptr介绍

    在代码里面看到了auto_ptr这个东西,正好以前一哥们曾经问过我这个问题..所以特意去搜了搜帖子,学习学习 http://www.cnblogs.com/gaoxianzhi/p/4451803.h ...

  4. MySQL下Limit使用及性能分析

    对于一直用Oracle的我,今天可是非常诧异,MySQL中同一个函数在不同数量级上的性能居然差距如此之大. 先看表ibmng(id,title,info)  唯一  id key 索引title 先看 ...

  5. JavaMail 发送邮件

    JavaMail邮件发送 引用maven jar包 <dependency> <groupId>javax.mail</groupId> <artifactI ...

  6. bzoj 3153: Sone1 Toptree

    3153: Sone1 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 511  Solved: 202[Submit][Status][Discuss ...

  7. 基于opencv的小波变换

    基于opencv的小波变换 提供函数DWT()和IDWT(),前者完成任意层次的小波变换,后者完成任意层次的小波逆变换.输入图像要求必须是单通道浮点图像,对图像大小也有要求(1层变换:w,h必须是2的 ...

  8. 降维(一)----说说主成分分析(PCA)的源头

    降维(一)----说说主成分分析(PCA)的源头 降维系列: 降维(一)----说说主成分分析(PCA)的源头 降维(二)----Laplacian Eigenmaps --------------- ...

  9. 反射实体自动生成EasyUi DataGrid模板

    用EasyUi Datagrid展示数据的时候总是要一下这样一段代码 <table id="dt" class="easyui-datagrid"> ...

  10. Python 全栈开发 -- 监控篇

    如果你已经玩转了 Python 编程语言语法,肯定想用这些知识,开发一款应用程序,它可以是在网上,可以炫耀或出售,那就需要全栈式开发 Python.具体如何创建,部署和运行生产 Python Web ...