2016-04-13 3 views
0

Я работаю над веб-приложением, используя рамки codeigniter и устанавливая привилегии для разных типов пользователей, поэтому мне нужно добавить примерно 35 строк в db для каждого пользователя, и каждая строка имеет 6 флажков (0,1). У меня возникают трудности при сохранении этих значений в массиве и отправке в MODEL для вставки.Mutiple значения флажков вставки в db с использованием codeigniter

Вот код контроллера:

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 код для понимания Каждый флажков для доступа, вставки, обновления и удаления привилегий и т.д.

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

ответ

0

Почему вы используете многомерный массив вставить данные? , если вы получаете значение checkbox в массиве точно. Я думаю, это должно быть.

$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

У меня есть 34 других записи, которые нужно добавить, это код всего лишь 1, поскольку я просто тестирую, работает ли он или нет. –

+0

, тогда вы должны использовать цикл. –

+0

Loop не проблема, но когда я использую только 'code' $ this-> input-> post ('classes') 'code' Он возвращает массив 'code' array (0 => 'on', 1 = > 'on', 2 => 'on',) 'code' Итак, я не могу найти, какой флажок был отмечен, потому что он только возвращает количество отмеченных флажков не в правильном порядке, означает, что он должен возвращать все флажки с другими как 'off' в массиве. –

0

При добавлении флажков на просмотр с помощью любого массива, то вы можете использовать тот же массив для сравнения, который установлен флажок или который не является.

, например, здесь есть массив, чтобы добавить флажков на просмотр

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

на ваш взгляд, ваш код будет

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

после отправки формы вы должны использовать тот же массив, чтобы проверить, то есть массив данных $ , код контроллера после подачи будет

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

ваш массив будет строить как этот

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

Вы не можете получить доступ к сообщению данных, как это. См. Ниже код

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

Я использую ваш метод, но проблема остается такой же.Неважно, если я выбираю случайные флажки Он всегда включается с первого флажка. Я выбрал 'can delete', 'can_export', 'can_print', но result is array (0 => array ('type_id' => '4', 'module_name' => 'Classes', 'can_access' => ' on ',' can_insert '=>' on ',' can_delete '=>' on ',' can_update '=> NULL,' can_export '=> NULL,' can_print '=> NULL,),) –

+0

дать значение каждому установите флажок, если он доступен в массиве, отметьте его как – Vinie

Смежные вопросы