0

我是使用 CI 的新手,我对如何单击链接以调用控制器中的函数以插入数据库有疑问,我发现一些线程不是在视图中调用函数的正确方法,但或者,如何我达到这样的目的?这是更动态的方式。

控制器:

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);
}

}

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

<h1>Insert into DB</h1>
<p><a href="" >Insert single row</a></p>

请多多指教,谢谢。

4

3 回答 3

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();

}
于 2012-11-29T11:52:59.567 回答
0

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

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

作为记录,base_url() 函数并不是绝对必要的,但我发现它在深入目录时很有帮助。它只是简化了确保您回到正确的控制器的过程。

于 2012-11-29T12:29:55.430 回答
0

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

于 2012-11-29T10:54:04.907 回答