PHP - ERROR AL ENVIAR CHECKBOX VACIO A BD

 
Vista:
sin imagen de perfil

ERROR AL ENVIAR CHECKBOX VACIO A BD

Publicado por Grissa (15 intervenciones) el 04/02/2015 22:51:18
Hola Tengo un problema con checkbox.
Tengo un formulario con una serie de opciones que el usuario debe seleccionar y almacenar el valor del checkbox en la BD sql.
Si el usuario selecciona todas las opciones no manda error, pero si solo selecciona algunas me marca error de que no encuentra la variable:
LES DEJO PARTE DEL CODIGO ESPERO PUEDAN AYUDARME!!!

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: opcion4


Este es parte de mi código HTML**********

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<input name="opcion1" type="checkbox" id="opcion1" value="CAMINAR FUERA" />
    Caminar  fuera del &aacute;rea delimitada para uso peatonal.</label></td>
</tr>
<tr>
<td><label>
    <input name="opcion2" type="checkbox" id="opcion2" value="IMPRUDENCIA" />
    Introducir  las manos para realizar mantenimiento con el motor encendido.</label></td>
</tr>
<tr>
<td><label>
    <input name="opcion3" type="checkbox" id="opcion3" value="POSICION INCORRECTA" />
    Trabajar  en posici&oacute;n ergon&oacute;mica incorrecta.</label></td>
</tr>
<tr>
<td><label><input name="opcion4" type="checkbox" id="opcion4" value="EQUIPO INADECUADO" />
    Utilizar  herramienta o equipo inadecuado o en malas condiciones.</label></td>

PHP*****************

1
2
3
4
5
6
7
8
9
function agregar_accidente(){
    extract($_POST);
    $this->db->set('r_opcion1',$opcion1);
    $this->db->set('r_opcion2',$opcion2);
    $this->db->set('r_opcion3',$opcion3);
    $this->db->set('r_opcion4',$opcion4);
 
    $this->db->insert('Com_Accidentes');
}


BD SQL
1
2
3
4
5
6
table com_accidentes
id_acc int
r_opcion1 varchar (50);
r_opcion2 varchar (50);
r_opcion3 varchar (50);
r_opcion4 varchar (50);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

ERROR AL ENVIAR CHECKBOX VACIO A BD

Publicado por gonzalo (615 intervenciones) el 05/02/2015 01:51:50
aqui el problema es que el post no detecta los checkbox que no estan activados.

mi recomendacion es que primero determines si el checkbox esta activado y le des un valor de true o false (0,1) a una variable que corresponda al checkbox y sea la variable la que guardes en la base de datos.

ejemplo

1
2
3
4
5
6
7
8
9
if(isset($_POST["opcion4"))
{
$opcion4=true; // o uno
}else
{
$opcion4=false; //o 0
}
 
$this->db->set('r_opcion4',$opcion4);

y asi uno por uno, o amenos que alguien tenga una mejor idea.

suerte, salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ERROR AL ENVIAR CHECKBOX VACIO A BD

Publicado por xve (6935 intervenciones) el 05/02/2015 10:29:09
Es correcto Gonzalo, yo creo que también lo haría así... Si fueran mas registros, buscaría la manera de hacerlo en un bucle que fuera recorriendo todos los valores.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ERROR AL ENVIAR CHECKBOX VACIO A BD

Publicado por Gray (15 intervenciones) el 05/02/2015 19:05:41
Justo lo que necesitaba, agradezco mucho tu apoyo Gonzalo

Una cosa mas Gonzalo, Xve son 35 opciones checkbox como lo podría hacer en un bucle??


Agradezco su apoyo.
Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

ERROR AL ENVIAR CHECKBOX VACIO A BD

Publicado por gonzalo (615 intervenciones) el 05/02/2015 20:21:40
suponiendo que sigues la misma logica con los 35, y suponiendo que el primero es 1.
entonces los nombres serian opcion1, opcion2, opcion3 .. opcion35.

una posible solucion seria:

for($i=1;$i<=36;$i++)
{
$Opcion=false; // o cero
if(isset($_POST["opcion$i"]))
{
$Opcion=true; // o uno
}
$this->db->set('r_opcion'.$i,$Opcion);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ERROR AL ENVIAR CHECKBOX VACIO A BD

Publicado por Gray (15 intervenciones) el 05/02/2015 23:31:14
Lo puse como me indicaste pero no me almacena en mi BD las opciones que selecciono, solo la opcion1 :(


for($i=1;$i<=35;$i++)
{
$Opcion=false; // o cero
if(isset($_POST["opcion$i"]))
{
$Opcion=true; // o uno
}
$this->db->set('r_opcion'.$i,$Opcion);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

ERROR AL ENVIAR CHECKBOX VACIO A BD

Publicado por gonzalo (615 intervenciones) el 06/02/2015 00:46:53
has esta prueba, dime si los encuentra todos los que encendiste.
asegurate que todos los input estan dentro del <form>inputs1-35</form>
confirma si todos los name de los input siguen esta secuencia

<form>
<input name="opcion1" type="checkbox"
...
<input name="opcion10" type="checkbox"
.
<input name="opcion20" type="checkbox"
...
<input name="opcion30" type="checkbox"
...
<input name="opcion35" type="checkbox"
</form>

si cambiaste la nomenclatura del name de "opcion" a "Opcion" entonces no los va a encontrar, los name="opcion??" deben ser todos iguales a exepcion del numero.

for($i=1;$i<=35;$i++)
{
$Opcion=false; // o cero
if(isset($_POST["opcion$i"]))
{echo("opcion$i encendido<br>");
$Opcion=true; // o uno
}
//$this->db->set('r_opcion'.$i,$Opcion);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ERROR AL ENVIAR CHECKBOX VACIO A BD

Publicado por xve (6935 intervenciones) el 06/02/2015 08:43:41
Yo lo pondría así:
1
if(isset($_POST["opcion".$i]))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar