Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/08/2008, 04:44
M_Corleone
 
Fecha de Ingreso: enero-2008
Mensajes: 17
Antigüedad: 17 años, 1 mes
Puntos: 0
registrando usuarios en mysql

Hola, pues tengo el siguiente código PHP, que se conecta a la BD, comprueba si el usuario indicado no existe y en ese caso lo da de alta en la BD y en una tabla propia. El caso es que la consulta donde compruebo que el usuario no exista, siempre da como resultado una fila (Como si el usuario ya estuviera registrado) y encima entra en el código del else mostrando ese mensaje y registrando al usuario en la BD.

La tabla db_discos.usuarios la he creado yo para ir almacenando los usuarios.

Código:
<?PHP
	// Se obtienen los parámetros de conexión enviados desde el POST
	$name = $_POST['taname'];
	$pass = $_POST['tapass'];
	// Conectamos como el usuario que tiene permisos para crear otros usuarios
	$con = mysql_connect ("localhost", "root", "root");
	
	if ($con){ 
		mysql_select_db ("db_discos", $con);	
		// Si hemos conectado correctamente, comprobamos que el usuario no exista en la BD
		$res = mysql_query ("SELECT * FROM db_discos.usuarios WHERE nombre='$name'", $con);
		$num = mysql_num_rows ($res);
		if ($num==1){ // Se ha encontrado al menos un usuario con el mismo nombre
			echo "<html><head><meta http-equiv=\"refresh\" content=\"5; url=entrada.html\"></head><body><div align=\"center\"><font face=\"Courier New\">El usuario de nombre $name ya se encuentra registrado en el sistema.<br>Reg&iacute;strese con otro nombre.<br>En 5 segundos volver&aacute; a la p&aacute;gina de entrada. RESULTADO: $num</font></div></body></html>";		
		}
		else{ // En este caso no se encontraron usuarios con el mismo nombre. Lanzamos la secuencia para dar de alta
			mysql_query ("GRANT SELECT, INSERT, UPDATE ON db_discos.discos TO $name IDENTIFIED BY '$pass'", $con);
			mysql_query ("INSERT INTO usuarios (nombre, password) VALUES ('$name', '$pass')", $con);
			echo "<html><head><meta http-equiv=\"refresh\" content=\"5; url=entrada.html\"></head><body><div align=\"center\"><font face=\"Courier New\">Registro completado satisfactoriamente ($name, $pass).<br>Ahora puede usar su nombre y contraseña para acceder.</font></div></body></html>";
		}
	}
	else{ // En este caso no hemos conseguido conectar
		echo "<html><head><meta http-equiv=\"refresh\" content=\"5; url=entrada.html\"></head><body><div align=\"center\"><font face=\"Courier New\">Lo sentimos, no se ha podido conectar con la BD.<BR>Reint&eacute;ntelo de nuevo en unos minutos.<br>En 5 segundos volver&aacute; a la p&aacute;gina de entrada.</font></div></body></html>";
	}
	mysql_close ($con);
?>
¿Qué puede ir mal? He dado mil vueltas al código y no me percato de nada.