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<?php
$atributos = array('class' => 'formulario', 'role' => 'form'); echo form_open('home/prueba',$atributos);
echo "<input type='text' name='ciudad'>";
echo "<input type='checkbox' name='veh_moto' value='Moto'> Moto";
echo "<input type='checkbox' name='veh_quad' value='Quad'> Quad";
echo "<input type='checkbox' name='veh_coche' value='Coche'> Coche";
echo "<input type='submit'>";
echo form_close();
?>
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 originalpublic function prueba()
{
$post = $this->input->post();
$this->"nombre_de_tu_modelo"->guardarUsuario($post);
}
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 originalpublic function guardarUsuario ($post)
{
$this->db->set('meta_key','ciudad');
$this->db->set('meta',$post['ciudad']);
$query = $this->db->insert('usuarios_meta');
//Y aquí preguntas por cada checkbox que fue clicado y creas un registro para c/u
if (isset($post['veh_moto'])) {
$this->db->set('meta_key','vehiculo');
$this->db->set('meta_value',$post['veh_moto']);
$query=$this->db->insert('usuarios_meta');
}
//y así sucesivamente hacer un insert por cada checkbox que quieras controlar
}
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.