PHP - Checkbox vacio envia error en metodo POST

 
Vista:

Checkbox vacio envia error en metodo POST

Publicado por alejandro ferguson (1 intervención) el 11/07/2014 22:15:25
Tengo un formulario con un checkbox el cual muestra si dicho usuario tiene habilitado un menu en la base de datos. Si esta habilitado el checkbox se muestra con el checke (Esto lo hago tomando el valor desde la base de datos), de lo contrario si no esta habilitado este menu, el checkbox aparece en blanco (deshabilitado).

Pues tengo mi problema el cual es que cuando envio datos atraves del formulario con el checkbox habilitado con el metodo POST no hay ningun problema; la cuestion es cuando yo mando el checkbox vacio entonces el $_POST me manda el error: UNDEFINED VARIABLE (nombre del control enviado), por la razon que no chekie el checkbox.

Como puedo hacer para enviar el checkbox vacio o habilitado (las dos formas) y poderlo leer con $_poST ya intente con isset($_POST[menus']) pero igual me da error.

Hay alguna forma de enviar la casilla (ya sea vacia o con check) y poderla recibir en una misma variable?
$variable_recibida = $_POST['check_si_o_no'];
se podra? gracias por su ayuda!
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
Imágen de perfil de SALVADOR

Checkbox vacio envia error en metodo POST

Publicado por SALVADOR (125 intervenciones) el 12/07/2014 11:37:00
Muestra un poquito de tu codigo donde recibes esa variable.
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

Checkbox vacio envia error en metodo POST

Publicado por xve (6935 intervenciones) el 12/07/2014 20:16:30
Hola Alejandro, el tema es que si no esta seleccionado un checkbox, no se envía en el formulario, por lo que utilizando isset() lo tienes solucionado... (en tu ejemplo de isset, te falta una comilla)

1
2
3
4
5
6
if(isset($_POST["menus"]))
{
    seleccionado
}else{
    no seleccionado
}

Coméntanos si te sirve, ok?
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 Carlos

Checkbox vacio envia error en metodo POST

Publicado por Carlos (10 intervenciones) el 05/12/2016 21:54:33
Estimado estuve intentando el tema pero me los marca todos como si los hubiera puesto checked

este es el formulario donde marco el check

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
$select_com= "SELECT * FROM  COMPETENCIA ORDER BY TIPO_COM";
$resultado_com=mysql_query($select_com);
while ($row_com=mysql_fetch_array($resultado_com)){
	$nombre_com= $row_com['NOMBRE_COM'];
	$id_com= $row_com['ID_COM'];
	$tipo_com=$row_com['TIPO_COM'];
	?>
	<tr>
	<td><input type="checkbox" name="check[]" value="ACTIVO" >
	</td>
	<td>
	<?php echo $tipo_com?>
	</td>
	<td>
	<?php echo $nombre_com?>
	<input class="form-control"  name="id_com[]" type="hidden" value="<?php echo $id_com?>">
	</td>
	<td>
	<select class="form-control" name="valor[]" required>
	    <option value="100">100%</option>
	    <option value="75">75%</option>
	    <option value="50">50%</option>
	    <option value="25">25%</option>
	</select>
	</td>
	</div>
	</tr>
	<?php
}
?>

Y aqui lo estoy llamando en $_POST

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$array_check=$_POST['check'];
 
$select_com= "SELECT * FROM  COMPETENCIA ";
$resultado_com=mysql_query($select_com);
while ($row_com=mysql_fetch_array($resultado_com)){
	list($clave_id, $valor_id) = each($array_id_com);
	list($clave_va, $valor_va) = each($array_valor);
	list($clave_ch, $valor_ch) = each($array_check);
 
	$insertar_escala_cargo= "INSERT INTO ESCALA_CARGO( CARGO_ID_CAR,
	                        COMPETENCIA_ID_COM,
	                        ESCALA_ESPERADA,
	                        CONDICION_ES_CA
	            ) VALUES ( '$id_car',
	                        '$valor_id',
	                        '$valor_va',
	                        '$valor_ch') ";
	$resultado_escala_cargo=mysql_query($insertar_escala_cargo);


pero si lo hago con el isset todas me las marca como activo o mejor dicho no se como colocar el isset para que cuando no este chequeado me tome un valor y cuando este chequeado me tome activo
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

Checkbox vacio envia error en metodo POST

Publicado por xve (6935 intervenciones) el 06/12/2016 11:24:58
Hola Carlos, ten en cuenta que si un checkbox no esta marcado, no se envia ningún valor por post!!!

La verdad es que la manera que lo estas haciendo, puede dar muchos errores, ya que por ejemplo, para mostrar los datos, utilizas una consulta sql ordenada, y para insertarlos en la base de datos, no.

esto:
1
list($clave_ch, $valor_ch) = each($array_check);
como te he comentado, te funcionara simpre y cuando siempre lo hayan seleccionado.. si en algún momento no los han seleccionado, te fallara, o dará el check al que no toca.

Teniendo un id unico ($row_com['ID_COM']) yo utilizaria ese valor en todos los campos, en vez de utilizar un array de valores... algo así:
1
<td><input type="checkbox" name="check_<?php echo $id_com?>" value="ACTIVO" >


espero que te sirva de ayuda...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Carlos

Checkbox vacio envia error en metodo POST

Publicado por Carlos (10 intervenciones) el 06/12/2016 15:48:25
Gracias por el aporte XVE estare probando y comentandote los resultados

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