我有一个包含8个输入字段的表单。现在我不想更新数据库中的字段,如果它是空的。
这是我想检查的字段。如果为空则不更新它们并保留原始值。怎么做?
这是我在我的控制器中的功能
function update_profile(){
$data = array(
'name' => $this->input->post('name'),
'email' => $this->input->post('email'),
'telefoon' => $this->input->post('telefoon'),
'gsm' => $this->input->post('gsm'),
'facebook' => $this->input->post('facebook'),
'twitter' => $this->input->post('twitter'),
'portfolio' => $this->input->post('portfolio'),
'profilefoto' => $this->input->post('browse')
);
$this->kdg_model->update_profile($data);
}
我的模特
function update_profile($data) {
$session_id = $this->session->userdata('user');
$this->db->where('user', $session_id);
$this->db->update('user', $data);
}
答案 0 :(得分:3)
只需从主array
中移除该字段,然后以不同的方式进行检查。
我们假设这是你的$data
数组:
$data = array(
'naam' => $this->input->post('naam'),
'email' => $this->input->post('email'),
'telefoon' => $this->input->post('telefoon'),
'gsm' => $this->input->post('gsm'),
'facebook' => $this->input->post('facebook'),
'twitter' => $this->input->post('twitter'),
'portfolio' => $this->input->post('portfolio'),
'profielfoto' => $this->input->post('browse')
);
和约not_update_if_blank
,您需要做的就是在$data
数组之后检查它:
if( $this->input->post('not_update_if_blank') != "" )
{
$data['not_update_if_blank'] = $this->input->post('not_update_if_blank');
}
现在您可以将$data
传递给您的模型。
编辑:
$post_array = $this->input->post();
foreach( $post_array as $key=>$value )
{
if(trim($value)!= "")
{
$data[$key] = $value;
}
}
现在将$data
传递给您的模特
注意:测试代码因为我没有测试过它!
答案 1 :(得分:0)
首先,我附近的最佳解决方案是验证表单,但是如果你仍然想避免验证而不是这样:它是最简单的方法,不是很好但是最简单:
E.g
if($name!='' && $email!='' && $facebook!='') //place all your Post variables here same like these 3 variables.
{
//Perform your Updation process here.
}