博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
再次用CodeIgniter实现简易blog
阅读量:5751 次
发布时间:2019-06-18

本文共 9873 字,大约阅读时间需要 32 分钟。

 

  天变冷了,人也变得懒了不少,由于工作的需要,最近一直在学习CodeIgniterCI)框架的使用,没有系统的从PHP基本语法学起,在网上靠百度谷歌,东拼西凑的实现了一些简单的功能。所以,老PHPer可以绕道了。

  参考该篇博客所实现的功能,重新用CI实现了一下。

  主要实现文章的添加、查看、删除、搜索。这里面最难实现的是文章分页,看似简单的功能,却费了一些功夫。

当然,离一个完整的系统还有很多功能没开发,这里只是简单引用了bootstrap的样式。

 

 

MVC模型                         

 

CI遵循于MVC模型,如果接触过其它基于MVC模型的web框架的话,理解起来还是比较简单的。

 

    web的开发主要就是在这三个目录下进行。

  • 控制器(controllers目录) 是模型、视图以及其他任何处理 HTTP 请求所必须的资源之间的中介,并生成网页。
  • 模型(models目录) 代表你的数据结构。通常来说,模型类将包含帮助你对数据库进行增删改查的方法。
  • 视图(views目录) 是要展现给用户的信息。一个视图通常就是一个网页,但是在 CodeIgniter 中, 一个视图也可以是一部分页面(例如页头、页尾),它也可以是一个 RSS 页面, 或其他任何类型的页面。

 

注:本文中的CI运行基于WAMPServer 环境。

 

 

创建模型                                                           

打开phpMyAdmin创建表。

 

这里主要基于该表设计,表名为“myblog”。

在.../application/config/database.php 添加数据库连接。

mysql默认密码为空,数据库名为“test”。“myblog”表在“test”库下创建。

 

下面实现数据模型层代码,主要是以CI的规则来操作数据库。

.../application/models/News_model.php

load->database(); } //获取所有blog public function blogs($w,$num,$offset) { if($w == 1) { $query = $this->db->get('myblog',$num,$offset); return $query->result_array(); }elseif(strpos($w,"title like")) { $query = $this->db->query("select * from myblog where $w order by id desc limit 5;"); return $query->result_array(); }else{ $query = $this->db->get('myblog',$num,$offset); return $query->result_array(); } } //查看一篇blog public function up_blogs($id = FALSE) { if ($id === FALSE) { $query = $this->db->get('myblog'); return $query->result_array(); } //更新点击数 $this->db->query("update myblog set hits=hits+1 where id='$id';"); $query = $this->db->get_where('myblog', array('id' => $id)); return $query->row_array(); } //添加一篇blog public function add_blogs() { $this->load->helper('url'); //$slug = url_title($this->input->post('title'), 'dash', TRUE); $d = date("Y-m-d"); $data = array( 'title' => $this->input->post('title'), 'dates' => $d, 'contents' => $this->input->post('text') ); return $this->db->insert('myblog', $data); } //删除一篇blog public function del_blogs($id = FALSE){ $this->load->helper('url'); if ($id === FALSE) { $query = $this->db->get('myblog'); return $query->result_array(); } $array = array( 'id' => $id ); return $this->db->delete("myblog",$array); }}

 

 

创建控制                                                        

控制层一直起着承前启后的作用,前是前端页面,后是后端数据库。

.../application/controllers/News.php

load->model('news_model'); $this->load->helper('url_helper'); } public function index() { $this->load->library('calendar'); //加载日历类 parse_str($_SERVER['QUERY_STRING'], $_GET); $this->load->library('pagination');//加载分页类 $this->load->model('news_model');//加载books模型 $res = $this->db->get('myblog');//进行一次查询 $config['base_url'] = base_url().'index.php/news/index';//设置分页的url路径 $config['total_rows'] = $res->num_rows();//得到数据库中的记录的总条数 $config['per_page'] = '3';//每页记录数 $config['prev_link'] = 'Previous '; $config['next_link'] = ' Next'; $this->pagination->initialize($config);//分页的初始化 if (!empty($_GET['key'])) { $key = $_GET['key']; $w = " title like '%$key%'"; }else{ $w=1; } $data['blogs'] = $this->news_model->blogs($w,$config['per_page'],$this->uri->segment(3));//得到数据库记录 $this->load->view('templates/header'); $this->load->view('news/index', $data); $this->load->view('templates/footer'); } public function view($id = NULL) { $this->load->library('calendar'); $data['blogs_item'] = $this->news_model->up_blogs($id); if (empty($data['blogs_item'])) { show_404(); } $data['title'] = $data['blogs_item']['title']; $this->load->view('templates/header'); $this->load->view('./news/view', $data); $this->load->view('templates/footer'); } public function del($id = NULL) { $this->news_model->del_blogs($id); //通过js跳回原页面 echo' '; } public function create() { $this->load->library('calendar'); //加载日历类 $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->add_blogs(); //跳回blog添加页面 echo' '; } }}

 

 

 

创建视图                                                         

为了让页面好看,使用了bootstrap。

 

定义页头:

.../application/views/templates/header.php

      
Blog Template for Bootstrap
View Code

 

定义页尾:

.../application/views/templates/footer.php

View Code

 不过,这里使用的bootstrap并非引用的本地。而是使用的CDN加速点。

 

blog首页

.../application/views/news/index.php

    

Reading:

...

View article

Delete

pagination->create_links();?>
View Code

 

blog添加页面

.../application/views/news/create.php

Please add an article.

View Code

这里使用了ckeditor 编辑器的使用我们可以创建带格式的文章。同样引的CDN。

 

最后,还要在routes.php文件中添加以下配置。

.../application/config/routes.php

$route['news/create'] = 'news/create';$route['news/view'] = 'news/view/$1';$route['news/del'] = 'news/del/$1';$route['news/news'] = 'news';$route['news'] = 'news';$route['default_controller'] = 'pages/view';

 

好了,主要代码就这些了。感兴趣去github上看完整代码吧!

 

PS:这只是为了练习而已,所以,各个功能很乱,并无打算写一个完整的系统。

 

转载地址:http://zfkkx.baihongyu.com/

你可能感兴趣的文章
详解在webpack中使用axios
查看>>
python自动化常用知识链接汇总
查看>>
Python_装饰器进阶_32
查看>>
Delphi fmx 找不到android设备解决办法
查看>>
防止过拟合:L1/L2正则化
查看>>
Java数据结构与算法(15) - ch06递归(杨辉三角triangle)
查看>>
洗礼灵魂,修炼python(66)--爬虫篇—BeauitifulSoup进阶之“我让你忘记那个负心汉,有我就够了”...
查看>>
机器学习--随机森林
查看>>
nyist --ACM组队练习赛(链接)
查看>>
Away3D 4.1.4 中实现骨骼绑定
查看>>
cogs 330. [NOI2003] 文本编辑器
查看>>
A1061 Dating (20)(20 分)
查看>>
GDAL——命令使用专题——gdalinfo命令
查看>>
[BZOJ3884]上帝与集合的正确用法
查看>>
foreach php中实现的for另一用法
查看>>
Android系统的安全设计与架构
查看>>
Visual Studio2015/2017+OpenCV3.4.0配置
查看>>
杭电1301--Jungle Roads(最小生成树)
查看>>
map 按key排序 按value排序
查看>>
Linux touch命令
查看>>