Codeigniter onclick可触发控制器中的插入功能

时间:2012-11-29 10:42:39

标签: codeigniter

我是新学习者使用CI,我有问题如何在控制器中调用函数的onclick链接插入数据库,我发现一些线程不是在视图中调用函数的正确方法,但是或者,我怎样才能实现这样的目的呢?这更像是动态的。

控制器:

class Pages extends CI_Controller{

public function view($page='home'){

    if(!file_exists('application/views/pages/'.$page.'.php')){
        show_404(); 
    }

    $data['title'] = ucfirst($page);

    $this->load->helper('url');
    $this->load->model('getdb');

    $data['results'] = $this->getdb->getAll();

    $this->load->view('templates/header', $data);
    $this->load->view('inc/mainmenu', $data);
    $this->load->view('pages/'.$page, $data);
    $this->load->view('templates/footer', $data);
    //$this->insertValues();

}


function insertValues(){
    $this->load->model('getdb');

    $newRow = array(
        'name' => 'andy'
    );

    $this->getdb->insert1($newRow);
    echo "inserted!";
}

}

模型getdb:

class Getdb extends CI_Model {

function getAll(){
    $query = $this->db->query('SELECT * FROM test');

    return $query->result();
}

function insert1($data){
    $this->db->insert('test', $data);
}

}

在View中,我想点击链接并触发insertValues()函数,

<h1>Insert into DB</h1>
<p><a href="" >Insert single row</a></p>
请告知,谢谢。

3 个答案:

答案 0 :(得分:0)

从另一个动作调用一个控制器动作是反MVC。您想要做的是首先调用insertValues操作(从您的链接),执行插入并重定向到view操作。它现在将包含新记录。

答案 1 :(得分:0)

考虑一下像某种名字一样的数组,就像这样。

$data = array(
      'x' => $a,
      'y' => $b,
      'z' => $c,
);

 The variables x,y and z all are column names which you are using in the database to insert. Those names should be same names in the table also.

现在调用模型函数插入。

$this->model->insert_values($data);

在模型文件中写入函数以插入所有值。

public function insert_values($data)
 {
     $this->insert_helper('table_name',$data);
 }

这是插入值的通用函数。

public function insert_helper($table_name, $data_array){
    $this->db->insert($table_name,$data_array);
    return $this->db->insert_id();

}

答案 2 :(得分:0)

这些答案与如何创建链接的简单问题有什么关系?

<h1>Insert into DB</h1>
<p><a href="'.<?php echo base_url();?>.'pages/insertValues" >Insert single row</a></p>

对于记录,base_url()函数不是绝对必要的,但我发现当深入目录时它会有很大帮助。它只是简化了确保你​​回到正确的控制器。