Foros del Web » Programando para Internet » PHP »

problema con if elseif

Estas en el tema de problema con if elseif en el foro de PHP en Foros del Web. Hola, haber estoy haciendo pruebas con una pagina de registro y e añadido una consulta para q no se introduzcan en la db campos repetidos, ...
  #1 (permalink)  
Antiguo 09/06/2003, 06:36
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Pregunta problema con if elseif

Hola, haber estoy haciendo pruebas con una pagina de registro y e añadido una consulta para q no se introduzcan en la db campos repetidos, pero me da un error inesperado, en una parte del codigo, donde antes de introducir esta consulta no me daba ningun fallo, creo q podria ser un problemas de if anidados, pero no se verlo:

<?php


if(isset($submit)):


$db = mysql_pconnect("localhost", "root") or die("No pudo conectar");
mysql_select_db("users",$db) or die("No se encuentra la base usuarios");

$check = mysql_query("SELECT Nombre, Apellidos, Email, Password FROM usuarios WHERE Nombre='$Nombre' OR

Apellidos='$Apellidos' OR Email='$Email' OR Password='$Password'");


if (mysql_num_rows(Nombre) > 0)
{

print("El usuario, ya existe, elija otro!!!");
}
elseif (mysql_num_rows(Apellidos) > 0)
{

print("Ya hay un usuario registrado con estos apellidos!!");

}
elseif (mysql_num_rows(Email) > 0)
{

print("Este email ya fue utilizado por alguien!!");

}
elseif (mysql_num_rows(Password) > 0)
{

print("se mas original, esta contraseña, ya esta siendo utilizara por otro usuario!!");

}
else
{


if($Password=="$Password1")
{


$sql4 = "INSERT INTO usuarios (Nombre, Apellidos, Email, Password)

VALUES('$Nombre','$Apellidos','$Email','$Password' )";
mysql_query($sql4) or die("La query4 no funciona: ".mysql_error());

$sql5 = "SELECT a.Nombre, a.Apellidos, a.Email, a.Password, a.id, b.id from usuarios a, usuarios b where a.id

> b.id";
mysql_query($sql5) or die("La query5 no funciona: ".mysql_error());

print("<h2>Los datos han sido introducidos correctamente</h2>\n");

print("Nombre:<b>$Nombre</b><br>\n");
print("Apellidos:<b>$Apellidos</b><br>\n");
print("Email:<b>$Email</b><br>\n");
print("Contraseña:<b>$Password</b><br>\n");
print("<b>Puede introducir otro usuario</b><hr>\n");

}
else
{

//ESTA ES LA LINIA QUE ME DICE PHP QUE ESTA MAL
print("<b>La contraseña, no coincide!!!</b>");

}
endif;

}
endif;


endif;

?>

<p><h3>Introduzca sus datos:</h3>

<form name="f1" action="db.php" method="post">
Nombre:<br><input type="text" name="Nombre"><p>
Apellidos:<br><input type="text" name="Apellidos"><p>
Email:<br><input type="text" name="Email"><p>
Password:<br><input type="password" name="Password"><p>
Repita su password:<br><input type="password" name="Password1"><p>
<input type="submit" name="submit" value=¡Registrarse!>
</form>


Gracias de antemano

bichomen
  #2 (permalink)  
Antiguo 09/06/2003, 06:47
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

Creo que estas usando mal la sintaxis con endif;. Creo que esa sintaxis obliga a finalizar con ; la sentencias if, else, elseif. Yo de ti quitaria los endif y me pondria a comprobar los { y }.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 09/06/2003, 07:15
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Ok gracias, ya esta arreglado a falla, en otra parte:

if (mysql_num_rows(Nombre) > 0)
{

print("El usuario, ya existe, elija otro!!!");
}
elseif (mysql_num_rows(Apellidos) > 0)
{

print("Ya hay un usuario registrado con estos apellidos!!");

}
elseif (mysql_num_rows(Email) > 0)
{

print("Este email ya fue utilizado por alguien!!");

}
elseif (mysql_num_rows(Password) > 0)
{

print("se mas original, esta contraseña, ya esta siendo utilizara por otro usuario!!");

}

me salta el siguente mensaje: "Warning: Supplied argument is not a valid MySQL result resource in" debe haber algo mal en la función de mysql
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #4 (permalink)  
Antiguo 09/06/2003, 07:18
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Mira en el manual de www.php.net que parametros necesita mysql_num_rows(). No es precisamente lo que le pasas. Tienes que pasarle lo devuelto por mysql_query() un identificador de recordset.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 09/06/2003, 07:18
Avatar de jama  
Fecha de Ingreso: junio-2003
Mensajes: 41
Antigüedad: 14 años, 6 meses
Puntos: 0
Estoy de acuerdo con josemi, quita los endif y ¿por qué tienes : al final del primer if?
  #6 (permalink)  
Antiguo 09/06/2003, 09:51
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Si es verdad, ahora funciona, pero entoces haciendolo de esta forma:

$check = mysql_query("SELECT Nombre, Apellidos, Email, Password FROM usuarios WHERE Nombre='$Nombre' OR

Apellidos='$Apellidos' OR Email='$Email' OR Password='$Password'");
$num_rows = mysql_num_rows($check);


if (mysql_num_rows($check) > 0)
{

print("Tienes datos repetidos");
}
else
{

no se puede determinar que datos son los repetidos, si el nombre de usuario, si el email u otra cosa

quiero decir, habria q hacer varias consultas, con su respectivo if
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #7 (permalink)  
Antiguo 09/06/2003, 10:05
Avatar de juque  
Fecha de Ingreso: marzo-2002
Ubicación: Temuco, Chile
Mensajes: 84
Antigüedad: 15 años, 8 meses
Puntos: 0
no entiendo porque quieres ser tan estricto con tus usuarios y pensando tan negativamente , para mi .. con tener un identificador unico e irrepetible para mis usuarios es suficiente.. si se llaman del mismo nombre o tienen la mismas passwd.. me da igual. Creo que estás complicandote gratis!!!.. Un buen identificador puede ser el e-mail o bien un nombre de usuario.

No se complique tanto mi amigo!!!!

un consejo, use los superarreglos $_POST,$_GET,$_REQUEST...en tu código, no te quedes en el pasado NENE.. la generaciones futuras de tu código te lo agradecerán ;).

saludos,
__________________
~~
www.juque.cl
  #8 (permalink)  
Antiguo 09/06/2003, 13:59
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
No es quiera ser estricto, seria absurdo, no dejar registrarse a gente con el mismo apellido (podrian ser hermanos) o gente q le coincida el nobre, incluso lo de la contraseña no importa, pero todo esto lo hago para aprender, para saber hacerlo, de echo esto no va a ir en ninguna web de momento estoy practicando, lo de los superarreglos $_POST,$_GET,$_REQUEST, aun no se utilizarlos sera cuestión de que me los mire, gracias por los consejos
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
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 16:16.