Foros del Web » Programando para Internet » PHP »

problemas conprobando existencia de registro en bd

Estas en el tema de problemas conprobando existencia de registro en bd en el foro de PHP en Foros del Web. Buen dia estoy tratando de comprobar si el nombre de usuario que escoge un usuario para un sistema ya existe mediante php, a mi parecer ...
  #1 (permalink)  
Antiguo 30/06/2011, 23:10
Avatar de mitcheldaza  
Fecha de Ingreso: junio-2011
Ubicación: Colombia
Mensajes: 42
Antigüedad: 12 años, 9 meses
Puntos: 1
problemas conprobando existencia de registro en bd

Buen dia estoy tratando de comprobar si el nombre de usuario que escoge un usuario para un sistema ya existe mediante php, a mi parecer todo esta bien pero no me funciona el sistema de comprobacion me tiene loco por que no encuantro el error ademas he estado viendo codigos similares y estan igual en cuanto a la logica.

El parametro $conex que entra en la funcion es el recurso de conexion creado desde otra funcion, no es problemas del recurso pues ya lo probe con otras consultas.

Código PHP:
function comprobaruser($conex){
            
mysql_select_db("pruebasphp",$conex) or die ("problemas en la seleccion de la base para nombre usuario");
            
            
$registros=mysql_query("select nombrelogeo from logeo where nombrelogeo= '$_REQUEST[nombreusuario]' ",$conex)
                     or die(
"problemas en la comparacion de users".mysql_error());
                     
$userexiste=mysql_num_rows($registros);
                    echo 
"encontro algo".$userexiste."<br>";
                    
                    if(
$reg=mysql_fetch_array($registros)){
                        echo 
"nombre de usuario ya existe";
                    }
                    else{
                        echo 
"no hay nombres de usuario registrados que concuerden";
                    }
        } 
Si se dan cuenta uso una variable $userexiste para revisar si la busqueda fue exitosa (encontro algo) imprimo esta variable y si resulta una coincidencia, el result set tiene una columna sin embargo no entiendo por que el condicional if no muestra nada y el else mucho menos.
por pantalla se me imprime un 0 despues del numero de columnas del result set.


probe de la siguiente manera tambien con los mismos resultados

Código PHP:
function comprobaruser($conex){
            
mysql_select_db("pruebasphp",$conex) or die ("problemas en la seleccion de la base para nombre usuario");
            
            
$registros=mysql_query("select nombrelogeo from logeo where nombrelogeo= '$_REQUEST[nombreusuario]' ",$conex)
                     or die(
"problemas en la comparacion de users".mysql_error());
                     
$userexiste=mysql_num_rows($registros);
                    echo 
"encontro algo".$userexiste."<br>";
                    
                    if(
$userexiste>0){
                        echo 
"nombre de usuario ya existe";
                    }
                    else{
                        echo 
"no hay nombres de usuario registrados que concuerden";
                    }
        } 
Ayuda por favor no encuentro el por que el error. Gracias
  #2 (permalink)  
Antiguo 01/07/2011, 00:34
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: problemas conprobando existencia de registro en bd

A ver si esto te sirve, en tu código, el if($userexiste>0) no es necesario, prueba esto y me cuentas:

Código PHP:
Ver original
  1. <?php
  2.  
  3. ini_set("display_errors", 1);
  4.  
  5. /**
  6.  * bool comprobarUser Comprueba si el nombre de usuario $nombreUsuario existe en la db
  7.  * @param resource $conex
  8.  * @param string $nombreUsuario
  9.  * @return true cuando el usuario existe o en caso de error, false cuando el nombre de usuario no existe
  10.  */
  11. function comprobaruser($conex, $nombreUsuario){
  12.  
  13.     //Si no puedes seleccionar la db, error, sal de aqui
  14.     if(!$db = mysql_select_db("pruebasphp",$conex)) return true;
  15.     $sql = "select nombrelogeo from logeo where nombrelogeo= '{$nombreUsuario}";
  16.     //Si hay un fallo en la query, error, sal de aqui
  17.     if(!$query = mysql_query($sql, $conex)) return true;
  18.     //Si no se han encontrado registros, entonces devuelves false, o sea, el usuario que buscar no existe
  19.     if(!$userExists = mysql_num_rows($query)) return false;
  20.     //Si se han encontrado registros, entonces devuelves true
  21.     $free = mysql_free_result($query); //Libera recursos
  22.     //Salida
  23.     return true;
  24. }
  25.  
  26. ?>
sal u 2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 01/07/2011, 15:41
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: problemas conprobando existencia de registro en bd

Esto te esta funcionando?

$userexiste=mysql_num_rows($registros);
echo "encontro algo".$userexiste."<br>";


De ser así, podes aprovechar eso para tu condicional:

$userexiste=mysql_num_rows($registros);
if (!empty($userexiste))
...
  #4 (permalink)  
Antiguo 01/07/2011, 17:20
Avatar de mitcheldaza  
Fecha de Ingreso: junio-2011
Ubicación: Colombia
Mensajes: 42
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: problemas conprobando existencia de registro en bd

Hola mayid efectivamente este pedazo funciona lo imprimo y el resultado evidencia una columna que concuerda sin embargo esta misma variable ($userexiste) en el if como evidencia de encontrar algo no funciona jamas entra al if.


Código PHP:
$userexiste=mysql_num_rows($registros);
echo 
"encontro algo".$userexiste."<br>"
a mi parecer nada esta mal sin embargo no funciona, otra cosa que se me olvida mencianar es que despues de ejecutar el codigo la respuesta no es un error sql, simplemente me muestra en pantalla un 0, alguien sabe que significa ?

Seguire probando con el codigo que repara2 me ha facilitado,

GRACIAS

Etiquetas: bd, existencia, registro
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 15:25.