2014-02-13 76 views
1

我有我的複選框的問題我想添加驗證,但我不知道如何看看我的名字字段在驗證規則。CodeIgniter驗證和複選框

我的觀點

<?php 
    foreach($tab1 as $row){ 
?> 
    <a> 
     <input type="checkbox" name="<?php echo 'id_user_'.$row->id_user; ?>" value=" <?php echo $row->id_user; ?>" /> 

    </a> 
     <?php 

當我這樣做,我得到的結果(checkbox的名稱)例如:

id_user_1 
id_user_2 

id_user_3 

現在,我想補充驗證,但:

$this->form_validation->set_rules(' WHAT SHOULD I WRITE HERE ??? ', 'User','required'); 

編輯:

$this->form_validation->set_rules('id_uzytkownika', 'Uzytkownika','required'); 



if ($this->form_validation->run()) 
{ 
    $todo = array(
      'tytul_projektu'=>$this->input->post('tytul_projektu'), 
      'opis_projektu'=>$this->input->post('opis_projektu'), 
      'data_zakonczenia'=>$this->input->post('datepicker') 
      ); 

    $user_projekty = array(
      'id_uzytkownika'=>$this->input->post('id_uzytkownika'), 
      'id_projektu'=>$this->input->post('id'), 
      ); 



    $users = array(); 
      foreach($_POST as $key => $value) 
      { 
       if(strpos($key, 'id_uzytkownika') === 0) 
       { 
        $users[] = $value; 
       } 
      } 

$this->Todo_model->add($todo,$user_projekty,$users); 

VIEW:

<?php 
    foreach($tab1 as $row){ 
    ?> 
    <a> 
     <input type="checkbox" name="<?php echo 'id_uzytkownika['.$row->id_uzytkownika.']'; ?>" value="<?php echo $row->id_uzytkownika; ?>" /> 

MODEL:

function add($data,$data2,$users) 
{ 
    $this->db->insert('projekty', $data);  

$id = $this->db->insert_id('projekty');
$data2['id_projektu'] = $id;

$query = $this->db->query("SELECT * FROM uzytkownicy");

foreach($users as $user) {

$data2['id_uzytkownika'] = $user; 

    $this->db->insert('projekty_uzytkownicy', $data2); } 

    return $query->result(); 

} 
+0

查看http://stackoverflow.com/questions/594820/how-to-set-form-validation-rules-for-codeigniter-dynamically,我使​​用的東西非常像第二個答案那裏。 – SolarBear

+0

您可能想考慮使用[數組作爲字段名稱](http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#arraysasfields)。還[這些](http://ellislab.com/forums/viewthread/109826/)[答案](http://stackoverflow.com/questions/1498505/validating-multidimensional-array-in-code-igniter-with- form-validation-library)可能會有所幫助。 –

+0

當我嘗試做這個'$ this-> form_validation-> set_rules('tab1 []','User','required');'或這個'$ this-> form_validation-> set_rules('tab1 [id_user]' ,'用戶','必需'); '鑑於我總是請插入用戶:( – Icero

回答

0

有你可以拿這幾個方法。使用現有的代碼,首先將創建一個定義所有唯一輸入名稱的循環。

foreach($users as $user) { 
    $this->form_validation->set_rules('id_user_'.$user->id_user, 'User','required'); 
} 

但是,這種邏輯將要求每個複選框被檢查。我不確定在什麼情況下這將被用於。

另一種方法是改變你的html一點點。取而代之的

<input type="checkbox" name="<?php echo 'id_user_'.$row->id_user; ?>" 
     value="<?php echo $row->id_user; ?>" /> 

你可以嘗試使用像

<input type="checkbox" name="<?php echo 'id_user['.$row->id_user.']'; ?>" 
     value="1" /> 

事情這樣,您就可以使基於id_user而不是唯一名稱的形式驗證規則。

+0

最後的方法幾乎工作,但看看編輯在我的第一篇文章中,我有用戶數組,當我想將它保存到數據庫我得到錯誤:'未知列'數組'在'字段列表'中'我怎樣才能修復它? – Icero

+0

發表您正在使用的代碼。 – namkyu

+0

看看編輯:) – Icero