Foros del Web » Programando para Internet » PHP »

Array php + formulario checkBox - Error index

Estas en el tema de Array php + formulario checkBox - Error index en el foro de PHP en Foros del Web. Hola, estoy haciendo un formulario, con varias opciones tipo chekbox. Estos datos, los paso a un archivo php, que los recoge y lo guarda en ...
  #1 (permalink)  
Antiguo 29/02/2012, 04:38
 
Fecha de Ingreso: octubre-2009
Mensajes: 13
Antigüedad: 14 años, 6 meses
Puntos: 0
Array php + formulario checkBox - Error index

Hola, estoy haciendo un formulario, con varias opciones tipo chekbox. Estos datos, los paso a un archivo php, que los recoge y lo guarda en una matriz o array para luego insertarlo en una base de datos.

Antes de meter los valores en la base de datos, recorro los valores de dicho array con un foreach. Mi problema está en que si la casilla del checkbox no esta marcada, salta una advertencia Notice: Undefined index: ascensor in /var/www/web/registro_vivienda2.php on line 11

En cambio, si la casilla esta marcada no se produce ningún error, así que no se donde esta el error, si en el propio formulario o en el codigo php

Formulario:

Código HTML:
<form method='POST' action='registro_vivienda2.php'>
<input type="checkbox" name="ascensor" value="1"> Ascensor <br />
<input type="checkbox" name="trastero" value="1"> Trastero <br />
<input type="checkbox" name="energia_solar" value="1"> Energia Solar <br />
<input type='submit' value='Enviar'/>
</form> 
PHP:

Código PHP:
<?php
$vector 
= array (  
'ascensor'=> stripslashes(strip_tags(htmlspecialchars($_POST['ascensor']))),
'trastero'=> stripslashes(strip_tags(htmlspecialchars($_POST['trastero']))),
'energia_solar'=> stripslashes(strip_tags(htmlspecialchars($_POST['energia_solar'])))
);
foreach(
$vector as $c=>$v)
     echo 
"<p>El vector con indice $c tiene el valor $v </p>";     
?>
Gracias de antemano
  #2 (permalink)  
Antiguo 29/02/2012, 04:54
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Array php + formulario checkBox - Error index

No hay error, simplemente los checkbox que no están marcados no se envían por $_POST. Si no quieres ver la advertencia tienes que usar isset() para comprobar si esa clave existe en el array. in_array() también sirve.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 29/02/2012, 05:25
 
Fecha de Ingreso: octubre-2009
Mensajes: 13
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Array php + formulario checkBox - Error index

Muchas gracias, ya no me sale dicho mensaje usando lo que me has dicho, lo del isset()

Lo he usado de la siguiente manera:

Código PHP:
'ascensor'=> stripslashes(strip_tags(htmlspecialchars(isset($_POST['ascensor'])))) 
Salu2
  #4 (permalink)  
Antiguo 29/02/2012, 05:41
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Array php + formulario checkBox - Error index

No, el isset() debe hacerse antes, no se trata de quitar el error sino de solucionar el problema, te quedaría así:

Código PHP:
Ver original
  1. <?php
  2. $vector = array (  
  3. 'ascensor'=> isset($_POST['ascensor'])?stripslashes(strip_tags(htmlspecialchars($_POST['ascensor']))):'',
  4. 'trastero'=> isset($_POST['trastero'])?stripslashes(strip_tags(htmlspecialchars($_POST['trastero']))):'',
  5. 'energia_solar'=>isset($_POST['energia_solar'])?stripslashes(strip_tags(htmlspecialchars($_POST['energia_solar']))):'',
  6. );
  7. ?>
De esta manera, el array SIIEMPRE tiene las mismas claves, pero si la variable no está definida entonces no tiene valor. Si no conoces la sintaxis que uso mirate esto: http://php.net/manual/en/language.op...comparison.php el punto "Ternary Operators". Saludos
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: checkbox, formulario, html, index, registro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:55.