Autor
|
Tema: Duda con formulario (Leído 4,733 veces)
|
Maties 360
Desconectado
Mensajes: 35
|
Buenas, gracias por todo Sanjuu^^, lo de las provincias funciona perfectamente de esta manera, pero tengo un problema con la bd,os pongo el codigo: registrousuarios.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>*LE*|| Registro Nuevo Usuario</title> </head>
<body bgcolor="#000000"> <br><br><br /><br /><br /><br /><br /><br /><br /><br /> <table border="0" cellpadding="0" cellspacing="0" align="center"> <form action="proces.php" method="get"> <tr><td><font color="white">Nick: </font><input type="text" name="nick"><br></td></tr> <tr><td><br><font color="white">Contraseña: </font><input type="password" name="contrasenya"></td></tr> <tr><td><br><font color="white">Repite la contraseña: </font><input type="password" name="re-contrasenya"></td></tr> <tr><td><br><font color="white">Email: </font><input type="text" name="email"></td></tr> <tr><td><br><font color="white">Fecha de nacimiento: </font><input type="text" name="data" title="Formato: aaaa-mm-dd" maxlength="10"></td></tr> <tr><td><br><font color="white">País: </font> <select name="pais"> <option value="1">España</option> <option value="2">Portugal</option> </select></td></tr> <tr><td><br><input type="submit" value="Continuar"> <input type="reset" value="Borrar"></td></tr> </form> </table> </body> </html> proces.php<?php switch( $_GET['pais']) { case 1: include ('registrousuariosespanya.php'); break; case 2: include ('registrousuariosportugal.php'); break; } ?> Ahora solo pondre el de una provincia: registrousuariosespanya.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head>
<body bgcolor="#000000"> <br><br><br /><br /><br /><br /><br /><br /><br /><br /> <table align="center" border="0" cellpadding="0" cellspacing="0"> <form action="procesfinal.php" method="get"> <tr><td><font color="white">Provincia: </font> <select name="provincies"> <option value="1">Almeria</option> <option value="2">Barcelona</option> <option value="3">Cadiz</option> <option value="4">Islas Baleares</option> <option value="5">Madrid</option> </select></td></tr> <tr><td><br><font color="white">Sexo: <br /> <input type="radio" name="sexe" value="Hombre">Hombre <br> <input type="radio" value="Mujer" name="sexe">Mujer</font></td></tr> <tr><td><br><input type="submit" value="Enviar"> <input type="reset" value="Borrar"></td></tr> </form> </table> </body> </html> Y ahora el problema que tengo es que cuando envias los datos del formulario de las provincias, te lleva a este documento php: procesfinal.php<?php header("Location: registrocompleto.php"); //en este documento solo te pone que se ha completado el registro include ('conexion.php'); $provincia= $_GET['provincies']; $sexe= $_GET['sexe']; $nick= $_GET['nick']; $contrasenya= $_GET['contrasenya']; $recontrasenya= $_GET['re-contrasenya']; $email= $_GET['email']; $fecha= $_GET['data']; $pais= $_GET['pais']; $sql= "insert into usuaris (Nick,Contrasenya,ReContrasenya,Email,Pais,Neixament,Provincia,sexe) values ('$nick','$contrasenya','$recontrasenya','$email','$pais','$fecha','$provincia','$sexe')"; mysql_query("$sql"); ?> Y el problema esta en que solo me mete en la base de datos los datos del formulario de las provincias y el sexo. Que tengo que hacer para que pueda recuperar los datos del otro formulario?¿? Gracias y Salu2
|
|
« Última modificación: 27 Julio 2007, 00:56 am por Maties 360 »
|
En línea
|
|
|
|
Sanjuu
Desconectado
Mensajes: 86
|
En tu formulario de proces.php no incluyes por ningún lado los campos que arrastras del form anterior, por eso los pierdes, lo que deberías de hacer es usar campos hidden. Por ejemplo: <input type="hidden" name="nick" value="<?php $_GET['nick']; ?>" />
De esa forma el campo está en el formulario pero no es visible para el usuario. Puedes hacer eso o guardar los datos en variables de sesión pero esto es más complicado, mejor que uses inputs hidden. Una recomendación: no se para que es exactamente este form pero usar el metodo GET no es precisamente recomendable cuando estás manejando datos personales de gente
|
|
|
En línea
|
if (pregunta->buscador()==NULL) pregunta->formular_pregunta();
|
|
|
Maties 360
Desconectado
Mensajes: 35
|
Gracias por la recomendacion^^, pero no me funciona lo que me estas diciendo... Mira lo tengo puesto asi: proces.php<?php switch( $_GET['pais']) { case 1: include ('registrousuariosespanya.php'); break; case 2: include ('registrousuariosportugal.php'); break; } $nick= $_GET['nick']; $contrasenya= $_GET['contrasenya']; $recontrasenya= $_GET['re-contrasenya']; $email= $_GET['email']; $fecha= $_GET['data']; $pais= $_GET['pais']; ?> <form action="proces.php" method="get"> <input type="hidden" name="nick" value="<?php $nick ?>" /> <input type="hidden" name="contrasenya" value="<?php $contrasenya ?>" /> <input type="hidden" name="re-contrasenya" value="<?php $recontrasenya ?>" /> <input type="hidden" name="email" value="<?php $email ?>" /> <input type="hidden" name="data" value="<?php $fecha ?>" /> <input type="hidden" name="pais" value="<?php $pais ?>" /> </form> procesfinal.phpEn este no he puesto mysql_query() porque solo queria probar si me reconocia los datos y lo he puesto de esta forma: <?php $provincia= $_GET['provincies']; $sexe= $_GET['sexe']; $nick= $_GET['nick']; $contrasenya= $_GET['contrasenya']; $recontrasenya= $_GET['re-contrasenya']; $email= $_GET['email']; $fecha= $_GET['data']; $pais= $_GET['pais']; $sql= "insert into usuaris (Nick,Contrasenya,ReContrasenya,Email,Pais,Neixament,Provincia,sexe) values ('$nick','$contrasenya','$recontrasenya','$email','$pais','$fecha','$provincia','$sexe')";
echo "$nick"; ?> No se que problema hay, porque he intentado ponerlo de varias formas y no me recoge los datos... Gracias y Salu2
|
|
|
En línea
|
|
|
|
SirLanceCC
|
No quiero ser aguafiestas pero... ¿realmente vale la pena hacer esa lista tan grande? ¿que pasa si soy de un pais que no contemplaste? ¿que pasa si mi provincia no la listaste? Yo creo que sería mejor que pusieras pais como texto y provincia como texto. Pero solo es una sugerencia
|
|
|
En línea
|
|
|
|
Sanjuu
Desconectado
Mensajes: 86
|
Tienes varios fallos. 1 - el orden 2 - el action del formulario 3 - falta el boton submit 4 - echo de php para los values <?php $nick= $_GET['nick']; $contrasenya= $_GET['contrasenya']; $recontrasenya= $_GET['re-contrasenya']; $email= $_GET['email']; $fecha= $_GET['data']; $pais= $_GET['pais']; ?> <form action="procesfinal.php" method="get"> <input type="hidden" name="nick" value="<?php echo $nick ?>" /> <input type="hidden" name="contrasenya" value="<?php echo $contrasenya ?>" /> <input type="hidden" name="re-contrasenya" value="<?php echo $recontrasenya ?>" /> <input type="hidden" name="email" value="<?php echo $email ?>" /> <input type="hidden" name="data" value="<?php echo $fecha ?>" /> <input type="hidden" name="pais" value="<?php echo $pais ?>" /> <?php switch( $_GET['pais']) { case 1: include ('registrousuariosespanya.php'); break; case 2: include ('registrousuariosportugal.php'); break; } ?> <input type="submit" value=" Enviar datos "> </form>
Notese que el include se ha de hacer dentro del formulario en cuestión para que envíe bien los datos. Por cierto si no te saliera imprime la variable $sql en pantalla y la copias a ver que consulta es la que hace.
|
|
« Última modificación: 27 Julio 2007, 16:50 pm por Sanjuu »
|
En línea
|
if (pregunta->buscador()==NULL) pregunta->formular_pregunta();
|
|
|
Maties 360
Desconectado
Mensajes: 35
|
Muchas gracias a todos, ahora funciona perfectamente^^. Pero tengo varias dudas... Como podria hacer para hacer que no se pudieran repetir los registros?¿?
Gracias y Salu2^^
|
|
|
En línea
|
|
|
|
Sanjuu
Desconectado
Mensajes: 86
|
Como podria hacer para hacer que no se pudieran repetir los registros?¿?
Cuando recibas un nick (o email, depende el campo que no quieras que se repita), haz una consulta a la bd por ejemplo un COUNT de los registros que contienen ese mail, si te devuelve 0 entonces permites el registro, sino pues lanzas un error
|
|
|
En línea
|
if (pregunta->buscador()==NULL) pregunta->formular_pregunta();
|
|
|
|
|