Título: Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST Publicado por: Graphixx en 19 Abril 2012, 19:10 pm La funcion empty() de PHP toma como vacia la variable si esta contiene el numero 0 o el caracter '0'.
Pero a veces supongamos que tenemos un array() con respuestas desde una base de datos, los array todos comienzan desde 0, por lo que si paso el id 0 de un array por POST y despues necesito verificar que la variable no venga vacia no funciona. en el formulario listo de forma dinamica los campos encontrados: Código
Cuando no se selecciona ningun radio de la lista, la variable llega vacia: " ". Pero cuando se selecciona el primer radio con el id 0, efetivamente la variable por POST llega el cero: 0. como hago para comparar cuando llegue vacia, pero que no me tome el 0 como vacio ? toca hacer el cambio de empty por >=0: Código
Paginas con temas al respecto: http://www.codigomanso.com/es/2009/01/la-funcion-empty-de-php-esta-mal/ Título: Re: Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST Publicado por: #!drvy en 20 Abril 2012, 05:22 am Código
Debería retornar: Código
Saludos Título: Re: Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST Publicado por: dimitrix en 6 Mayo 2012, 22:02 pm Citar La funcion empty() de PHP toma como vacia la variable si esta contiene el numero 0 o el caracter '0'. También miran que no tengan FALSE o que estén vacios (creo).Yo cuando uso empty() para saber si existe algo en la db le paso una valor por ejemplo $valor['ID'] que no empieza por 0 xD También puedes hacer: Código
Título: Re: Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST Publicado por: pwnz en 6 Mayo 2012, 23:35 pm Quizá pueda servirte la función strlen().
Por ejemplo con algo así... Código
Quedaría algo así... Código
Si no entendí mal con esto en teoría no tendrías ese problema. Saludos. Pd: No me fijé que drvy | BSM puso algo similar aunque combinado con trim para eliminar los espacios. Título: Re: Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST Publicado por: it3r en 11 Mayo 2012, 21:05 pm podrías probar con esto:
Código: if (isset($_POST["opcion"]) AND $_POST["opcion"]!==''){ Código: if (isset($_POST["opcion"]) AND $_POST["opcion"]!==null){ Saludos Título: Re: Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST Publicado por: ~ Yoya ~ en 12 Mayo 2012, 00:17 am Claro, ocupa la funciona isset().
Título: Re: Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST Publicado por: #!drvy en 12 Mayo 2012, 04:52 am El problema de isset es que aunque la variable este vacía puede retornar true por simplemente estar definida... si yo hago index.php?var=, isset devolvería true..
Código
Saludos Título: Re: Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST Publicado por: it3r en 12 Mayo 2012, 05:14 am El problema de isset es que aunque la variable este vacía puede retornar true por simplemente estar definida... si yo hago index.php?var=, isset devolvería true.. Código
Saludos El isset es para verificar si la variable ha sido creada, no para validar, la validación se hace en Código: $_POST["opcion"]!=='' el isset es por que si pones solo el codigo anterior y no se envia la variable te saldria un error de undefined key "opcion". saludos Título: Re: Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST Publicado por: #!drvy en 12 Mayo 2012, 13:57 pm Citar El isset es para verificar si la variable ha sido creada, no para validar, la validación se hace en Código: $_POST["opcion"]!=='' Basicamente, ese metodo de comprobar si esta vacia o no se salta con un nullbyte en seguida. Un ejemplo: Código
Devolveria Código
PD: Obviamente un nullbyte es nada.. esta vació.. entonces todas deberían retornar false... Saludos Título: Re: Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST Publicado por: it3r en 12 Mayo 2012, 18:58 pm Basicamente, ese metodo de comprobar si esta vacia o no se salta con un nullbyte en seguida. Un ejemplo: Código
Devolveria Código
PD: Obviamente un nullbyte es nada.. esta vació.. entonces todas deberían retornar false... Saludos Tienes razón no habia tomado en cuenta el null byte, mm esto seria nuevo para mi xD!,, veamos encontre que si lo paso a ascci con la funcion ord, el nullbyte queda en 0 entonces: Código
Resultado: Código
Saludos |