Foros del Web » Programando para Internet » PHP »

Volver a la pagina despues de validar campos

Estas en el tema de Volver a la pagina despues de validar campos en el foro de PHP en Foros del Web. Que tal, Tengo un formulario en el que se pide rellenar unos campos, de los cuales algunos son obligatorios. Si alguno de esos campos obligatorios ...
  #1 (permalink)  
Antiguo 17/11/2006, 06:13
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Volver a la pagina despues de validar campos

Que tal,

Tengo un formulario en el que se pide rellenar unos campos, de los cuales algunos son obligatorios. Si alguno de esos campos obligatorios se deja en blanco, se muestra una ventana (de javascript) donde se pide que se rellenen los campos en blanco. Sin embargo, al darle a aceptar siempre te manda al .php que he descrito en el campo "action" del form.

Lo que quisiera es que muestre el aviso pero que se mantenga en la misma pagina .php y si se rellenan correctamente los campos, lo mismo, pero mostrando un mensaje de que se han insertado correctamente.


Me podriais decir como puedo hacer esto?
Espero haber explicado mi problema.


Saludos
  #2 (permalink)  
Antiguo 17/11/2006, 06:17
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
pega tu código para poder ayudarte.

a simple vista puedes usar
if(...){
echo "Gracias por haber llenado tus datos";
}

Saludos
__________________
Hospedaje Web al mejor costo!
  #3 (permalink)  
Antiguo 17/11/2006, 06:21
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Hola, hay dos cosas q te pueden pasar, q no encuentre la funcion javascript a la q llamas, o bien q te falta poner un return false;

postea tu coadigo mejor para echarle un vistazo!

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #4 (permalink)  
Antiguo 17/11/2006, 06:23
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Este seria el inicio del FORM:

Código:
<form id="añadir" name="añadir" action="insertar.php" method="post">


Estos serian los botones (dentro del FORM):

Código:
		<td ><input type="submit" value="Añadir entrada" onclick="comprobar(document.forms[0])"/></td>
		<td colspan="60"><input type="button" value="Limpiar datos" onclick="limpiar(document.forms[0])"/></td>

Y este el codigo JAVASCRIPT:
Código:
<script type="text/javascript">
	function limpiar(form) {
		form.caja0.value="";
		form.caja1.value="";
		form.caja2.value="";
		form.caja3.value="";
		form.caja4.value="";
		form.caja5.value="0";//select, esto hay que tratar de otra manera
		form.caja6.value="0";//select
		form.caja7.value="";
		form.caja8.value="";
		form.caja9.value="";
	}
	
	function comprobar(form){
		if((form.caja1.value=="")||(form.caja7.value=="")||(form.caja8.value=="")||(form.caja9.value=="")||
			(form.caja5.value=="0")||(form.caja6.value=="0")){
				alert("Debes rellenar los campos obligatorios!");
		}
	}	
</script>
  #5 (permalink)  
Antiguo 17/11/2006, 06:26
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
function comprobar(form){
if((form.caja1.value=="")||(form.caja7.value=="")| |(form.caja8.value=="")||(form.caja9.value=="")||
(form.caja5.value=="0")||(form.caja6.value=="0")){
alert("Debes rellenar los campos obligatorios!");
}
} else{
alert("Todos los datos correctos");
return false;
}
__________________
Hospedaje Web al mejor costo!
  #6 (permalink)  
Antiguo 17/11/2006, 06:28
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Ya pero el problema esta que despues de salir del codigo JAVASCRIPT, salta a insertar.php, que es el action del form. Lo que quiero es que se mantenga en la primera pagina.
  #7 (permalink)  
Antiguo 17/11/2006, 06:29
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
inserta tu código de insertar.php dentro de la misma pagina donde tienes tu formulario y con eso queda.

Saludos
__________________
Hospedaje Web al mejor costo!
  #8 (permalink)  
Antiguo 17/11/2006, 06:31
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Y entonces el "action" del form como quedaria??
Lo elimino o que hago con el?
  #9 (permalink)  
Antiguo 17/11/2006, 06:31
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
hola!
tal como lo tienes estructurado es correcto.
utiliza bien las etiquetas.
Código HTML:
<form id="añadir" name="añadir" action="insertar.php" method="post" onSubmit="comprobar(this.form);return false;"> 
y en la funcion te falta el return false;
Código PHP:
function comprobar(form){
if((
form.caja1.value=="")||(form.caja7.value=="")||(form.caja8.value=="")||(form.caja9.value=="")||(form.caja5.value=="0")||(form.caja6.value=="0")){
alert("Debes rellenar los campos obligatorios!");
return 
false;
}

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #10 (permalink)  
Antiguo 17/11/2006, 06:37
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Si pero si lo hago de esa manera me sigue saltando al insertar.php y eso es lo que no quiero.

Tambien he probado como decia urgido pero despues de mostrar el mensaje diciendo que hay rellenar los campos obligatorios, borraba todo lo escrito en los campos.
  #11 (permalink)  
Antiguo 17/11/2006, 06:51
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Hola de nuevo!
tal y como yo te puesto, es como lo uso yo y a mi me funciona... has puesto el return false, tanto en el form como en javascript?
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #12 (permalink)  
Antiguo 17/11/2006, 10:55
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Lo he puesto como me comentas y sigue cambiandose de pagina.
El final del form lo he puesto despues de los dos botones, nose si tendra algo que ver.

A alguien se le ocurre alguna solucion.

Gracias de antemano.
  #13 (permalink)  
Antiguo 17/11/2006, 11:00
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
eso de conjugar javascript con php nunca me ha gustado hehehehe. Pero veamos... haz intentado usar echo=\"javascript:alert('mensaje')\" ?
__________________
Hospedaje Web al mejor costo!
  #14 (permalink)  
Antiguo 17/11/2006, 11:05
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
y que consigo con eso? donde lo pongo?

Y sino de que otra manera se podrian validar los datos?

Se me ha ocurrido un posible fallo:
En insertar.php cuando me conecto a la base de datos e inserto los datos, he puesto para que me muestre un mensaje diciendo si se han echo correctamente o no. Podria ser ese el problema, o no? Claro, si lo quito ya no sabre si se realiza correctamente o no.

Saludos
  #15 (permalink)  
Antiguo 17/11/2006, 11:31
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
He añadido "return false;"
Código:
		<td ><input type="submit" value="Añadir entrada" onclick="comprobar(document.forms[0]);return false;"/></td>
Y ahora no me salta a insertar.php pero tampoco hace la consulta sql...
  #16 (permalink)  
Antiguo 17/11/2006, 12:12
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Nadie sabe como solucionar esto???

Me estoy volviendo loco
  #17 (permalink)  
Antiguo 17/11/2006, 12:18
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Ponle un else a la función para q devuelva true en el caso de q la validación sea correcta.

En lugar de poner onclick="comprobar(document.forms[0]);return false;" en el boton pon en la etiqueta del form onsubmit="return comprobar(document.forms[0]);" como dijo sergi_climent. Lo q pasa q con el return false de depués hace q nunca se envía el formulario con lo q nos e ejecuta la query en caso de q la validación de javascript sea correcta.

Luego no olvides validar en el servidor x si akaso. De todas formas puedes también validar en la misma página en lugar de otra y para q no se reenvíen datos cuando todo sea correcto puedes hacer con javascript un alert y luego un document.location.href="nombre_de_la_pagina.php";

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #18 (permalink)  
Antiguo 17/11/2006, 13:03
 
Fecha de Ingreso: octubre-2006
Ubicación: Guadalajara, Mexico
Mensajes: 177
Antigüedad: 17 años, 6 meses
Puntos: 0
Yo tengo esto

<form method="POST" action="fInsertaDatos.php" id="form1" name="form1" onsubmit="return ValidaDatosPersonales(this)">

fInsertaDatos.php= Formulario que insertara los datos en una base de datos

ValidaDatosPersonales(this)" es una funcion que se encuetra enel archivo ValidaDatos.js

<head>
<script type="text/javascript" src="ValidaDatos.js"></script>
</head>

El archivo ValidaDatos.js contiene algo asi


function ValidaDatosPersonales(form)
{
FaltaDatos = false;
if(isEmpty(form.txtNombre,'Olvido escribir el nombre'))
FaltaDatos = true;
if(isEmpty(form.txtApellidoPaterno,'Olvido escribir el apellido Paterno'))
FaltaDatos = true;
if(isEmpty(form.txtApellidoMaterno,'Olvido escribir el apellido Materno'))
FaltaDatos = true;
if(isEmpty(form.txtTelCasa,'Olvido escribir telefono de su casa'))
FaltaDatos = true;
if(isEmpty(form.txtCiudad,'Olvido escribir la ciudad'))
FaltaDatos = true;
if(isEmpty(form.txtCorreoElectronico,'Olvido escribir su correo electronico'))
FaltaDatos = true;

if(FaltaDatos)
{
return false;
}
else
{
return true;
}
Si al regresar de esta funcion devuelve falso, tu formulario queda estatico, o sea, despues de que todo este bien pasara a tu formulario ya con los datos llenitos.

saludos
  #19 (permalink)  
Antiguo 17/11/2006, 13:06
Avatar de marcosr  
Fecha de Ingreso: agosto-2005
Ubicación: Montevideo, Uruguay
Mensajes: 451
Antigüedad: 18 años, 8 meses
Puntos: 5
Para que te deje de tirar a insertar.php simplemente sustituye a insertar.php por "./" si el fichero se llama index y no deseas mostrar index en la URL o si no te molesta que aparezca index en la URL, pon "<? echo $_SERVER['PHP_SELF'] ?>" si no me equivoco.

Saludos !

P.D. : En el action del formulario
  #20 (permalink)  
Antiguo 18/11/2006, 12:31
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Con esa instruccion en el action tampoco hace nada.
Como sabe asi que tiene que ir al insertar.php?
  #21 (permalink)  
Antiguo 18/11/2006, 12:51
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Ahora parece que ha cambiado algo la cosa:

He añadido lo que dice marcosr.
Código:
action="<? echo $_SERVER['PHP_SELF'] ?>" method="post" onsubmit="return comprobar(document.forms[0])"
Y en el javascript, en caso de que los campos esten rellenados,
Código:
alert("Los datos se han insertado correctamente");
document.location.href="insertar.php";
return true;
Ahora lo que hace es quedarse en la primera pagina, accede a la base de datos, pero añade una fila con todos los campos en blanco?

Que es lo que me falla?
  #22 (permalink)  
Antiguo 19/11/2006, 08:06
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Nadie sabe como podria hacer para mandar correctamente este formulario?
  #23 (permalink)  
Antiguo 19/11/2006, 08:50
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
A ver.. es muy sencillo. A tu botón ponle un name. Vamos a ponerle "enviar"

Código:
<input type="submit" name="enviar" onclick="comprobar(document.forms[0])"/>
El form tiene que enviarse por POST, y NO requiere de action.

Código:
<form method="POST">

Como resultado, en la misma página ponemos esto:

Código PHP:
<?
if ($_POST['enviar']) {  //Si se ha pulsado el boton enviar...

//Aqui toda la accion que tenga que hacer. Lo que tienes en insertar.php

} else {

//El formulario
?>
<form blablabla...>

<? ?>
Suerte
  #24 (permalink)  
Antiguo 19/11/2006, 11:36
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Pues asi me hace el ingreso en la base de datos, pero a continuacion, en vez de quedarse en la misma pagina, solo muestrea el codigo que esta antes del
Código:
<?
if ($_POST['enviar']) {
pero el resto no se muestra.
  #25 (permalink)  
Antiguo 19/11/2006, 11:53
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Pues se quita el else

Código PHP:
<?
if ($_POST['enviar']) {  //Si se ha pulsado el boton enviar...

//Aqui toda la accion que tenga que hacer. Lo que tienes en insertar.php

}

//El formulario
?>
<form blablabla...>
  #26 (permalink)  
Antiguo 19/11/2006, 12:31
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 1
Solucionado.

Ha costado pero ya esta.
Muchas gracias a todos.

Saludos
  #27 (permalink)  
Antiguo 20/11/2006, 02:18
Avatar de jpunk  
Fecha de Ingreso: octubre-2005
Ubicación: Bogota
Mensajes: 335
Antigüedad: 18 años, 6 meses
Puntos: 0
oye coloca la solución pues ya estaba impacientandome al leer

"Nadie sabe como podria hacer para mandar correctamente este formulario?"

je je please.
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:16.