¡Hola familia! (Qué cutre quedó esto)
Una preguntita muy simple.
Un formulario, que envia los datos a traves de PHP, metodo POST (Aunque esto último es irrelevante supongo).
Almaceno lo introducido en el formulario en una variable.
$ejemplo = $_POST['dato1'];
Si yo me salto la url donde está el formulario, y me voy directamente al .php, la variable $ejemplo no está definida, y PHP tira este error.
Notice: Undefined index: user in C:\xampp1\htdocs\PHP\Pruebas\bd.php on line 5
Campos vacios
¿Cómo evito que PHP muestre los errores a todo el quisqui que entre ahí? O en concreto ése error.
Primero, porque queda feo.
Segundo, porque estoy dando información al usuario, como que en la linea 5 hay algo que no está definido...
Un saludo, y... ¿Feliz 2014? 2 horitas ;_;
Lo mas normal es comprobar si la variable en cuestion esta declarada.
if(isset($_POST['dato1'])){$ejemplo = $_POST['dato1'];}
// o
$ejemplo = (isset($_POST['dato1']) ? $_POST['dato1'] : null);
Aunque también puedes quitar los errores del tipo NOTICE con
error_reporting(E_ALL ^ E_NOTICE);
Saludos
Tambien se puede utilizar empty()
$var = 0;
// Se evalúa a true ya que $var está vacia
if (empty($var)) {
echo '$var es o bien 0, vacía, o no se encuentra definida en absoluto';
}
CitarDevuelve FALSE si var existe y tiene un valor no vacío, distinto de cero. De otro modo devuelve TRUE.
Las siguientes expresiones son consideradas como vacías:
"" (una cadena vacía)
0 (0 como un integer)
0.0 (0 como un float)
"0" (0 como un string)
NULL
FALSE
array() (un array vacío)
$var; (una variable declarada, pero sin un valor)
http://php.net/manual/es/function.empty.php
off: Parece que hoy somos 3 en el foro de desarrollo web :), aqui faltan unas 4 horas.
... ¿Matadme?
Mirad el código que tenía.
$usuario = $_POST['user'];
if(isset($usuario) && strlen($user)>0){
Primero la variable y después la comprobación de si ésta era nula, con razón me salia el mensaje...
Pd: @EFEX yep... Lamento molestar tanto xD
¿4 horas? ¿de dónde eres? por tu forma de escribir diría argentina... *Revisando hora de argentina* Me equivoqué :silbar: :silbar:
Gracias a los dos de nuevo.
CitarTambien se puede utilizar empty()
De hecho yo lo prefiero antes que isset pero el no aceptar el 0 me caga (xD) y a veces tengo que poner mas condiciones estúpidas xD
if((empty($_GET['dato1'])&&@$_GET['dato1']!=='0')){
die('No has declarado la variable, negro');
}o funciones para reutilizar...
<?php
function empti(){
foreach(func_get_args() as $arg){
if(!isset($arg)){return true;}
elseif(!is_array($arg)&&!is_object($arg)&&!is_numeric($arg)){
$long = (function_exists('mb_strlen') ? mb_strlen($arg) : strlen($arg));
if($long>0){continue;}else{return true;}
} elseif(is_numeric($arg)||is_int($arg)){
continue;
} else {
if(empty($arg)){return true;}else{continue;}
}
}
return false;
}
$arr = array(); $arr2 = array(5);
$str = ''; $str2 = '1';
$int = 0; $int2 = 1;
$var = null; $var2 = false;
var_dump(empti($arr)); echo '<br />'; var_dump(empti($arr2)); echo '<br />';
var_dump(empti($str)); echo '<br />'; var_dump(empti($str2)); echo '<br />';
var_dump(empti($int)); echo '<br />'; var_dump(empti($int2)); echo '<br />';
var_dump(empti($var)); echo '<br />'; var_dump(empti($var2)); echo '<br />';
// Acepta cuantos parametros le pases, si alguno de ellos esta vacio, devueve true.
var_dump(empti($arr,$arr2,$str,$str2,$int,$int2,$var,$var2));
?>Se me olvido que tambien puedes silenciar el error mediate @. Ejemplo
$ejemplo = @$_POST['dato1'];Saludos