Foros del Web » Programando para Internet » PHP »

validando formulario

Estas en el tema de validando formulario en el foro de PHP en Foros del Web. voy a tratar de explicarme lo mas posible espero pueda hacerme enterder. Tengo un formulario <form method=POST action=procesardatos.php>, entonces lo que hace procesardatos es insertar ...
  #1 (permalink)  
Antiguo 06/07/2007, 15:23
Avatar de nodream  
Fecha de Ingreso: septiembre-2003
Mensajes: 134
Antigüedad: 20 años, 6 meses
Puntos: 2
validando formulario

voy a tratar de explicarme lo mas posible espero pueda hacerme enterder. Tengo un formulario <form method=POST action=procesardatos.php>, entonces lo que hace procesardatos es insertar los datos que estan en el formulario en la base de datos, pero antes de eso quiero validar que los datos enviados sean correctos y que cumplan ciertas caracterísiticas.

Lo que quiero hacer es validar los datos antes de que los envie, para esto se me ocurrio mandarselos a la misma pagina con $PHP_SELF, y en la misma pagina validarlos. Lo que no se hacer es que una vez que he validado que los datos son correctos, los mande a procesardatos.php para que los inserte en la base de datos

¿como hago esto?

Ese es el primer problema, despues de eso, me gustaría que una vez que se ha insertado correctamente me mande una pagina que diga algo como "Se han insertado los datos correctamente, si no se carga la pagina principal en 10 segundos haga clik aqui", y que despues de unos segundos se regrese autómaticamente a alguna pagina en especial, algo así como lo que se hace en los foros al publicar un post.
  #2 (permalink)  
Antiguo 06/07/2007, 16:11
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Re: validando formulario

Para validarlos y para procesarlos lo puedes hacer todo en la misma página, ya que dices que vas a usar PHP_SELF (y me parece bien).

Todo dependerá del nombre del botón del formulario
<input type="submit" name="NOMBRE">

Es el que usaras en el PHP

Código PHP:
<?
//Compruebas si se ha enviado el formulario
 
 
if (isset($_POST['NOMBRE_DEL_BOTON'])) {

//Entonces pasa a verificar

 #Pongo una variable de error, que pasara a ser 1 si encuentra algo mal.
$error 0;

 
#Compruebo cada uno de los campos enviados, en este caso miro si estan vacios
  
foreach ($_POST as $variable) {

      if (empty(
$variable)) { 
      
$error 1;
      }
  }

//Pasa a procesar, pero solo si no hay error

if ($error == 0) {

    
#Se procesa todo aqui
}


}
Espero te sirva
  #3 (permalink)  
Antiguo 06/07/2007, 16:55
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: validando formulario

Hola nodream!!

Entiendo totalmente lo que quieres.... Entonces para cuando sepas que los datos que introdujeron en el formulario son totalmente vàlidos, pues haces un
Código PHP:
header("location:pagina_que_inserta_en_la_db.php"
. Esta instrucciòn te mandarà automàticamente a la pàgina donde haces el query de mysql.

Cuando estes seguro que los datos se introdujeron satisfactoriamente en la DB, pues vuelves y utilizas
Código PHP:
header("location:pagina_que_inserta_en_la_db.php"
, para redireccionar a la pàgina de "èxito", la pàgina que le indica al usuario que su preceso se ha llevado acabo satisfactoriamente.

Cuando ya hayas hecho esto, en la pàgina de exito utilizas la intrucciòn html:
meta refresh, bùscala bien en google que no me acuerdo como es la sintaxis. Esta instrucciòn te permite mostrar la pàgina por un determinado tiempo en segundos, 3, 4, 5, segundos y al cabo de dicho tiempo redirecciona automàticamente a donde le digas. Bùscala bien y sabràs la sintaxis correcta.

Espero te sirva!!!

Ahhh..., pues es ya a manera de consejo:

El proceso que quieres hacer consta de lo siguiente:

1. La pàgina del form...
2. La pàgina de validaciòn e inserciòn de datos en la DB.
3. Redireccionar a una pàgina de èxtito o error dependiendo de lo que pase.

Segùn lo que tù haces, utilizas la misma pàgina del form para validar, y pues si tienes una pàgina aparte para la inserciòn en la DB, por que no validar en esa misma pàgina?? Porquè "mezclar" la pàgina del form y la validaciòn??

Còmo te digo es sòlo a menera de sugerencia!!

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #4 (permalink)  
Antiguo 09/07/2007, 23:24
Avatar de nodream  
Fecha de Ingreso: septiembre-2003
Mensajes: 134
Antigüedad: 20 años, 6 meses
Puntos: 2
De acuerdo Re: validando formulario

Cita:
Iniciado por Carxl Ver Mensaje
Hola nodream!!

Entiendo totalmente lo que quieres....
.
.
.
Còmo te digo es sòlo a menera de sugerencia!!

Saludos

Muchas gracias, esto es exactamente lo que quiero, gracias por la explicación, lo voy a intentar como me dices. Thks
  #5 (permalink)  
Antiguo 10/07/2007, 17:52
Avatar de nodream  
Fecha de Ingreso: septiembre-2003
Mensajes: 134
Antigüedad: 20 años, 6 meses
Puntos: 2
Re: validando formulario

Solo un empujoncillo mas, como hago para enviar las variables a la pagina del formulario usando la funcion header, en caso de error?, lo que quiero es que aparezca un mensaje al lado de la caja de texto o donde sea que haya ocurrido el error, por ejemplo:

si tengo tres cajas de texto una para el nombre, una para el primer apellido y otra para el segundo apellido, y suponiendo que el error esta en el segundo apellido quiero que salga una leyenda a un lado de esa caja de texto.

En este momento lo tengo así


1.- Pagina del formulario donde el form action="validardata.php"

2.- En valida data obviamente valido, y

2a.- si no hay error inserto los datos en la base de datos, y despues envio a una pagina de exito usando Header, en la pagina de exito ya he conseguido que se refresque despues de unos segundos usando la etiqueta que mencionas.

2b. si existe algun dato mal, mando con header a la pagina del formulario, en esa pagina ya tengo un bloquecito de php antes de cada elemento del formulario para que mande un error en ese caso, el problema es que al parecer no envia los valores que tenia antes ¿como hago para que se regresen las variables a la pagina del formulario?
  #6 (permalink)  
Antiguo 10/07/2007, 17:58
 
Fecha de Ingreso: julio-2007
Mensajes: 10
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: validando formulario

si vas a validar datos de un formulario, pork no los validas en javascript antes d enviar al php, t evitas el problema d hacer el $PHP_SELF y volver a redireccionar al siguiente php.

bye
  #7 (permalink)  
Antiguo 11/07/2007, 03:32
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: validando formulario

Cita:
Iniciado por Beleth Ver Mensaje
si vas a validar datos de un formulario, pork no los validas en javascript antes d enviar al php, t evitas el problema d hacer el $PHP_SELF y volver a redireccionar al siguiente php.

bye
Hola:

En mi opinión las buenas validaciones deben hacerse al menos dobles... en el servidor son las más importantes, pero con una validación javascript se puede ganar bastante al rechazar formularios mal implementados... lo malo de esto es que los navegadores pueden tener javascript deshabilitado.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 11/07/2007, 14:52
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: validando formulario

Hola nodream, ahhhh pues es mas breve aùn...

Mira en tu pàgina de validaciòn (validardata.php)
Código PHP:
header("location:formulario.php?error=1&nom=$nombre&ape=$apellido"
Cuando recibiste los datos del formulario para validar hiceste algo asì??:

Código PHP:
$nombre=$_POST[la_variable_que_trae_el_nombre_desde_el_form]
$apellido=$_POST[la_variable_que_trae_el_apellido_desde_el_form
Ves que $nombre, $apellido, son las mismas variables que nombro en el header location??, que las asigno en html a nom y a ape... Hasta ahì bien??. Ves "error", que le asignè "1", eso es par saber cual es el error..., si ingresò mal el nombre, el apellido, el correo, tù sabràs dicha codificaciòn... todo bien??

Ahora, en la pàgina que tienes el form...

Haces esto:
Código PHP:
if($_GET[error]==1)
{
echo 
"nombre no vàlido";
}
if(
$_GET[error]==2)
{
echo 
"apellido no vàlido";

De esa manera te saldrà el error de lo que pasa...

Ahora quieres posicionarlo lo mas cerca posible al input del form..., pues el còdigo que està arriba lo pones lo mas cerca posible al input form, normalmente lo hago en tablas.... pero tu puedes hacerlo en un div... sino quieres manejar tablas..

Código HTML:
<div id="nombre">
[PHP]
if($_GET[error]==1)
{
echo "nombre no vàlido";
}
[/PHP]
Nombre <input type="text" name="nombre_usuario" />
</div> 
Espero que haya sido claro...

Saludos, me alegra que te haya servido lo anterior... jeje
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #9 (permalink)  
Antiguo 12/07/2007, 13:29
Avatar de nodream  
Fecha de Ingreso: septiembre-2003
Mensajes: 134
Antigüedad: 20 años, 6 meses
Puntos: 2
Re: validando formulario

header("location:formulario.php?error=1&nom=$nombr e&ape=$apellido")

Entiendo lo de los codigos de error, pero para que son lo de

nom=$nombre

¿que es 'nom' y que es 'ape'?
  #10 (permalink)  
Antiguo 12/07/2007, 15:37
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: validando formulario

Hola de nuevo!!!

"nom" y "ape", son las variables que deberàs llamar en los $_GET[], para poderlas utilizar en los input en sus atributos value="".

Algo asì:

Código HTML:
<input name="nombre" value="<?php echo $_GET[nom]?>" type="text" /> 
Con eso logràs que cada vez que haya un error, el usuario no tenga que volver a llenar todos los campos de nuevo de tu formulario, sino que aparecerà lo ùltimo que escribiò...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #11 (permalink)  
Antiguo 12/07/2007, 19:16
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: validando formulario

Recuperar los datos del formulario pasandolos por la url es muy practico, pero para nada seguro. Mejor guardalos en sesiones, y luego, si tienes que volver al formulario, simplemente cargas los datos de la sesion:

Código PHP:
//session_start();
//......
 
$_SESSION['formulario_data'] = $_POST;
 
//...... 
Para recuperar:
Código PHP:
Nombre <input type="text" name="nombre_usuario" value="<?php echo $_SESSION['formulario_data']['nombre_usuario']; ?>"/>
Espero te sirva... Si tienes dudas, pregunta

Un saludo,
  #12 (permalink)  
Antiguo 13/07/2007, 00:20
 
Fecha de Ingreso: junio-2007
Mensajes: 22
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: validando formulario

Heeeeeeeeeey, ya revolvieron al pobre nodream !!!
mira nodream, vayamos de nuevo, de todas las recomendaciones, la que me parece mas sobria es la de Carlx, ahora, todo esta bien hasta aqui :
Cita:
Solo un empujoncillo mas, como hago para enviar las variables a la pagina del formulario usando la funcion header, en caso de error?, lo que quiero es que aparezca un mensaje al lado de la caja de texto o donde sea que haya ocurrido el error, por ejemplo:

si tengo tres cajas de texto una para el nombre, una para el primer apellido y otra para el segundo apellido, y suponiendo que el error esta en el segundo apellido quiero que salga una leyenda a un lado de esa caja de texto.

En este momento lo tengo así


1.- Pagina del formulario donde el form action="validardata.php"

2.- En valida data obviamente valido, y

2a.- si no hay error inserto los datos en la base de datos, y despues envio a una pagina de exito usando Header, en la pagina de exito ya he conseguido que se refresque despues de unos segundos usando la etiqueta que mencionas.

2b. si existe algun dato mal, mando con header a la pagina del formulario, en esa pagina ya tengo un bloquecito de php antes de cada elemento del formulario para que mande un error en ese caso, el problema es que al parecer no envia los valores que tenia antes ¿como hago para que se regresen las variables a la pagina del formulario?
Bueno, checa este truco :

cuando estes en la pagina de validacion (que es la misma que la de almacenamiento en Base de Datos), y falle algun metodo por validacion, haz lo siguiente :
1) agarra las variables que quieras enviar a la pagina de formulario....
2)metelas en un array asociativo
3) serializa ese array y asignalo a una variable
Código PHP:
$var serialize($array_vars); 
4) asigna esa variable a la direccion de tu formulario, y redirecciona usando la funcion header, como decia Carlx
Código PHP:
header("location:formulario.php?tunuevo_array=" $var ) ; 
5) en la pagina donde este el formulario, extrae esa variable asi :
Código PHP:
$var $_GET['tunuevo_array']; 
6) asignaselo a otra variable, pero desserializando
Código PHP:
 $tu_array unserialize($var); 
7) listo, ya tienes el array de las variables en la pagina que querias !!

ojo con las funciones serialize y unserialize, estas funciones "compactan" y "descompactan" un array objeto o variable, haciendolos faciles de transportar entre web, y mas seguros, porque todos van a ver en la barra de direcciones valores inentendibles.

si tienes dudas, con todo gusto escribeme a [email protected]

saludos
  #13 (permalink)  
Antiguo 13/07/2007, 11:04
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Exclamación Re: validando formulario

Cita:
Iniciado por alexserver Ver Mensaje
la que me parece mas sobria es la de Carlx
...
como decia Carlx
Alexserver..., quièn es Carlx??

Bueno nodream, ya tienes muchas opciones para hacer lo que necesitas, ya veràs tù por caul te decides...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #14 (permalink)  
Antiguo 13/07/2007, 22:49
 
Fecha de Ingreso: junio-2007
Mensajes: 22
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: validando formulario

Ooooooooh no te pongas celoso, es un cuate que me cayó bien...

saludos
  #15 (permalink)  
Antiguo 20/07/2007, 16:12
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: validando formulario

Qué tal!

Saludos a todos...

Yo tengo un problema parecido a esto, necesito validar un formulario, pero la diferencia de mi problema es que en mi formulario solo consta de preguntas y 3 opciones por cada una. (el famoso input type=radio)
Por lo que he leido en este foro, la ayuda que le dieron a nodream era para validar los campos de texto, que deban contener el texto correcto, pero en mi caso necesito que de las 3 opciones de cada pregunta una deba estar marcada, es decir que no estén vacías, y si no, que se visualice un mensaje que debe contestarlas todas o que no me permita dar click al botón de "enviar".

Alguién me podría orientar cómo hacer esto. Se los agradezco de antemano.
Saludos desde México
  #16 (permalink)  
Antiguo 21/07/2007, 08:45
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: validando formulario

Hola dess01!

Mira para validar que te hayan escogido un button, supngamos que dicho objeto se llama "opcion", entonces en tu página de validación .php, haces la siguiente condición:

Código PHP:
if($_POST[opcion])
{
echo 
"todo va bien";
}
else
{
echo 
"no seleccionó opción!!!";

Esa sería la lógica para que lo hagas, debes tener en cuenta que tu button se debe llamar "opción" no??

Saludos, espero te sirva!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #17 (permalink)  
Antiguo 22/07/2007, 22:51
Avatar de nodream  
Fecha de Ingreso: septiembre-2003
Mensajes: 134
Antigüedad: 20 años, 6 meses
Puntos: 2
Re: validando formulario

Cita:
Iniciado por alexserver Ver Mensaje
Heeeeeeeeeey, ya revolvieron al pobre nodream !!!
mira nodream, vayamos de nuevo, de todas las recomendaciones, la que me parece mas sobria es la de Carlx, ahora, todo esta bien hasta aqui :


Bueno, checa este truco :
....
Gracias alexserver, está de lujo eso del serialize y unserialize, la verdad es que si me saca de un problema, pues uno de los campos se llamaba descripcion, y ese campo podría ser muy grande, se iba a ver feo que apareciera todo en el URL, gracias, excelente tip
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:24.