zoukankan      html  css  js  c++  java
  • CodeIgniter 入门教程第一篇:信息发布

    一、MVC

        CodeIgniter 采用MVC架构即:控制层、模型层和视图层。

        对应Application下面的文件夹   (图1):

        所有新建文件以.php结尾

        视图层 view 文件夹放入HTML模板

        模型层 model 存放对数据库操作的代码

        控制层 controllers 存放进行逻辑判断的代码,从模型层取得数据然后输入到视图层,发送给用户。

    e0ed3e758d47432abffae22d2083ea753

        图1

    功能

    1. 模板增加输入表单

    2. 控制器增加接收表单数据的代码,并对用户输入进行简单校验。

    3. 在表单上方输出标题和正文,以及发布时间。

    用到的知识点:CI helper类(url) 和 输入类(input),

    以及CI ActiveRecord 和向模板传值。

    二、初始配置

        1. 链接数据库

        修改数据库配置:/application/config/database.php

      'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'test',
        'dbdriver' => 'mysqli',
        'dbprefix' => 'ts_',
    

      

        2. 修改默认路由

        CI框架采用单文件入口的方式,默认必须通过index.php来访问控制层。比如controllers文件夹下有个名为test的class类,test有个叫home的function,

    则访问URL为:http://www.example.com/index.php/test/home

    三、输出页面

    1. 直接输出HTML模板

        新建两个文件分别位于controllers文件夹和views文件夹

    dd04a067-c93f-4a95-8621-9e0f8aa9d140

        Test.php

    <?php
    
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    class Test extends CI_Controller {
    
        public function home()
    
        {
    
            $this->load->view('home');
    
        }
    
    }
    
    home.php
    
    <?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
    
    <!DOCTYPE html>
    
    <html lang="en">
    
    <head>
    
        <meta charset="UTF-8">
    
        <title>Home</title>
    
    </head>
    
    <body>
    
        <h1>这是我们的主页</h1>
    
    </body>
    
    </html>
    

      

        在浏览器打开类似如下地址:http://test.com/index.php/test/home

    1098f9c8-b8fc-41e7-9dfd-b247246f0325

        2. 插入数据库条目

    创建数据库表ts_news

    b1bf3a49186b459e8352cf242d9a63913

    Test.php

    <?php
    
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    class Test extends CI_Controller {
    
    public function __construct()
    
    {
    
    parent::__construct();
    
    $this->load->helper('url');
    
    $this->load->model('news_model');
    
    }
    
    public function home()
    
    {
    
    $this->load->view('home');
    
    }
    
    public function add_news(){
    
    $title = $this->input->get('title',TRUE);
    
    $content = $this->input->get('content');
    
    if ( (strlen($title) < 20 ) or (strlen($content) < 20 ) ){
    
    echo '标题或正文内容过短';
    
    return false;
    
    }
    
    $arr = array(
    
    'id' => '',
    
    'title' => $title,
    
    'content' => $content,
    
    'update_time' => time(),
    
    'create_time' => time()
    
    );
    
    $check = $this->news_model->insert($arr,'news');
    
    if ($check)
    
    {
    
    redirect('test/home');
    
    }
    
    else
    
    {
    
    echo '提交失败';
    
    }
    
    }
    
    }
    
    home.php
    
    <?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
    
    <!DOCTYPE html>
    
    <html lang="en">
    
    <head>
    
    <meta charset="UTF-8">
    
    <title>Home</title>
    
    </head>
    
    <body>
    
    <h1>这是我们的主页</h1>
    
    <hr>
    
    <form action="<?php echo site_url('test/add_news'); ?>">
    
    <label for="title">标题</label>
    
    <input type="text" name="title" value="">
    
    <br>
    
    <label for="content">正文</label>
    
    <textarea name="content" id="" cols="30" rows="10"></textarea>
    
    <br>
    
    <input type="submit" value="提交" >
    
    </form>
    
    </body>
    
    </html>
    
    News_model.php
    
    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class News_model extends CI_Model {
    
    public function __construct()
    
        {
    
            parent::__construct();
    
            $this->load->database();
    
        }
    
    public function insert($arr,$table)
    
    {
    
    $this->db->insert($table, $arr);
    
            if ($this->db->affected_rows() > 0)
    
            {
    
                return $this->db->insert_id();
    
            }
    
            else
    
            {
    
                return FALSE;
    
            }
    
    }
    
    }
    
    412ded80-4884-4a2f-ae37-6ba69cdc4278
    
    493498ee-0f5c-4676-9cec-38e5a3f3e6fd
    
        3. 查询数据库并输出
    
        News_model.php增加
    
    public function get_all($table)
    
        {
    
            $this->db->select('*');
    
            $query = $this->db->get($table);
    
            $query = $query->result_array();
    
            return $query;
    
        }
    
    Test.php 的 home修改为:
    
    public function home()
    
        {
    
            $news = $this->news_model->get_all('news');
    
            $data['news'] = $news;
    
            $this->load->view('home',$data);
    
        }
    

      Home模板的body修改为:

    <body>
    
    <h1>这是我们的主页</h1>
    
    <?php 
    
    foreach ($news as $key => $value) {
    
    echo '<div>
    
    <h3>'.$value['title'].'</h3>
    
    <span>发布时间:'.date('Y-m-d H:i:s',$value['create_time']).'</span>
    
    <p>'.$value['content'].'</p>
    
    </div>';
    
    }
    
    ?>
    
    <hr>
    
    <form action="<?php echo site_url('test/add_news'); ?>">
    
    <label for="title">标题</label>
    
    <input type="text" name="title" value="">
    
    <br>
    
    <label for="content">正文</label>
    
    <textarea name="content" id="" cols="30" rows="10"></textarea>
    
    <br>
    
    <input type="submit" value="提交" >
    
    </form>
    
    </body>
    

      

      

    刷新查看效果:

    e08e54cc941c4ce99d21aafa80cba2233

    本文地址:http://www.cnblogs.com/martin-tan/p/4708071.html 

    转载请注明出处:http://www.cnblogs.com/martin-tan/
  • 相关阅读:
    log输出到日志和控制台
    CRM--搜索功能
    CRM--对数据进行排序
    CRM-注意的小事情
    CRM--modelform之instance
    CRM--保留原搜索条件
    crm系统
    Django多个app情况下静态文件的配置
    测试
    题库
  • 原文地址:https://www.cnblogs.com/martin-tan/p/4708071.html
Copyright © 2011-2022 走看看