Duda con formulario

Iniciado por Maties 360, 24 Julio 2007, 10:37 AM

0 Miembros y 1 Visitante están viendo este tema.

Maties 360

#10
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">&nbsp;&nbsp;&nbsp;<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 />&nbsp;<input type="radio" name="sexe" value="Hombre">Hombre <br>
&nbsp;<input type="radio" value="Mujer" name="sexe">Mujer</font></td></tr>
<tr><td><br><input type="submit" value="Enviar">&nbsp;&nbsp;<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



Sanjuu

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:

Código (html4strict) [Seleccionar]
<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 ;)

Código (php) [Seleccionar]

if (pregunta->buscador()==NULL)
     pregunta->formular_pregunta();

Maties 360

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.php

En 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

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

Sanjuu

#14
Tienes varios fallos.

1 - el orden
2 - el action del formulario
3 - falta el boton submit
4 - echo de php para los values

Código (php) [Seleccionar]

<?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.

Código (php) [Seleccionar]

if (pregunta->buscador()==NULL)
     pregunta->formular_pregunta();

Maties 360

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^^

Sanjuu

Cita de: Maties 360 en 27 Julio 2007, 20:40 PM
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

Código (php) [Seleccionar]

if (pregunta->buscador()==NULL)
     pregunta->formular_pregunta();