Autor
|
Tema: Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST (Leído 22,787 veces)
|
Graphixx
Desconectado
Mensajes: 1.336
Full Stack Developer
|
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://$resp -> contiene el array devuelto por la consulta mysql <?php for($i=0;$i<count($resp);$i++){ $campo = $resp[$i]; ?> <td width="69" align="center" valign="middle"><input type="radio" name="opcion" id="opcion" value="<?php echo $i; ?>"></td> <?php } ?>
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: //cambiar if(empty($_POST["opcion"])){} //por if($_POST["opcion"]>=0){}
Paginas con temas al respecto:http://www.codigomanso.com/es/2009/01/la-funcion-empty-de-php-esta-mal/
|
|
« Última modificación: 19 Abril 2012, 19:38 pm por Graphixx »
|
En línea
|
Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
|
|
|
#!drvy
|
<?php function emptyy ($var){if(strlen(trim($var))>=1){return true;} else {return false;}} $array[] = 'omg'; $array[] = ''; $array[] = ' '; $array[] = 0; $array[] = '123'; foreach($array as $valor){ } ?>
Debería retornar: boolean true boolean false boolean false boolean true boolean true
Saludos
|
|
|
En línea
|
|
|
|
dimitrix
|
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: //Existe registro/s }else{ //No existe registros :-( };
|
|
|
En línea
|
|
|
|
pwnz
Desconectado
Mensajes: 14
|
Quizá pueda servirte la función strlen(). Por ejemplo con algo así... function checkEmpty($var) { return False; // No esta vacia } else { return True; // Esta Vacia } }
Quedaría algo así... $arr = array("0", "", "1", "False", "hola", 0, False, True); foreach ($arr as $valor) { echo "<pre>"; /* * TRUE FALSE => "0" * TRUE TRUE => "" * FALSE FALSE => "1" * FALSE FALSE => "False" * FALSE FALSE => "hola" * TRUE FALSE => 0 * TRUE TRUE => False * FALSE FALSE => True */ echo "</pre>";
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.
|
|
« Última modificación: 6 Mayo 2012, 23:52 pm por pwnz »
|
En línea
|
|
|
|
it3r
Desconectado
Mensajes: 101
|
podrías probar con esto: if (isset($_POST["opcion"]) AND $_POST["opcion"]!==''){
}
ó if (isset($_POST["opcion"]) AND $_POST["opcion"]!==null){
} Saludos
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Claro, ocupa la funciona isset().
|
|
|
En línea
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
#!drvy
|
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.. <?php $var = ''; $var2 = ' '; ?>
Saludos
|
|
|
En línea
|
|
|
|
it3r
Desconectado
Mensajes: 101
|
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.. <?php $var = ''; $var2 = ' '; ?>
Saludos El isset es para verificar si la variable ha sido creada, no para validar, la validación se hace en 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
|
|
|
En línea
|
|
|
|
#!drvy
|
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: <?php // Null byte. $var = "\x00"; // Isset devuelve TRUE. // Esta funcion devuelve False. function emptyy ($var){if(strlen(trim($var))>=1){return true;} else {return false;}} // Tu metodo devuelve TRUE tambien. if (isset($var) AND $var!==null){echo 'Variable aceptada';} else {echo 'Variable no aceptada';} // Imprimir variable (vacia) echo '<br />Variable: '.$var; ?>
Devolveria boolean true boolean false Variable aceptada Variable:
PD: Obviamente un nullbyte es nada.. esta vació.. entonces todas deberían retornar false... Saludos
|
|
|
En línea
|
|
|
|
it3r
Desconectado
Mensajes: 101
|
Basicamente, ese metodo de comprobar si esta vacia o no se salta con un nullbyte en seguida. Un ejemplo: <?php // Null byte. $var = "\x00"; // Isset devuelve TRUE. // Esta funcion devuelve False. function emptyy ($var){if(strlen(trim($var))>=1){return true;} else {return false;}} // Tu metodo devuelve TRUE tambien. if (isset($var) AND $var!==null){echo 'Variable aceptada';} else {echo 'Variable no aceptada';} // Imprimir variable (vacia) echo '<br />Variable: '.$var; ?>
Devolveria boolean true boolean false Variable aceptada Variable:
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: <? $nums=array("\x00",""," ","0",0,3); foreach($nums AS $n) var_dump(test ($n)); function test($var){ else return false; } ?>
Resultado: boolean false boolean false boolean false boolean true boolean true boolean true
Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Saber si la variable Post esta vacia en Java Script
Desarrollo Web
|
Lupin
|
3
|
4,862
|
30 Abril 2013, 02:35 am
por engel lex
|
|
|
Como devolver puntero con cadena vacia
Programación C/C++
|
Destro-
|
6
|
3,888
|
17 Marzo 2014, 22:30 pm
por Eternal Idol
|
|
|
Como puedo detectar una palabra y comprobar si la 2 linea esta vacía en C
Programación C/C++
|
Alberto n
|
1
|
1,996
|
5 Marzo 2019, 05:34 am
por srWhiteSkull
|
|
|
Cómo escribir datos en una sim vacía
Seguridad
|
Entendido12
|
6
|
4,045
|
30 Octubre 2019, 17:04 pm
por @XSStringManolo
|
|
|
Como leer una cadena de caracteres vacia
Programación C/C++
|
josueroddy
|
1
|
2,796
|
23 Octubre 2021, 00:41 am
por K-YreX
|
|