网站开发技术

记点笔记、 学点技术 欢迎交流建站技术。本站关注lamp技术

您尚未登录。

#1 2014-11-19 11:21:58

admin
管理员

ci中如何使用数据库 - 制作一个留言板

第一个问题就是数据库的连接。


ci中数据库的连接很容易, 简单的修改一下配文件就可以完成。

在文件  application/config 下有个文件 database.php 文件。 通过修改配置信息就可以完成数据库的配置

四个重要的信息

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['database'] = 'ipbbs';
$db['default']['dbdriver'] = 'mysql';

这样数据库的信息就配置好了。

是用数据库是 ipbbs



ipbbs.net

离线

#2 2014-11-19 11:29:11

admin
管理员

Re: ci中如何使用数据库 - 制作一个留言板

第二个问题就是创建数据表


这里创建一个最简单的表

create table guestbook (
    id int(11) unsigned  not null auto_increment primary key,
    name varchar(20) not null,
    content varchar(255) not null
) engine=myisam charset=utf8;

除去id ,设置两个字段, 一个留言者的名字, 一个留言的内容


插入一条数据作为测试

insert into guestbook (name, content) values ('ipbbs', 'my site is www.ipbbs.net');

ipbbs.net

离线

#3 2014-11-19 12:08:58

admin
管理员

Re: ci中如何使用数据库 - 制作一个留言板

第三个问题 如果读出这条数据

首先要创建一个模型。

创建的模型需要在  application/models 目录里创建一个文件  guestbook_model.php

<?php

class Guestbook_model extends CI_Model {
    public function __construct() {
        parent::__construct();
        $this->load->database();
    }
    
    public function get_guestbook() {
        $query = $this->db->get('guestbook');
        return $query->result_array();
    }
}

这一定先要加载数据库,才可以使用数据库。加载数据库的方法就是 

 $this->load->database();

当然这条语句写在函数 get_guestbook 也可以, 这样写有个坏处,每一个方法都需要写这句话。

写在 construct 中,只用写一次就ok了。


第二步 就是创建一个控制器, 毕竟url和控制器是相关联的。 在 application/controllers 中创建文件 guestbook.php

<?php

class guestbook extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('guestbook_model');
    }
    
    public function index() {
        $data = $this->guestbook_model->get_guestbook();
        var_dump($data);
    }
}


这里再 controller 中加载了一个模型 guestbook_model 。 这个类中的方法都可以使用模型都可以使用。

直接访问 

http://localhost/ipbbs/index.php/guestbook

可以获得结果

array (size=3)
  'id' => string '1' (length=1)
  'name' => string 'ipbbs' (length=5)
  'content' => string 'my site is www.ipbbs.net' (length=24)



ipbbs.net

离线

#4 2014-11-19 14:18:34

admin
管理员

Re: ci中如何使用数据库 - 制作一个留言板

如何写入数据库

再模型中添加一个方法, 通过这个方法写入数据库

set_guestbook
<?php

class Guestbook_model extends CI_Model {
    public function __construct() {
        parent::__construct();
        $this->load->database();
    }
    
    public function get_guestbook() {
        
        $query = $this->db->get('guestbook');
        return $query->result_array();
    }
    
    public function set_guestbook() {
        
        $data = array (
            'name' => $this->input->post('name'),
            'content' => $this->input->post('content')
        );
        
        return $this->db->insert('guestbook', $data);
    }
}

修改控制器 , index 是首先获得数据, 然后使用模板guestbook.php

<?php

class guestbook extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('guestbook_model');
    }
    
    public function index() {
        $data['guestbook'] = $this->guestbook_model->get_guestbook();
  
        $this->load->view("guestbook", $data);
    }
    
    public function add() {
        if($this->guestbook_model->set_guestbook()) {
            echo "ok";
        } else {
            echo "error";
        }
    }
}

guestbook 的内容是

<!Doctype html>
<html>
    <head>
        <meta charset='utf8' />
        <title> www.ipbbs.net </title>
    </head>
    
    <body>
        <?php
            foreach($guestbook as $v) {
               echo "<p>{$v['id']} # {$v['name']} " ;
               echo "<div> {$v['content']} ";
            }
        ?>
        
        <form action="http://localhost/ipbbs/index.php/guestbook/add" method="post">
            名字: <input type="text" name="name">
            内容: <textarea name="content"></textarea>
            <input type="submit" value="submit"/>
        </form>
    </body>
</html>

这样就可以,查看和添加留言


ipbbs.net

离线

#5 2014-11-19 14:20:29

admin
管理员

Re: ci中如何使用数据库 - 制作一个留言板

这里出现的两个问题 , 第一个是可以提交空的内容

第二个是 使用url 很不方便。


ipbbs.net

离线

页脚

Powered by FluxBB