2013-03-06 104 views
0

我有一個包含複選框陣列形式,我想在數據庫中檢查是否有一定的複選框存在的價值,如果沒有然後將其插入到數據庫:笨檢查複選框陣列是否存在於數據庫

這裏是我的當前代碼:

查看頁:

<form action="<?php echo site_url('test/post_form')?>" method="post"> 
<input type="text" name="full_name"> 
<input type="checkbox" name="subject[]" value="Algebra" > 
<input type="checkbox" name="subject[]" value="Trigonometry" > 
<input type="checkbox" name="subject[]" value="Geometry" > 
<input type="submit" name="submit"> 

控制器Page:

public function post_form() 
{ 
$post_data = array(
'subject'=>$this->input->post('subject'), 
'full_name'=>$this->input->post('full_name'), 
); 

$this->load->model('subject_model'); 
if($this->subject_model->check_subject($post_data)===true) 
{ 
    $this->session->set_flashdata('msg', 'Already Exist'); 
    redirect('test/error_page'); 
} 
else 
{ 
    insert to database 
} 
} 

模型Page:

public function check_subject($post_data=array()) 
{ 
extract($post_data); 
foreach($post_data as $key=>$value) 
{ 
$this->db->select('subject'); 
$this->db->where('subject',$value['subject']); 
$this->db->where('full_name',$value['full_name']); 
$this->db->from('subject_table'); 
$query=$this->db->get(); 

    if ($query->num_rows() > 0) 
    { 
     return true; 
    } 
    else 
    { 
    return true; 
    } 

} 

示例場景:

  • 可以說,在DB三角存在,
  • 如果我檢查所有的複選框,並提交,它仍然插入三角。
  • 但是,如果代數存在於db中,
  • 並且我檢查所有的複選框,它說已經存在。
  • 看起來像只有第一個值被檢查重複。
+0

那麼真正的問題是什麼?獲取錯誤?不能正常工作?怎麼了? – qwerty 2013-03-06 13:16:33

+0

爲什麼你不用'$ this-> input-> post('subject')'數組來定義'$ post_data'數組?我在任何地方都沒有看到'$ this-> input-> post('dept')'的任何輸入數據...... – jtheman 2013-03-06 13:19:27

回答

0

我認爲你必須追蹤在不同的陣列中的數據的基礎上發現的主題,並返回結果,它可能看起來像這樣的事情,你可以將其設置爲True FALSE組合或別的什麼適合你

public function check_subject($post_data=array()) 
{ 
extract($post_data); 
$subjects=array(); 
foreach($post_data as $key=>$value) 
    { 
$this->db->select('subject'); 
$this->db->where('subject',$value['subject']); 
$this->db->where('full_name',$value['full_name']); 
$this->db->from('subject_table'); 
$query=$this->db->get(); 

    if ($query->num_rows() > 0) 
     $subjects[$value['subject']]=true; 
    else 
     $subjects[$value['subject']]=FALSE; 
    } 
return $subjects; 
} 
0

其實你的主題是發佈爲一個數組,這樣你們檢查一下這樣

public function check_subject($post_data=array()) 
{ 
$val = " '". implode("', '",$post_data['subject']) ."' " ; 

$this->db->select('subject'); 
$this->db->where(" subject in {$val} "); 
$this->db->where('full_name',$value['full_name']); 
$this->db->from('subject_table'); 
$query=$this->db->get(); 

    if ($query->num_rows() > 0) 
    { 
    return true; 
    } 
    else 
    { 
    return false; 
    } 

} 

檢查它,我認爲它會工作