justdoit 发表于 2012-2-21 14:45:27

CI简单的插入数据库操作(含详尽的思路流程分析和代码)

CI开发例子一思路如下:
1:先找到控制器welcome.php下面的index方法
    (1):定义了data['title']和data['headline']的值
    (2):data['include']='home';//这句话的作用实际上是在后来的视图temple.php中再调用从视图

home.php
    (3):$this->load->vars($data);
    (4):载入视图template.php
2:进入视图template.php
    其中包含了<?php echo $this->load->view($include);?>这句话也就是加载从视图home.php
3:进入视图home.php
    由于在控制器welcome.php中已经载入了form的函数库,所以在home.php中九可以使用它的方法来快

速的建立html标签了:比如input框,textarea框等。这里有一点需要注意的是,在使用form_open的时候一

定要把里面的参数写正确,因为这个参数代表的是将来的form表单的action值,如果传值错误的话,将来

德url是找不到地址的。
    这里form_open()的参数是"welcome/contactus",也就是说form表单提交的地址

是"welcome/contactus".即代表的意思是将数据交给控制器welcome.php里的contactus方法来处理。
4:控制器welcome.php里的contactus方法
   (1):$this->load()->helper('url');//加载辅助函数url,因为下面要用到redirect()方法
   (2):对提交的数据进行判断。(这里仅做了一个简单的判断,读者可以根据自己的情况来进行相应的

改变)如果提交的数据为空的话,就让页面重定向到本页,如果提交的数据不为空的话,则将数据插入到

数据库里,所以自然而然要调用到模型里的contactus方法了。(这里也就充分体现的MVC的思想)
5:模型Mcontacts.php里的contactus方法
   (1):使用$this->input->post()接收从表单里传过来的数据
   (2):使用$this->security->xss_clean()数据进行过滤,提高安全性
   (3):使用$this->db->insert()将处理后的数据插入数据库
6:控制器welcome.php里的contactus方法
      redirect('welcome/thankyou','refresh');//在数据插入数据库成功之后,转向一个提示成功的


7:控制器welcome.php里的thankyou方法
    (1):$data['title']和$data['headline'];//定义相关的提示信息的变量
    (3):$data['include'] = 'thanks';///这句话的作用实际上是在后来的视图temple.php中再调用从视

图thanks.php
    (2):载入对应的模板template.php,来显示提示信息。
至此,思路分析完毕。
代码区:
   控制器welcome.php
   <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller {
      function index(){
          $this->load->helper('form'); //载入helpers文件夹中的辅助文件form_helper.php
          $data['title'] = "Welcome to our Site";//标题
          $data['headline'] = "Welcome!";
          $data['include'] = 'home';
          $this->load->vars($data);//相当于extract函数。键名用于变量名,键值用于变量值
          $this->load->view('template');
      }
      function contactus(){
         $this->load->helper('url');
          if ($this->input->post('email')){
                $this->load->model('Mcontacts','',TRUE); //载入模型      
                $this->Mcontacts->addContact();
                redirect('welcome/thankyou','refresh');
          }else{
                redirect('welcome/index','refresh');
          }
      }
      function thankyou(){
          $data['title'] = "Thank You!";
          $data['headline'] = "Thanks!";
          $data['include'] = 'thanks';
          $this->load->vars($data);
          $this->load->view('template');
      }
}
视图template.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title><?php echo $title;?></title>
<style>label { display:block;}</style>
</head>
<body>
<h1><?php echo $headline;?></h1>
<?php $this->load->view($include);?>
</body>
</html>
视图home.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title><?php echo $title;?></title>
<style>label { display:block;}</style>
</head>
<body>
<p>This is random text for the CodeIgniter article.
There's nothing to see here folks, just move along!</p>
<h2>Contact Us</h2>
<?php
echo form_open('welcome/contactus'); //创建一个开始form标签<form method="post" accept-charset="utf-8" action="http://localhost/CodeIgniter/index.php/welcome/contactus" />
echo form_label('your name','name');//帮助你生成一个label<label for="name">your name</label>
$ndata = array('name' => 'name', 'id' => 'id', 'size' => '25');
echo form_input($ndata);    //可以使你创建一个标准输入栏

echo form_label('your email','email');//帮助你生成一个label<label for="email">your email</label>
$edata = array('name' => 'email', 'id' => 'email', 'size' => '25');//可以使你创建一个标准输入栏
echo form_input($edata);

echo form_label('how can you help you?','notes');
$cdata = array('name' => 'notes', 'id' => 'notes', 'cols' => '40', 'rows' => '5');
echo form_textarea($cdata);

echo form_submit('submit','send us a note');//帮助你生成一个标准的submit按钮 <input type="submit" name="submit" value="send us a note!" />
echo form_close();//作用是生成一个关闭 </form> 标签

?>
</body>
</html>
视图thanks.php
<p>恭喜你哦,插入数据成功!</p>
模型mcontacts.php
<?php
class Mcontacts extends CI_Model{
    function __construct()
    {
      parent::__construct();
    }

      function addContact(){
          $now = date("Y-m-d H:i:s");
          $data = array(
                'name' => $this->security->xss_clean($this->input->post('name')),
                'email' => $this->security->xss_clean($this->input->post('email')),
                'notes' => $this->security->xss_clean($this->input->post('notes')),
                'ipaddress' => $this->input->ip_address(),
                'stamp' => $now
          );
          $this->db->insert('contacts', $data);
         }
}
以上为全部代码。
新手接触第二天,分析不对的地方,请高手们指出!
(大家在下载代码后请根据自己的情况修改config.php和database.php里的相应的配置信息)

bob 发表于 2012-3-23 18:16:09

学习了。。

try 发表于 2012-3-31 11:32:22

不错的教程,学习了

garygay 发表于 2012-5-2 10:27:02

真心不错 学习

haoboweb 发表于 2012-6-24 23:32:15

我也刚学。讲的很好。

马谎言 发表于 2013-9-17 16:08:45

提交后不能跳转啊
页: [1]
查看完整版本: CI简单的插入数据库操作(含详尽的思路流程分析和代码)