массив во вставке php codeigniter

У меня есть следующая проблема, я работаю с php и codeigniter, и мне нужно сделать следующую вставку в моей модели, это мой код:

public function guardar_permisos(){
    
    $perfil = $this->session->userdata("perfil");
    $data = json_decode(stripslashes($this->input->post("data")));
    
    foreach ($data as $idpagina) {
      $this->db->set('Id_perfil', $perfil);
      $this->db->set('Id_pagina', $idpagina);
      $sql = $this->db->insert('perfil_pagina');
    }
           if($sql === true) {
           return true; 
        }else {
       return false;
      }

  }

- это моя функция для вставки данных, в переменную профиля я записываю идентификатор профиля, который есть у пользователя сеанса, а переменные данные по почте у меня есть массив, и мне нужно вставить для каждого значения массива строку , например, если у меня есть следующие данные в переменных:

  • $ profile = 1
  • $ data = [2,3,5]

выполнять одна вставка для каждой

  • вставка в profile_page (profile_id, page_id) значения (1,2)
  • вставка в profile_page (profile_id, page_id) значения (1,3)
  • вставить в profile_page (profile_id, page_id) значения (1,5)

Надеюсь, вы понимаете и даете мне указания, как это сделать в codeigniter

<form id="formid">
<label>V<input type="checkbox" value="1" name="check" class="up"><span class="lever"></span></label>
<label>G<input type="checkbox" value="2" name="check" class="up"><span class="lever"></span></label>
<label>M<input type="checkbox" value="3" name="check" class="up"><span class="lever"></span></label>
<label>E<input type="checkbox" value="4" name="check" class="up"><span class="lever"></span></label>
<button type="button" id="send" class="btn bg-blue">Guardar</button>
</form>

$(document).ready(function() {
          $('#send').click(function(){
           var select = [];
           $(":checkbox[name=check]").each(function() {
             if (this.checked) {
               select.push($(this).val());
              }
            });
           if (select.length) {
             var jsonString = JSON.stringify(select);
             $.ajax({
               cache: false,
               type: 'post',  
               data: {data : jsonString},  
               url: '<?php echo site_url();?>user/guardar',
               success: function(data) {
                }
              });
            }else
           alert('seleccione');     
           return false;
          });
        });
0
задан 26.01.2017, 22:49
0 ответов

Ты мог бы делать это в драйвере, в одинокой модели оставь функцию, чтобы сохранять. Например функция в твоей модели могла бы оставаться так:

public function guardar_permisos($arreglo){
    if($this->db->insert('perfil_pagina',$arreglo)){
      return true;
    }else{
      return $this->db->error();
    }
}

И в твоем драйвере ты мог бы делать что-либо подобное:

public function guardar(){
    $perfil = $this->session->userdata("perfil");
    $data = json_decode(stripslashes($this->input->post("data")));

    //suponiendo que data es un arreglo del tipo $data = [2,3,5]
    foreach($data as $key => $value){
      $arreglo = ["Id_perfil"=>$perfil, "Id_pagina" => $value];

      //mi_modelo cambialo por el nombre de tu modelo
      if($this->mi_modelo->guardar_permisos($arreglo)){
        echo "Agregado";
      }else{
        echo "Error";
      }
    }
}
0
ответ дан 03.12.2019, 17:29