Ver Mensaje Individual
  #8 (permalink)  
Antiguo 28/04/2014, 08:09
Kohm
 
Fecha de Ingreso: enero-2013
Mensajes: 8
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Perfil de usuario en codeigniter

Bueno, interpreto que uno de tus problemas es como almacenar los checkbox en la base de datos, si por cada checkbox crear un registro diferente o crear uno solo con toda la información que fue tildada.

Si quieres almacenar toda la información de un grupo de checkbox en un solo registro (vehiculo=coche-moto-quad) y después recuperarla, puedes hacerlo tranquilamente, al igual que si quieres almacenar en distintos registros (vehiculo=coche, vehiculo=moto).

Entonces primero veamos cómo se forman los checkboxs

vista.php
Código PHP:
Ver original
  1. <?php
  2. $atributos = array('class' => 'formulario', 'role' => 'form');
  3. echo form_open('home/prueba',$atributos);
  4.     echo "<input type='text' name='ciudad'>";
  5.     echo "<input type='checkbox' name='veh_moto' value='Moto'> Moto";
  6.     echo "<input type='checkbox' name='veh_quad' value='Quad'> Quad";
  7.     echo "<input type='checkbox' name='veh_coche' value='Coche'> Coche";
  8.  
  9.     echo "<input type='submit'>";
  10. echo form_close();
  11.  ?>

Como sabemos lo que el formulario envía al controlador es un array asociativo con tantos elementos, como campos (inputs, radios checkbox) fueron utilizados en el formulario, donde los nombres de cada elemento del array es el atributo name=''.
Nota: Si un campo input='text' no fue usado, se lo envia igualmente pero con un string "". Ahora si un campo checkbox no fue utilizado, no se lo envía directamente.

Entonces:

CI Controller

Código PHP:
Ver original
  1. public function prueba()
  2.     {
  3.         $post = $this->input->post();
  4.         $this->"nombre_de_tu_modelo"->guardarUsuario($post);
  5.     }

Y es en el modelo donde tu elijes cómo deseas guardar los datos del usuario

Para el caso de guardarlos en registros diferentes sería así:

CI Model

Código PHP:
Ver original
  1. public function guardarUsuario ($post)
  2.     {
  3.         $this->db->set('meta_key','ciudad');
  4.         $this->db->set('meta',$post['ciudad']);
  5.         $query = $this->db->insert('usuarios_meta');
  6.         //Y aquí preguntas por cada checkbox que fue clicado y creas un registro para c/u
  7.         if (isset($post['veh_moto']))
  8.         {
  9.             $this->db->set('meta_key','vehiculo');
  10.             $this->db->set('meta_value',$post['veh_moto']);
  11.             $query=$this->db->insert('usuarios_meta');
  12.         }
  13.         //y así sucesivamente hacer un insert por cada checkbox que quieras controlar
  14.     }

Ahora si quieres insetar todo en un solo registro lo que debes hacer es concatenar todos los checkbox y separarlos por un caracter como por ejemplo "-" y guardarlos en un registro, puedes guiarte con esto
http://www.php.net/manual/es/function.explode.php

Cualquier cosa que no entiendas me lo dices.

Saludos.