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"> 

コントローラページ:

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

モデルページ:

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に存在する場合、
  • すべてのチェックボックスをオンにすると、すでに存在していると表示されます。
  • 最初の値のみが重複してチェックされているようです。
4

2 に答える 2

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

}

それをチェックしてください私はそれがうまくいくと思います

于 2013-03-06T15:42:40.070 に答える
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;
}
于 2013-03-06T13:26:15.110 に答える