Problema con formulario de registro...

Iniciado por Maties 360, 31 Julio 2007, 00:29 AM

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

Maties 360

Buenas, estoi fabricando un formulario de registro de usuarios y tengo el problema de que cuando hago una condicional con que salte un error di esta vacio algun campo importante. Por ejemplo:

registrousuarios.php

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>*LE*|| Registro Nuevo Usuario</title>
</head>
<body bgcolor="#000000" text="#FFFFFF">
<br><br><br /><br /><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" name="continuar">&nbsp;&nbsp;&nbsp;<input type="reset" value="Borrar"></td></tr>
</form>
<tr><td><br><em>* Campo requerido</em>
</table>
</body>
</html>


proces.php

<?php 
$nick
$_GET['nick'];
$contrasenya$_GET['contrasenya'];
$recontrasenya$_GET['re-contrasenya'];
$email$_GET['email'];
$fecha$_GET['data'];
$pais$_GET['pais'];
$enviar$_GET['continuar'];

if (isset(
$enviar)) {
if (
$contrasenya != $recontrasenya && $nick == NULL && $email == NULL) {
include (
'registrousuarios.php');
echo 
"<p align=center><font color=red><br>"."Se han detectado los siguientes errores:</font></p>".
"<p align=center><font color=red>- No coinciden las contraseñas!"."<br>"."- El campo <b>Nick</b> esta vacio!"."<br>".
"- El campo <b>Email</b> esta vacio!</font></p>";
}
else {
switch( 
$_GET['pais']) {
case 
1:
include (
'registrousuariosespanya.php');
break;
case 
2:
include (
'registrousuariosportugal.php');
break;
}}}
?>

<table border="0" cellpadding="0" cellspacing="0" align="center">
<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 ?>" />
</form>
</table>


Y el problema esta en que aqui solo me sale el error cuando los tres estan vacios o las pass no coinciden. Y si quiero hacerlo por separado voy poniendo includes y me sale repetido el formulario uno debajo del otro,

Agradeceria mucho si alguien me solucionara el problema^^

Gracias y Salu2

Sanjuu

#1
Si pones un and (&&) las tres se tienen que cumplir para que pase (producto lógico)

Tienes que filtrarlo por separado, lo que no se es para que quieres tanto include, simplemente haz una vuelta atrás al formulario anterior o mete el campo que falte según el error.

Por ejemplo:

Código (php) [Seleccionar]


if (empty($_GET['email'])){
    echo '<input type="text" name="email" />';
    // Los demás campos como hidden
};


Pero sigo pensando que el volver al form anterior es tremendamente más facil

Código (php) [Seleccionar]

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

Maties 360

Y como podria hacer esto de la vuelta atras?¿?
Y otra duda.. como hago para poner en color cuando inserto un codigo en el foro?¿?

Gracias y Salu2

Sanjuu

Cita de: Maties 360 en 31 Julio 2007, 16:04 PM
Y como podria hacer esto de la vuelta atras?¿?

Con un control de javascript te bastaría, un enlace del tipo <a href="javascript:history.back();">volver</a>

Si quieres hacerlo mejor aún guarda variables de sesión y recarga la misma página.

Cita de: Maties 360 en 31 Julio 2007, 16:04 PM
Y otra duda.. como hago para poner en color cuando inserto un codigo en el foro?¿?

Es facil [ code=php]codigo aqui[/ code]

Tienes una lista desplegable a la derecha, encima de los iconos que pone geshi

Código (php) [Seleccionar]

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

Maties 360

Buenas, ya esta solucionado^^, lo he solucionado de la siguiente manera:

proces.php

Código (php) [Seleccionar]

<?php 
$nick
$_GET['nick'];
$contrasenya$_GET['contrasenya'];
$recontrasenya$_GET['re-contrasenya'];
$email$_GET['email'];
$fecha$_GET['data'];
$pais$_GET['pais'];
$enviar$_GET['continuar'];
if (isset(
$enviar)) {
if (
$contrasenya != $recontrasenya || empty($nick) || empty($email)) {
    echo 
"<br><br><br><br>
       <br><br><br><br><br><br>
         <br><br><br><br>"
.
 "<p align=center><font color=red>Se han detectado los siguientes errores:"."<br></font></p>";
 }
if (
$contrasenya != $recontrasenya) {
    echo 
"<p align=center><font color=red>- No coinciden las contraseñas!</font></p>";

if (empty(
$nick)) {
    echo 
"<p align=center><font color=red>- El campo <b>Nick</b> esta vacio!</font></p>";
}
if (empty(
$email)) {
    echo 
"<p align=center><font color=red>- El campo <b>Email</b> esta vacio!</font></p>";
}
if (
$contrasenya != $recontrasenya || empty($nick) || empty($email)) {
echo 
"<p align=center><a href= registrousuarios.php><font color=white>Pulse aqui para volver al formulario</font></a></p>";
}
else {
switch( 
$_GET['pais']) {
case 
1:
include (
'registrousuariosespanya.php');
break;
case 
2:
include (
'registrousuariosportugal.php');
break;
}}}
?>

<body bgcolor="#000000">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<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 ?>" />
</form>
</table>
</body>


Ahora queria preguntarte sobre lo que pregunte de lo que no se pudieran repetir los registros, con una consulta como esta por ejemplo:

Código (sql) [Seleccionar]
SELECT Nick, COUNT(*) FROM usuaris GROUP BY Nick

Pero lo intente y no me funcionó... No se como ponerlo para que me salte un error si esta repetido el nick.

Gracias y Salu2

Sanjuu

#5
Cita de: Maties 360 link=topic=174527.msg827488#msg827488
Ahora queria preguntarte sobre lo que pregunte de lo que no se pudieran repetir los registros, con una consulta como esta por ejemplo:

Código (sql) [Seleccionar]
SELECT Nick, COUNT(*) FROM usuaris GROUP BY Nick

Pero lo intente y no me funcionó... No se como ponerlo para que me salte un error si esta repetido el nick.

Gracias y Salu2

Eso es incorrecto, no tengo a mano ningún DBMS para probarlo, una solución más facil:

Código (php) [Seleccionar]

$sql="SELECT nick FROM usuaris WHERE nick='$nick'";
$resultado = mysql_query($sql);
if(mysql_num_rows($resultado)==0){
//Nick valido
}else{
//nick repetido
};



Código (php) [Seleccionar]

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

Maties 360

Muchas gracias por tu aporte^^

Esto funciona perfectamente

Gracias y Salu2