CodeIgniter开发实际案例-新闻网站【转】
CodeIgniter开发实际案例-新闻网站
转:http://blog.csdn.net/ict2014/article/details/22104711?utm_source=tuicool&utm_medium=referral

版权声明:本文为博主原创文章,未经博主允许不得转载。
1、建立数据库
运用Navicat For MySQL工具,创建一个数据库,名称为"news",
并建立如下表(鼠标右键,命令行运行如下sql语句):
- CREATE TABLE news (
- id int(11) NOT NULL AUTO_INCREMENT,
- title varchar(128) NOT NULL,
- slug varchar(128) NOT NULL,
- text text NOT NULL,
- PRIMARY KEY (id),
- KEY slug (slug)
- );
建立完数据库以及表之后,刷新数据库,然后双击打开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
- class News_model extends CI_Model {
- public function __construct()
- {
- $this->load->database();
- }
- public function get_news($slug = FALSE)
- {
- if ($slug === FALSE)
- {
- $query = $this->db->get('news');
- return $query->result_array();
- }
- $query = $this->db->get_where('news', array('slug' => $slug));
- return $query->row_array();
- }
- public function set_news()
- {
- $this->load->helper('url');
- $slug = url_title($this->input->post('title'), 'dash', TRUE);
- $data = array(
- 'title' => $this->input->post('title'),
- 'slug' => $slug,
- 'text' => $this->input->post('text')
- );
- return $this->db->insert('news', $data);
- }
- }
- ?>
model必须继承CI_Model,构造函数用于加载数据库,get_news用于读取数据库中的新闻,set_news用于插入一条新闻记录。
3、建立View
在application下新建两个文件夹,templates和news。
在templates文件夹下,新建两个文件,header.php和footer.php。
header.php的内容如下:
- <html>
- <head>
- <title><?php echo $title ?> - News</title>
- </head>
- <body>
- <h1>News</h1>
footer.php的内容如下:
- <strong>© 2011</strong>
- </body>
- </html>
在news文件夹下,新建四个文件,index.php, success.php, view.php和create.php。
index.php内容如下:
- <?php foreach ($news as $news_item): ?>
- <h2><?php echo $news_item['title'] ?></h2>
- <div id="main">
- <?php echo $news_item['text'] ?>
- </div>
- <p><a href="news/<?php echo $news_item['slug'] ?>">View article</a></p>
- <?php endforeach ?>
success.php内容如下:
- Success
view.php内容如下:
- <?php
- echo '<h2>'.$news_item['title'].'</h2>';
- echo $news_item['text'];
- ?>
create.php内容如下:
- <h2>Create a news item</h2>
- <?php echo validation_errors(); ?>
- <?php echo form_open('news/create') ?>
- <label for="title">Title</label>
- <input type="input" name="title" /><br />
- <label for="text">Text</label>
- <textarea name="text"></textarea><br />
- <input type="submit" name="submit" value="Create news item" />
- </form>
4、建立Controller
在application/controllers下新建文件news.php。
news.php文件内容如下:
- <?php
- class News extends CI_Controller {
- public function __construct()
- {
- parent::__construct();
- $this->load->model('news_model');
- }
- public function index()
- {
- $data['news'] = $this->news_model->get_news();
- $data['title'] = 'News archive';
- $this->load->view('templates/header', $data);
- $this->load->view('news/index', $data);
- $this->load->view('templates/footer');
- }
- public function view($slug)
- {
- $data['news_item'] = $this->news_model->get_news($slug);
- if (empty($data['news_item']))
- {
- show_404();
- }
- $data['title'] = $data['news_item']['title'];
- $this->load->view('templates/header', $data);
- $this->load->view('news/view', $data);
- $this->load->view('templates/footer');
- }
- public function create()
- {
- $this->load->helper('form');
- $this->load->library('form_validation');
- $data['title'] = 'Create a news item';
- $this->form_validation->set_rules('title', 'Title', 'required');
- $this->form_validation->set_rules('text', 'text', 'required');
- if ($this->form_validation->run() === FALSE)
- {
- $this->load->view('templates/header', $data);
- $this->load->view('news/create');
- $this->load->view('templates/footer');
- }
- else
- {
- $this->news_model->set_news();
- $this->load->view('news/success');
- }
- }
- }
- ?>
Controller用于加载news_model以及生成view视图。其中,除了构造函数之外,其他的每一个函数对应一个界面。
5、修改配置文件
修改数据库文件,在application/config下,打开database.php,修改如下内容,添加数据库、用户名、密码等信息。
修改application/config下的routes.php,输出已有的两行代码,添加如下内容,
- $route['news/create'] = 'news/create';
- $route['news/(:any)'] = 'news/view/$1';
- $route['news'] = 'news';
- $route['(:any)'] = 'pages/view/$1';
- $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开发实际案例-新闻网站【转】的更多相关文章
- 使用JDK开发WebServrice案例
使用JDK开发WebServrice案例: 一.开发WebService服务器端 第一步:创建Java工程 ,创建相应的包(服务端)使用JDK开发(1.6以上版本) 第二步:建一个接口WebServi ...
- Hadoop企业开发场景案例,虚拟机服务器调优
Hadoop企业开发场景案例 1 案例需求 (1)需求:从1G数据中,统计每个单词出现次数.服务器3台,每台配置4G内存,4核CPU,4线程. (2)需求分析: 1G/128m = 8个M ...
- Unit01: JAVA开发环境案例
Top JAVA Fundamental DAY01 JDK及Eclipse目录结构操作 JDK的安装及配置 控制台版的JAVA HelloWorld 使用Eclipse开发Java应用程序 1 JD ...
- Codeigniter开发技巧:连接多个数据库(可实现DB读写分离)
在开发中,我们有时候会遇到在同一程序中链接多个数据库的需求,这对Codeigniter框架来说是很简单的,我们只需要在 database.php文件中配置少许参数即可. 默认情况下,CI配置的是链接一 ...
- C++/C# 开发高级案例资料一次送!关注加群领取哦!
目前C/C++.C#.JAVA等语言开发的在线教育比较火爆,但小编所见的讲解高级案例的非常少,切合市场需求的较少.而且针对铁路.公路.建筑.市政.制造业等所有工业计算机辅助设计的开发技术和案例几乎没有 ...
- WinFrom开发小案例
C# 开发环境: VisualStudio2015 数据库: SQLserver2008 程序主界面: 注释: lbl标签: 程序中的lbl标签:编号.人数.姓名.性别.请输入要查询的信息,这里他们只 ...
- Hadoop应用开发实战案例 第2周 Web日志分析项目 张丹
课程内容 本文链接: 张丹博客 http://www.fens.me 用Maven构建Hadoop项目 http://blog.fens.me/hadoop-maven-eclipse/程序源代码下载 ...
- 015_[小插曲]看黄老师《炼数成金Hadoop应用开发实战案例》笔记
1.大数据金字塔结构 Data Source-->Data Warehouses/Data Marts-->data exploration-->Data Mining-->D ...
- js--基于面向对象的组件开发及案例
组件的开发:多组对象之间想兄弟关系一样,代码复用的形式. 问题:1).参数不写会报错:利用对象复制————配置参数和默认惨啊书的覆盖关系(逻辑或也可以)2).参数特别多时会出现顺序问题:json解决 ...
随机推荐
- python 函数1
一.背景 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下 ...
- Cocoapod安装 - 管理第三方库
在我们开发移动应用的时候,一般都会使用到第三方工具,而由于第三方类库的种类繁多,我们在项目中进行管理也会相对麻烦,所以此时我们就需要一个包管理工具,在iOS开发中,我们使用最多的就是Cocoapods ...
- bzoj 2510: 弱题 循环矩阵
2510: 弱题 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 124 Solved: 61[Submit][Status][Discuss] De ...
- NGINX+UWSGI部署生产的DJANGO代码
并且NGINX不用ROOT帐户哟. 1,编译安装NGINX及UWSGI及DJANGO,不表述 2,将NGINX文件夹更改为普通用户拥有.但执行文件NGINX仍为ROOT,运行如下命令加入特殊权限标志位 ...
- 《转》SQL Server 2008 数据维护实务
SQL Server 2008 数据维护实务 http://blog.csdn.net/os005/article/details/7739553 http://www.cnblogs.com/xun ...
- struts2文件下载出现Can not find a java.io.InputStream with the name的错误
今天在用struts2就行文件下载时出现如下错误: Servlet.service() for servlet default threw exception java.lang.IllegalArg ...
- 栈的实现(JAVA)
栈定义 栈(stack):是一种特殊的串行形式的数据结构,其特殊之处在于只允许在链接串行或者阵列的 一端进行插入.删除操作.其实现方式可以通过一维阵列和链接串行来实现. Tips:简单的来说栈其实也是 ...
- 【HDOJ】1867 A + B for you again
KMP算法的应用. #include <stdio.h> #include <string.h> #define MAXNUM 100005 char src[MAXNUM], ...
- 【HDOJ】1166 敌兵布阵
线段树. #include <stdio.h> #define maxn 55555 ]; void PushUP(int rt) { sums[rt] = sums[rt<< ...
- m2e使用问题——发布web项目时lib目录下的jar包未发布
解决过程如下: 在项目上点右键查看properties—>Deployment Assembly,看Deploy Path这项上是否缺少WEB-INF/lib这一项. 相关操作截图如下: