我是新学习者使用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>
请告知,谢谢。
答案 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()函数不是绝对必要的,但我发现当深入目录时它会有很大帮助。它只是简化了确保你回到正确的控制器。