用户
 找回密码
 入住 CI 中国社区
搜索
查看: 10919|回复: 5
收起左侧

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

[复制链接]
发表于 2012-2-21 14:45:27 | 显示全部楼层 |阅读模式
CI开发例子一思路如下:
  1:先找到控制器welcome.php下面的index方法
    (1):定义了data['title']和data['headline']的值
    (2):
PHP复制代码
data['include']='home';
复制代码
//这句话的作用实际上是在后来的视图temple.php中再调用从视图

home.php
    (3):
PHP复制代码
$this->load->vars($data);
复制代码

    (4):载入视图template.php
  2:进入视图template.php
    其中包含了
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):
PHP复制代码
$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方法
     
PHP复制代码
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复制代码
<?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
HTML复制代码
<!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
HTML复制代码
<!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
HTML复制代码
<p>恭喜你哦,插入数据成功!</p>
复制代码

模型mcontacts.php
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里的相应的配置信息)

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

发表于 2012-3-23 18:16:09 | 显示全部楼层
学习了。。
发表于 2012-3-31 11:32:22 | 显示全部楼层
不错的教程,学习了
发表于 2012-5-2 10:27:02 | 显示全部楼层
真心不错 学习
发表于 2012-6-24 23:32:15 | 显示全部楼层
我也刚学。讲的很好。
发表于 2013-9-17 16:08:45 | 显示全部楼层
提交后不能跳转啊

本版积分规则