2016-04-13 11 views
0

Farklı kullanıcı türleri için codeigniter çerçevesi ve ayar ayrıcalıkları kullanarak web uygulamasında çalışıyorum, bu yüzden her kullanıcı için yaklaşık 35 satırlık db eklemem gerekiyor ve her satırda 6 onay kutusu değeri var (0,1). Bu değerleri dizide saklarken ve ekleme için MODEL'e gönderirken zorluk yaşıyorum. İşte Mutlak onay kutusu değerlerini kodlama kullanarak db'ye ekleme

Kontrolör kodudur: anlayış erişim, ekleme, güncelleme için her onay kutusu için

public function set_priv(){ 

    $data = array(
     array(

      'type_id' => $this->input->post('priv_type_id'), 
      'module_name' => 'Classes', 
      'can_access' => $this->input->post('classes[0]'), 
      'can_insert' => $this->input->post('classes[1]'), 
      'can_delete' => $this->input->post('classes[2]'), 
      'can_update' => $this->input->post('classes[3]'), 
      'can_export' => $this->input->post('classes[4]'), 
      'can_print' => $this->input->post('classes[5]'), 

      ), 
     // ), 
    ); 

} 

HTML Formu Kodu ve silme ayrıcalık vb Neden için çok boyutlu dizi kullanan

<div class="col-md-1"> 
    <input type="checkbox" name="classes[]" /> 
</div> 
<div class="col-md-1"> 
    <input type="checkbox" name="classes[]" /> 
</div> 
<div class="col-md-1"> 
    <input type="checkbox" name="classes[]" /> 
</div> 
<div class="col-md-1"> 
    <input type="checkbox" name="classes[]" /> 
</div> 
<div class="col-md-1"> 
    <input type="checkbox" name="classes[]" /> 
</div> 
<div class="col-md-1"> 
    <input type="checkbox" name="classes[]"/> 
</div> 

cevap

0

veriyi eklemek , dizide onay kutusu değeri alıyorsanız. Sanırım öyle olmalı.

$data = array(
     'type_id' => $this->input->post('priv_type_id'), 
     'module_name' => 'Classes', 
     'can_access' => $this->input->post('classes[0]'), 
     'can_insert' => $this->input->post('classes[1]'), 
     'can_delete' => $this->input->post('classes[2]'), 
     'can_update' => $this->input->post('classes[3]'), 
     'can_export' => $this->input->post('classes[4]'), 
     'can_print' => $this->input->post('classes[5]'), 
    ); 
+0

Ekleyeceğim 34 başka kayıt var, sadece çalışıp çalışmadığı test ettiğim için bu sadece 1 kod. –

+0

daha sonra döngü kullanmalısınız. –

+0

Loop bir sorun değil, sadece 'kodu' $ this-> input-> post ('classes') 'code' kullanıyorsa 'code' dizisini döndürür (0 => 'on', 1 = > 'on', 2 => 'on',) 'code' Bu yüzden hangi onay kutusunu işaretlediğimi bulamıyorum, çünkü yalnızca kontrol edilen onay kutusunun sayısı doğru sırada değil, tüm onay kutularını diğerleriyle birlikte döndürmesi gerektiği anlamına gelir. dizide 'kapalı'. –

0

o zaman kontrol veya ihtiyaç duyulduğu ortadadır onay kutusu karşılaştırmak için aynı diziyi kullanabilirsiniz herhangi diziyi kullanarak görünümünde onay kutularını ekliyorsanız değildir. Burada örneğin

dizi kodunuzu size yani $ veri dizisi kontrol etmek aynı diziyi kullanmak zorunda form gönderme işleminden sonra

<?php foreach($data as $key => $value){ ?> 
    <div class="col-md-1"> 
    <input type="checkbox" name="classes[<?php echo $key; ?>]" /> 
    </div> 
<?php } ?> 

olacak görünümünde görünüm

$data[0] = 'can_access'; 
$data[1] = 'can_delete'; 
$data[2] = 'can_update'; 

onay kutularını eklemektir . gönderdikten sonra kontrolörünüzün kod

$builddata = []; 
foreach($data as $key =>$value){ 
    if(isset($this->input->post('classes['.$key.']'))){ 
    $builddata[$value] = true; 
    }else{ 
    $builddata[$value] = false; 
    } 
} 
printr($builddata); 

diziniz Böyle sonrası verilere erişemez bu

$builddata['can_access'] = true/false; 
$builddata['can_delete'] = true/false; 
$builddata['can_update'] = true/false; 
0

gibi inşa edecek olacaktır. Aşağıya bakın Kod

public function set_priv(){ 
    $classes = $this->input->post('classes'); 
    $data = array(
    array(

     'type_id' => $this->input->post('priv_type_id'), 
     'module_name' => 'Classes', 
     'can_access' => $classes[0], 
     'can_insert' => $classes[1], 
     'can_delete' => $classes[2], 
     'can_update' => $classes[3], 
     'can_export' => $classes[4], 
     'can_print' => $classes[5], 

     ), 
    // ), 
    ); 

} 
+0

Metodunu kullanıyorum ama problem hala aynı.Rastgele onay kutularını seçmemin bir önemi yok Her zaman ilk onay kutusundan açılır. 'Can delete', 'can_export', 'can_print' seçildim, ancak sonuç dizi (0 => dizi ('type_id' => '4', 'module_name' => 'Classes', 'can_access' => ' ',' can_insert '=>' on ',' can_delete '=>' on ',' can_update '=> NULL,' can_export '=> NULL,' can_print '=> NULL,),) –

+0

her birine değer verir. onay kutusunu işaretleyin, ardından dizide mevcut olup olmadığını kontrol edin – Vinie