Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Mostrar errores en la misma pagina del formulario

Estas en el tema de Mostrar errores en la misma pagina del formulario en el foro de PHP en Foros del Web. Bueno, antes que nada me gustaria preguntarles si se puede hacer esto, debido a que mi codigo esta en la misma pagina en donde se ...
  #1 (permalink)  
Antiguo 13/12/2013, 13:05
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 9 meses
Puntos: 0
Exclamación Mostrar errores en la misma pagina del formulario

Bueno, antes que nada me gustaria preguntarles si se puede hacer esto, debido a que mi codigo esta en la misma pagina en donde se encuentra el formulario de envío:

Código PHP:
if (isset($_POST['correo_electronico']['pais'])) { 
Esas son las dos variables que estare usando en mi formulario, por otro lado me gustaria mostrar los errores por encima del formulario (en la misma pagin) estuve probando de la siguiente manera:

Código PHP:
// Correo electrónico:
// Definimos la variable para el correo electrónico:
$correo_electronico $_POST['correo_electronico'];
// Formato del correo electrónico:
if (!filter_var($_POST['correo_electronico'], FILTER_VALIDATE_EMAIL)) {
    
$mensaje = ('Por favor, ingrese una dirección de correo electrónico válida.');
}

// País:
// Definimos la variable para el país:
$pais $_POST['pais'];
// Comprobamos que el país esté seleccionado:
if(empty($_POST['pais'])) {
    
$mensaje = ('Por favor, seleccione su país.<br>');
}
if (!
$mensaje) { continuamos con la ejecucion del resto del codigo... 
Hay algo que este haciendo mal? porque al abrir la pagina del formulario me salta el siguiente error:

Notice: Undefined variable: mensaje in C:\wamp\www\\enviar.php on line

Pueden ayudarme por favor? Gracias
  #2 (permalink)  
Antiguo 13/12/2013, 13:22
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Mostrar errores en la misma pagina del formulario

primero debes configurar php.ini (buscar en google)
para no mostrar las noticias, solo los errores.
  #3 (permalink)  
Antiguo 13/12/2013, 13:28
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Mostrar errores en la misma pagina del formulario

Ya lo se, pero no quiero pasar por alto el mensaje, es por eso que estoy acudiendo a ustedes para que puedan ayudarme a mejorar esto.
  #4 (permalink)  
Antiguo 13/12/2013, 13:32
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Mostrar errores en la misma pagina del formulario

Haces bien, ignorar los errores, notices o warnings es una mala idea.

En cuanto al error: El mensaje te lo dice claramente. Una variable no está definida. Pues tendrás que ver cuál es, y si es alguna de las que te llegan por post, usar isset. Pero una a una, eso que te sacas de la manga en la primera línea es un horror.
  #5 (permalink)  
Antiguo 13/12/2013, 13:36
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Mostrar errores en la misma pagina del formulario

En mi caso como tendria que hacerlo amigo? gracias por responder.
  #6 (permalink)  
Antiguo 13/12/2013, 13:36
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Mostrar errores en la misma pagina del formulario

en mis años programando nunca e visto un solo server de produccion con las noticias en el error reporting de php.ini
es una lata etar declarando variables, obvio que los warnings son otra cosa

pero cada quien tiene su propia opinion
  #7 (permalink)  
Antiguo 13/12/2013, 13:37
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Mostrar errores en la misma pagina del formulario

Con isset. Pero $_post[blablabla][mas blablabla] no existe. Mira cómo son los $_post.

Cita:
Iniciado por enlinea777 Ver Mensaje
en mis años programando nunca e visto un solo server de produccion con las noticias en el error reporting de php.ini
es una lata etar declarando variables, obvio que los warnings son otra cosa

pero cada quien tiene su propia opinion
Evidentemente, pero el código de este usuario está en desarrollo, no en producción.
Y programar de forma robusta y sin cagadas no es una lata, es un deber. Seguro que hay alguna ocasión en que es imposible evitar un notice. Pero sólo sería una excepción a la regla.
  #8 (permalink)  
Antiguo 13/12/2013, 13:43
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Mostrar errores en la misma pagina del formulario

Entonces como lo tengo que hacer?
  #9 (permalink)  
Antiguo 13/12/2013, 13:46
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Mostrar errores en la misma pagina del formulario

Código PHP:
Ver original
  1. if isset($_POST['correo_electronico'], $_POST['pais'])) {
asi?
  #10 (permalink)  
Antiguo 13/12/2013, 13:48
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Mostrar errores en la misma pagina del formulario

Esto es algo que podías haber resuelto por tí mismo simplemente viendo ejemplo de uso de isset en la página oficial de PHP.

Por ejemplo, con país:
Código PHP:
Ver original
  1. if (isset($_POST["pais"] && !empty($_POST["pais"]))
  2. {
  3.     $pais=$_POST["pais"];
  4. }
  5. else
  6. {
  7.     $mensaje = "Por favor, seleccione su país.<br>";
  8. }
  #11 (permalink)  
Antiguo 13/12/2013, 13:55
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Mostrar errores en la misma pagina del formulario

Entiendo, pero como tengo el formulario y el código que procesa ese formulario en el mismo archivo, tengo que verificar primero que existan variables ah procesar, si no existe la variable (que es lo que hace isset()) $_POST['correo_electronico'] quiere decir que no se ah enviado el formulario a procesar, por lo tanto solo mostramos el código HTML del formulario, de no verificarlo, PHP me arrojaria errores del tipo warning o incluso del tipo fatal al intentar usar variables no definidas! es por eso que quiero saber como verificar mas de una variable al inicio del codigo.
  #12 (permalink)  
Antiguo 13/12/2013, 14:00
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Mostrar errores en la misma pagina del formulario

Entonces no es un problema de sintaxis de PHP, es un problema de que no has planificado bien cómo resolver la validación de PHP para mostrar errores en el HTML.
Piensa cómo hacerlo, busca ejemplos, etc.
Puedes crear y usar más variables, si las necesitas. No sólo $pais. Quizás te interese un $paisCorrecto metiéndole un true o false según el caso, y luego cuando imprimas el HTML usarla para imprimir o no los errores de validación.
No es completamente necesario, porque pensando mejor podrías ahorrartelo, pero para cuando se está empezando facilita la comprensión de la validación.
  #13 (permalink)  
Antiguo 13/12/2013, 14:05
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Mostrar errores en la misma pagina del formulario

Es mi primer proyecto, y aun no entiendo mucho sobre php, es por ello que estoy acudiendo a ustedes, entonces, me puedo ahorrar el isst al inicio de todo poniendole el isset de ejemplo que vos me pasaste?
  #14 (permalink)  
Antiguo 13/12/2013, 14:08
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Mostrar errores en la misma pagina del formulario

El isset del principio no funciona bien. Quítalo.
$_POST es un array unidimensional.
  #15 (permalink)  
Antiguo 13/12/2013, 15:03
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Mostrar errores en la misma pagina del formulario

Aqui les dejo la parte que me esta causando problemas:

Código PHP:
Ver original
  1. <?php
  2.  
  3. // Base de datos:
  4. // Definimos la variable y realizamos la conexión con la base de datos:
  5. $conexion = mysql_connect('localhost', 'root', '') or die('Error al conectar con la base de datos.');
  6. // Definimos la variable y seleccionamos la base de datos a ser utilizada:
  7. $base_de_datos = mysql_select_db('db', $conexion) or die('La base de datos seleccionada no existe.');
  8. // Fin base de datos
  9.  
  10. // Correo electrónico:
  11. // Definimos la variable para el correo electrónico:
  12. $correo_electronico = $_POST['correo_electronico'];
  13. // Formato del correo electrónico:
  14. if (!filter_var($_POST['correo_electronico'], FILTER_VALIDATE_EMAIL)) {
  15.       $error = true;
  16.       $mensaje = ('Por favor, ingrese una dirección de correo electrónico válida.');
  17.       }
  18.    
  19. // Fin correo electrónico
  20.  
  21. // Definimos algunas condiciones para el envío de la foto:
  22. // Selección de la foto:
  23. if (empty($_FILES['foto']['name'])) {
  24.     $error = true;
  25.     $mensaje = ('Por favor, seleccione una foto para enviar.');
  26. }
  27. // Formato de la foto:
  28. $formato = getimagesize($_FILES['foto']['tmp_name']);
  29. if ($formato['mime'] != 'image/jpeg') {
  30.     $error = true;
  31.     $mensaje = ('Sólo se pueden enviar fotos en formato JPG.');
  32. }
  33. // Peso de la foto:
  34. $peso_permitido = 1000000;
  35. if ($_FILES['foto']['size'] > $peso_permitido) {
  36.     $error = true;
  37.     $mensaje = ('No puede enviar fotos mayores a ' . ceil($peso_permitido / 1024) . ' MB.');
  38. }
  39. // Fin de las condiciones para el envío de la foto
  40.  
  41. // País:
  42. // Definimos la variable para el país:
  43. $pais = $_POST['pais'];
  44. // Comprobamos que el país esté seleccionado:
  45. if(empty($_POST['pais'])) {
  46.     $error = true;
  47.     $mensaje = ('Por favor, seleccione su país.');
  48. }
  49.  
  50. // Si se cumplen todas las condiciones continuamos:
  51. if (!$error) {
  52.  
  53. Continua el codigo...
  #16 (permalink)  
Antiguo 13/12/2013, 15:17
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Mostrar errores en la misma pagina del formulario

Alguna ayuda?
  #17 (permalink)  
Antiguo 13/12/2013, 17:10
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Mostrar errores en la misma pagina del formulario

Pues si amigo, en primer lugar me sale el siguiente mensaje: Notice: Undefined variable: mensaje in C:\wamp\www\enviar.php on line 167

En segundo lugar en el campo $mensaje solo aparece un mensaje, el resto no, esto sucede en caso de que no se haya completado las informaciones. Como podria mejorar ese codigo? que le falta?
  #18 (permalink)  
Antiguo 14/12/2013, 03:05
 
Fecha de Ingreso: octubre-2012
Ubicación: Austria
Mensajes: 47
Antigüedad: 11 años, 6 meses
Puntos: 7
Respuesta: Mostrar errores en la misma pagina del formulario

esq te lo esta diciendo el error =>
Notice: Undefined variable: mensaje in C:\wamp\www\enviar.php on line 167

Mensaje no esta declarada..

Por otra parte,es normal que solo te salga un error, ya que x cada error que tienes, estas machando el valor de la variable mensaje, x lo q solo te sale el ultimo...te aconsejo algo tipo..

Código PHP:
$mensajes_de_error= array();

if (empty(
$_FILES['foto']['name'])) {
    
$mensajes_de_error[] = 'Por favor, seleccione una foto para enviar.';
}
$formato getimagesize($_FILES['foto']['tmp_name']);
if (
$formato['mime'] != 'image/jpeg') {
    
$mensajes_de_error[] = 'Sólo se pueden enviar fotos en formato JPG.';
}


if(!empty(
$mensajes_de_error)) {
   die(
implode('\n',$mensajes_de_error));

De esta manera podras mostrar todo los errores...

Es un ejemplo solo, tendras q adaptarlo a tus necesidades!

Un saludo
__________________
PHP Developer
  #19 (permalink)  
Antiguo 14/12/2013, 05:57
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Mostrar errores en la misma pagina del formulario

Muchas gracias amigo.

Etiquetas: errores, formulario, variable
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 11:43.