Foros del Web » Programando para Internet » PHP »

Undefined index error

Estas en el tema de Undefined index error en el foro de PHP en Foros del Web. Hola a todos! Estoy haciendo un archivo .php [gestor_mail.php], el cual recibe la variables de diferentes formularios de una web, simplemente para tener un solo ...
  #1 (permalink)  
Antiguo 16/07/2003, 03:19
 
Fecha de Ingreso: mayo-2002
Mensajes: 72
Antigüedad: 15 años, 6 meses
Puntos: 0
Pregunta Undefined index error

Hola a todos!

Estoy haciendo un archivo .php [gestor_mail.php], el cual recibe la variables de diferentes formularios de una web, simplemente para tener un solo archivo .php para todos los formularios, y así también los puedo gestionar mediante una función switch la qual me permite a traves de mail() , enviar la información a diferentes cuentas de correo.

Todo funciona bien, excepto que, al imprimirse un mensaje tipo: "Gracias!! Le responderemos lo antes posible después de haberse ejecutado bien todo el .php, enviado el mail correspondiente, etc, se imprime también en la ventana del navegador este mensaje:
Notice: Undefined index: propietario in D:\ftp\cgestio\gestor_mail.php on line 11


En la linea 11 simplemente tengo esto:$propietario=$_POST['propietario']; para recoger las variables que llegan del formulario.

Me he estado fijando y los mensajes "Undefined Index" se repiten tantas veces como variables no se han enviado en ese caso.

Alguien me podria comentar como solucionar esto??

Gracias y un abrazo!!!
  #2 (permalink)  
Antiguo 16/07/2003, 03:39
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
De acuerdo display_error = Off

Hola,

A mi me pasaba lo mismo con una variable, todo funcionaba correcto pero me mostraba este mensaje. Si buscas en php.ini:

Código PHP:
display_errors off 
Si el error no es crítico, todo funciona como esperas, puedes tratarlo como un warning y para adelnate. Cambia ese parámetro a off, mientras que alguien más ducho en la materia conteste.

Espero que te ayude,
__________________
Lailuluelo
El error está en lo obvio
  #3 (permalink)  
Antiguo 16/07/2003, 04:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

El problema de poner el display_errors a off es que ya no veras ningun mensaje de error, asi que durante el desarrollo es mas dificil de depurar el codigo. Cuando ya tienes es sitio funcionando en la web definitiva, si es recomendable ponerlo a off.

El problema te lo da porque no se ha metido ningun dato en ese campo en el formulario, por lo que ese campo no se envia, PHP no lo recibe y no crea el elemento en $_POST. La solucion es comprobar con isset() si existe antes de asignarle valor:
Código PHP:
if (isset($_POST['propietario']) {
  
$propietario=$_POST['propietario'];
} else {
  
$propietario=NULL;
}

// o este codigo mas compacto
$propietario=(isset($_POST['propietario'])?$_POST['propietario']:NULL); 
Con esto compruebas si existe.

Otra opcion es "tapar" el mensaje en esa linea en concreto con @.
Código PHP:
$propietario[email protected]$_POST['propietario']; 
Esto ultimo solo lo recomiendo en el caso en que estes seguro de que el campo se llama asi, porque si te equivocas y pones $_POST['popietario'] estarias ocultando el error de tecleo. Recomiendo primero hacerlo sin @, comprobar lo del nombre, y una vez seguro del nombre del campo, poner la @. Y por suspuesto, acordarse de esto cuando cambies el nombre del campo (o deje de funcionar el script).

<spam>Esto lo comento en mi miniarticulo que aparece en mi firma, explicando un poco por que funciona. Todavia estais a tiempo de sugerir cosas par la siguiente version.<spam>

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 16/07/2003, 05:04
 
Fecha de Ingreso: mayo-2002
Mensajes: 72
Antigüedad: 15 años, 6 meses
Puntos: 0
Hola!


Lo del:
Código PHP:
display_errors off 
me ha parecido una solución, pero como soy medio-principiante en php, pues claro...me daba asunto tocarlo, porqué suponia que dejaria de ver el resto de errores. ;)

Probaré con lo de tapar el mensaje con @ , es la opción que parece más rapida, aunque me estudiaré las otras dos.

Gracias por todo!

-----------------------
-----------------------

Perfecto! funciona bien... muchas gracias una vez más!!
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 19:23.