CodeIgniter开发实际案例-新闻网站

转:http://blog.csdn.net/ict2014/article/details/22104711?utm_source=tuicool&utm_medium=referral

标签: codeigniter新闻框架示例
2014-03-25 22:53 1015人阅读 评论(0) 收藏 举报

 分类:
Code Igniter(3) 

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

1、建立数据库

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

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

[sql] view plaincopy print?
  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”

[php] view plaincopy print?
  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的内容如下:

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

footer.php的内容如下:

[html] view plaincopy print?
  1. <strong>© 2011</strong>
  2. </body>
  3. </html>

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

index.php内容如下:

[php] view plaincopy print?
  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内容如下:

[html] view plaincopy print?
  1. Success

view.php内容如下:

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

create.php内容如下:

[php] view plaincopy print?
  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文件内容如下:

[php] view plaincopy print?
  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,输出已有的两行代码,添加如下内容,

[html] view plaincopy print?
  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的代码。

转载于:https://www.cnblogs.com/fangyuan303687320/p/5538127.html

CodeIgniter开发实际案例-新闻网站【转】相关推荐

  1. CodeIgniter开发实际案例-新闻网站

    1.建立数据库 运用Navicat For Mysql工具,创建一个数据库,名称为"news", 并建立如下表(鼠标右键,命令行运行如下sql语句): CREATE TABLE n ...

  2. AOP配置开发入门案例

    该AOP开发入门案例采用XML文件方式配置开发(非注解方式)共包含一个xml文件和4个Java类,创建好web工程后引入相应jar包(文末会给出),建好包(若自定义包名注意更改类中的包名),将xml文 ...

  3. java swing 案例详解_《Java Swing图形界面开发与案例详解》PDF_IT教程网

    资源名称:<Java Swing图形界面开发与案例详解>PDF 内容简介: <Java Swing图形界面开发与案例详解>全书共20章,其中第1-2章主要介绍有关Swing的基 ...

  4. 关于Visual C#.NET数据库开发经典案例解析(附光盘两张)(珍藏版)—的读后感...

    关于Visual C#.NET数据库开发经典案例解析(附光盘两张)(珍藏版)- 评论 读后感:里面的内容很经典,很实用 读后感:给初学者是好,但是是比较旧的了!VS2003 C/S的 读后感:< ...

  5. bootstrapV4.6.0 - 导航栏开发 (案例篇)

    bootstrapV4.6.0 - 导航栏开发 (案例篇) 经验点: 导航栏背景色 ((全window宽度)); 导航栏字体大小设置: 导航栏背景色设置: 导航栏下拉菜单的下拉效果(click改为ho ...

  6. 知识图谱开发实战案例剖析_我从剖析Web开发人员路线图中学到的知识

    知识图谱开发实战案例剖析 by Nicole Archambault 妮可·阿坎巴特(Nicole Archambault) 我从剖析Web开发人员路线图中学到的知识 (What I learned ...

  7. 物联网大数据平台软件开发架构案例解析

    物联网大数据平台软件开发架构案例解析 有人说物联网是引领信息技术的第三次浪潮. 第一次浪潮是个人电脑的出现,开创了信息时代的第一次革命,此次浪潮成就了微软.IBM等巨头. 第二次浪潮是以信息传输为特征 ...

  8. JY游戏开发,案例之 《下到一百层》,欢迎大家品赏。

    JY游戏开发,案例之 <下到一百层>,欢迎大家品赏. 作者:田想兵 博客地址:http://www.cnblogs.com/tianxiangbing JY游戏开发,案例之 <下到一 ...

  9. 直播APP开发成品案例

    直播APP开发,直播APP开发成品案例.直播是现在较为盛行的互动型內容展现,很多人会融合自己的需要挑选相比于的直播内容开展观看,直播的火爆也促使直播APP开发慢慢兴起. 一.直播APP开发功能设计 针 ...

最新文章

  1. 吐血整理:论文写作中注意这些细节,能显著提升成稿质量
  2. 我看.Net My Services
  3. poj 2777(线段树+区间染色)
  4. 分享一个帮助用户全屏阅读的jQuery插件 - jQuery fullscreen
  5. Cobbler体验小记
  6. 重要更新,Office Add-in将全面支持Webview2
  7. SSM框架笔记09:初探Spring——采用Java配置方式
  8. 这几行代码,真的骚!
  9. Test on 2018.10.21
  10. SpringBoot 2.0.0 注入SpingCloud 有bug(目前只有SpringBoot 1.5+ 版本的支持)
  11. 计算机注册dll,电脑注册dll文件和ocx文件的具体方法与操作步骤
  12. oreilly免费电子书
  13. R查看和更改工作路径的命令
  14. Google AdMob账号注册及收款指南(新手必看)
  15. word通配符,查找与替换
  16. 寒假线上兼职:300-500元/小时,安利一个大学生也能月入8K的线上兼职!
  17. 商业汇票的背书、贴现与质押
  18. ResNet详细解读
  19. 下载文件提示【SmartScreen筛选器已阻止了下载】,处理方法
  20. 【环信IM集成指南】Android 端常见问题整理

热门文章

  1. Fortinet_OS怎么通过TFTP烧FOS
  2. 一意孤行,360继续奉行互联网恐怖主义
  3. Inf2Cat应用的参数使用详细介绍
  4. centOS Redhat yum的配置
  5. liunx服务(Nginx服务器 web服务器源码包和rpm 服务平滑升级)
  6. RHEL各版本的XManager4远程配置
  7. 与 Josh Bloch 探讨 Java 未来
  8. Oracle访问远程服务器的数据库
  9. Qt 获取文件夹下所有文件
  10. Unity中如何计算带minimap的贴图资源的大小