Comunidad de diseño web y desarrollo en internet online

Imprimir mensaje de error de formulario sin salir de esta pagina - PHP

Citar            
MensajeEscrito el 06 Mar 2012 02:59 am
Hola Chic@s! Saludos a todos! Tengo este problema espero me puedan ayudar:
Tengo mi formulario y ya tengo validados mis campos para que no escriban mal un correo o un numero telefonico. Al validar mando un mensaje de error , pero este me aparece en otra pagina y tengo que dar regresar para volver al formulario y "corregir" los errores.
Lo que deseo es que aparesca una ventanita aparte al dar clic en el boton "registrar" pero que al fondo siga el mismo formulario y al dar aceptar a esta ventanita solo se cierre y me deje seguir escribiendo en el formulario.
Intente con la funcion window.open y si aparece la ventanita pero al fondo me sigue sacando de la pagina y sigo teniendo que dar regresar para estar de nuevo en el formulario...
Consejos porfavor?!!

Este es el codigo para mandar el mensaje de error:


if (!preg_match('|^[a-zA-Z]*$|', $nombre)) {
echo "Nombre no válido. Ingresa solo letras por favor. </br>";} else {



De antemano gracias!

Por minfhm

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Mar 2012 09:33 am
Si tienes una página web con un formulario y quieres que al dar al boton enviar valide el formulario sin recargar la página (que es lo que entiendo que quieres)

debes ir a la sección de javascript ya que necesitas validar desde el lado del cliente.

Por otro lado, si lo que quieres es que al enviar el formulario los errores aparezcan en la misma página pero no te importa que recargue la página

en el action del form debes dejarlo vacío y hacer la validación en esa misma página.
De esa forma si encuentras errores puedes crear un div y mostrarlos ahí dentro.

Por nax_hh

Claber

168 de clabLevel

1 tutorial

 

Reus

chrome
Citar            
MensajeEscrito el 06 Mar 2012 03:43 pm
Hola nax_hh muchas gracias por tu respuesta. Creo que la opcion es la que mencionaste de validar desde el lado del cliente... creo. jaja
Yo tengo mi formulario en mi html, pero en mi action del form pongo que se ejecute un php puesto que tiene que mandar correos y otras funciones aparte de validar, y en mi archivo de php es donde tengo mis validaciones como los escribi anteriormente.

Quisiera que aparecieran los errores en la misma pagina o con una ventana emergente o como fuera, siempre y cuando no me refresque la del formulario ni me saque de ella, puesto que si se refresca se borran los datos que se habian escrito.

Hay algun tutorial que me puedas recomendar para hacer esto? o un codigo que pueda adaptar para lo que quiero?


Gracias!

Por minfhm

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Mar 2012 04:03 pm
¿Sabes programar en JavaScript?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 06 Mar 2012 04:05 pm
pues la verdad conosco muy poco :( pero con tutoriales y tips lo logro jojo. Solo quisiera saber como se hace lo que deseo que haga mi pagina y ya le pico y le busco.. muchas gracias :D

Por minfhm

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Mar 2012 04:15 pm
Suponiendo que tienes un formulario con dos campos más un botón de enviar.

Código HTML :

<form name="from1" id="form1" onSubmit="return CheckFrm(this);" method="POST" action="archivo.php">
<input type="email" name="email" id="email" required />
<input type="text" name="nombre" id="nombre" required />
<input type="submit" name="submit" value="Enviar" />
</form>


Como podrás ver tengo una función enganchada al evento onSubmit del form, esa función sería:

Código Javascript :

function CheckFrm(frm) {
var result = true;
if (!/^([\w-\.\+])+@([\w-]+\.)+([a-z]){2,4}$/.test(frm.email.value)) {
  alert("Email no válido");
  result = false;
}
if (!/^[a-zA-Z]*$/.test(frm.nombre.value)) {
  alert("Nombre no válido");
  result = false;
}
if (result) {
  frm.submit();
}
return result;
}


La función recibe como parámetro un puntero al elemento <form> que está validando, a partir de él se accede a cada elemento que se quiere validar.
Notarás que implementé la validación usando expresiones regulares a la manera de JavaScript. (Una expresión regular en JS no es más que un string con métodos especiales. JS es un lenguaje prototipado).
Uso una variable result inicializada en true para saber si todos los campos son válidos. Si lo son, invoco el método .submit() del form y listo.
¿Dudas?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 06 Mar 2012 04:23 pm
Ok! al parecer lo entendi bien ajjaja. Por ahora solo tengo esta duda. Al parecer debo validar el formulario desde el mismo html en el que esta?, es decir, el codigo java que me proporcionaste va incrustado en el mismo archivo del formulario, cierto?, y al validar que los campos esten correctamente escritos funciona el submit y entonces procede a hacer todo lo que el "archivo.php" debe realizar?

Bueeno! hare la prueba ahorita y te comento que tal funciono :)

Muchisimas gracias!

Por minfhm

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Mar 2012 05:13 pm

minfhm escribió:

Ok! al parecer lo entendi bien ajjaja. Por ahora solo tengo esta duda. Al parecer debo validar el formulario desde el mismo html en el que esta?, es decir, el codigo java que me proporcionaste va incrustado en el mismo archivo del formulario, cierto?, y al validar que los campos esten correctamente escritos funciona el submit y entonces procede a hacer todo lo que el "archivo.php" debe realizar?

Bueeno! hare la prueba ahorita y te comento que tal funciono :)

Muchisimas gracias!


El javascript trabaja directamente con el documento(html), así que sí, validas en el html antes de mandarlo al servidor, el problema de esto esque alguien con su navegador con js desactivado podrá saltarse la validación fácilmente, por esto siempre es recomendable validarlo también con php luego de enviarlo.

Por HtrMancera

Claber

342 de clabLevel

1 tutorial

Genero:Masculino  

Front-end Developer

chrome
Citar            
MensajeEscrito el 06 Mar 2012 05:18 pm
Ah que bueno que me lo comentas!, de hecho la validacion desde el de php ya la tengo correcta, solo tengo ese problema de que me sacaba de la pagina para mandar el mensaje de error.

Por cierto, estoy haciendo pruebas con el codigo que me mandaste y funciona bien!, solo que me doy cuenta que no valida los campos vacios; es decir, si lleno correctamente "mail" pero dejo vacio "nombre" lo da por bueno y ejecuta el submit.. Puedo agregar a ese mismo codigo algo que valide si estan vacios?

Saludos de nuevo :)

Por minfhm

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Mar 2012 08:56 pm
minfhm:
Primera regla de la toma de datos: Nunca confíes en los datos que te manda el cliente. Que puedas validar del lado del cliente jamás te exime de volver a validarlos del lado del servidor. La validación de datos en el cliente es para comodidad del usuario nada más.

Respondiendo a tu pregunta, sí, puedes agregar ahí mismo la validación por campo vacío, sería algo así:

Código Javascript :

if (frm.email.value.length == 0) {
  alert("Debe proporcionar una dirección de correo electrónico.");
  result = false;
}


Por último JavaScript no es Java aunque sus nombres se parezcan.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Mar 2012 12:06 am
Hola DriveOp. Entendido y anotado! Con esto se resolvió mi problema! muchas gracias por tu paciencia! Saludos y buen día!

Por minfhm

13 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.