Foros del Web » Programando para Internet » PHP »

Error mysql_num_rows.

Estas en el tema de Error mysql_num_rows. en el foro de PHP en Foros del Web. Buenas! tengo un error con el mysql_num_rows me devuelve 0 cuando el usuario que le estoy metiendo esta en la base de datos. Aqui os ...
  #1 (permalink)  
Antiguo 21/02/2008, 12:25
Avatar de esnalca  
Fecha de Ingreso: enero-2008
Mensajes: 77
Antigüedad: 16 años, 3 meses
Puntos: 0
Error mysql_num_rows.

Buenas!

tengo un error con el mysql_num_rows me devuelve 0 cuando el usuario que le estoy metiendo esta en la base de datos. Aqui os dejo el codigo.

Código PHP:
<?
$nick
$_REQUEST['nick'];
$contrasena sha1($_REQUEST['pass']);

$conn mysql_connect("host","user","pass");

mysql_select_db("directorio",$conn);

//$ssql = "SELECT nick FROM usuarios WHERE nick='$nick' and pass='$contrasena'";

$rs mysql_query("SELECT nick FROM usuarios WHERE nick='$nick' and pass='$contrasena'",$conn);
echo 
$rs;
if (((
$nick)=="") || (($contrasena)=="")) {

include 
'sesionFaltanDatos.php';}
         
else{
    echo 
mysql_num_rows($rs);
    if (
mysql_num_rows($rs)==0){
        include 
'sesionIncorrecta.php';}
    else{ 
        
session_start();
        include 
'sesionCorrecto.php';}
}
?>

<?  
mysql_free_result
($rs);
mysql_close($conn);
?>

Aqui os dejo el codigo se sesionCorrecto.php:

Código PHP:
<?
include 'inicio.php';
?>
<?
session_start
(); 
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> Directorio </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="Haritz Sistiaga">
  <META NAME="Keywords" CONTENT="Directorio">
  <META NAME="Description" CONTENT="Directorio PHP">
 </HEAD>
 <body>
 <center> <H1> Directorio PHP 
 <br>
 <h2> Has entrado en nuestro sistema </h2>
 <BR>
 <BR>
 <h3> <a href="index.php">Volver a la página principal</a> </h3>
 </center>
</body>
</HTML>
Gracias.
  #2 (permalink)  
Antiguo 21/02/2008, 12:31
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: Error mysql_num_rows.

Tenes un error en la consulta, solo seleccionas el campo nick de la tabla, excluyendo los de mas..

SELECT * FROM usuarios WHERE nick='$nick' and pass='$contrasena'

podes poner un *

o SELECT nick, pass FROM usuarios WHERE nick='$nick' and pass='$contrasena'
  #3 (permalink)  
Antiguo 21/02/2008, 13:25
Avatar de esnalca  
Fecha de Ingreso: enero-2008
Mensajes: 77
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Error mysql_num_rows.

antes teniamos el codigo de esa manera con esa sentencia sql peo nos hacia lo mismo. siempre nos iba al else porque nos daba que mysql_num_rows era igual a 0
  #4 (permalink)  
Antiguo 21/02/2008, 13:39
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Error mysql_num_rows.

tienes dos variables iguales un pass para conectar a la base dde dato y otro pass que es de la estructura de dato puede que por hay te venga el error
  #5 (permalink)  
Antiguo 21/02/2008, 13:54
Avatar de esnalca  
Fecha de Ingreso: enero-2008
Mensajes: 77
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Error mysql_num_rows.

he cambiado el reques en todos los fomulario a password y sigue dando 0 el mysql_num_rows pero esl $rs hacemos un echo y nos da Resource id #3 y eso no es igual a 0.
  #6 (permalink)  
Antiguo 21/02/2008, 15:39
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Error mysql_num_rows.

Prueba asi tu código

Código PHP:
<?
$nick 
$_POST['nick'];
$contrasena sha1($_POST['pass']);
$conn mysql_connect("host","user","pass") or die ("Se ha producido un error al conectar con el servidor");
 
mysql_select_db("directorio",$conn);

if (empty(
$nick) or empty($contrasena)) 
{
   
// Faltan datos por digitar
   
include ("sesionFaltanDatos.php");
}
else
{
   
$ssql "SELECT * FROM usuarios WHERE nick = '$nick' and pass = '$contrasena'";
   
$rs mysql_query($ssql$conn) or die ( mysql_error() );
   
$datos mysql_fetch_array$rs );

    
    if (
$datos['nick'] != $nick or $datos['pass'] != $contrasena)
    {
        
// Datos incorrectos
        
include ("sesionIncorrecta.php");
    }
    else
    { 
        
// Datos correctos
        
session_start();
        include (
"sesionCorrecto.php");
    }
}
?>

<?  
mysql_free_result
($rs);
mysql_close($conn);
?>
Creo que asi te deberia servir si se me paso algo lo corriges y listo.

Saludos.
  #7 (permalink)  
Antiguo 21/02/2008, 17:47
 
Fecha de Ingreso: febrero-2008
Mensajes: 5
Antigüedad: 16 años, 2 meses
Puntos: 0
Exclamación Re: Error mysql_num_rows.

Buenas tardes,

yo tengo un problema mas o menos similar:

Resulta que quiero dar de alta a un socio pero primero quiero ver si ya antes habia estado dado de alta si es asi que me pregunte si deseo volver a darlo de alta y si no que me registre este socio. El codigo a continuacion

Cita:
// Si hay alguna casiila en blanco que me lo indique
if ($apat == "" || $amat == "" || $nombre == "")
{ echo "<br>Ha dejado informacion en blanco, por favor verifique los datos <br>";
echo "<br>Pulse el boton 'ir a pagina anterior' de su navegador";
exit;
}

// selecciono todos los socios cuyo apellido paterno, apellido materno y nombre sean iguales
$sql = "select * from socios_sistema where apat='$apat' and amat='$amat' and nombre='$nombre'";

// esta instruccion recomendaban y la puse
$rs = mysql_query($sql, $link) or die ( mysql_error() );
$result = mysql_query($rs);

// Si hay mas de un registro con los datos identicos me pregunta si desea ingresarlo de todas formas
if (mysql_num_rows($result)>0)
{
echo "<br>Este nombre ya esta dado de alta en el sistema, ¿Esta seguro que desea";
echo "<br>darlo de alta?";
exit;
}

// Si no que me capture la informacion que le introduje
else {
$cont=$cont+$datos["num"];
$status='1';
$fecha=date("y/m/d");
mysql_query("insert into socios_sistema values ($cont','$apat','$amat','$fecha','$status'",$link) ;
}
?>
Aqui la situacion es que me manda este mensaje al momento de ejecutarlo

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\ahorro\comp_soc.php on line 17

La linea 17 es esta:

Cita:
if (mysql_num_rows($result)>0)
Espero me puedan ayudar, gracias
  #8 (permalink)  
Antiguo 22/02/2008, 01:34
Avatar de esnalca  
Fecha de Ingreso: enero-2008
Mensajes: 77
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Error mysql_num_rows.

en principio lo que te falta es la conexion a la base de datos no se si en tu archivo la tendras peo aqui no lo has puesto y luego tenemos el mismo problema que el mysql_num_rows da igual a 0 entonces no hace lo que queremos que haga
  #9 (permalink)  
Antiguo 22/02/2008, 02:00
Avatar de pablinff  
Fecha de Ingreso: diciembre-2005
Ubicación: Argentina
Mensajes: 383
Antigüedad: 18 años, 4 meses
Puntos: 7
Re: Error mysql_num_rows.

esnalca:
mmm... para empezar...
> mysql_num_rows lo que hace es contar la cantidad de registros que tienes en la tabla y que concidan con tu consulta, en este caso con usuario y contraseña. Entonces si no existe un usuario con la contraseña dada mysql_num_rows siempre devolverá 0.
> Es inutil que hagas un "echo" a lo que te devuelve la consulta directamente sin antes tratarlo con mysql_fetch_row, array ,assoc, debido a que solo te devuelve un objeto identificativo de la conexión a la base de datos.
djgasper:
Tu problema está (aparentemente) en esta linea:
Código PHP:
$rs mysql_query($sql$link) or die ( mysql_error() );
$result mysql_query($rs); < 
Estás haciendo una consulta y la almacenas en $rs, y luego vuelves a hacer con lo que te retornó la consulta anterior una nueva consulta.
Probá eliminar la linea que te marqué y acá:
Código PHP:
if (mysql_num_rows($result)>0
Cambiá $result por $rs.
Probá y comenta que sucedió.

Edit:Cabe aclarar de que el problema no aparenta ser con la conexión a la base de datos.
Saludos!
__________________
I'm gonna start a revolution from my bed...
  #10 (permalink)  
Antiguo 22/02/2008, 02:07
Avatar de esnalca  
Fecha de Ingreso: enero-2008
Mensajes: 77
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Error mysql_num_rows.

Yo introduzco un usuario y una contraseña recien registrados y claro si como tu dices me devuelve el numero de registros que cumplen la consulta me tendria que dar un 1 peo hay esta el problema que aun habiendo introducido bien el usuario y la contraseña ya que con los echo es lo que quiero comprobar siempre me da el mysql_num_rows igual a 0.

Gracias
  #11 (permalink)  
Antiguo 22/02/2008, 02:46
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: Error mysql_num_rows.

Hola,

has probado de hacer un echo de la consulta?
y de si te llegan bien las variables?
Código PHP:
<?php
$nick
$_REQUEST['nick']; 
echo 
"Nick: ".$nick."<br>";
$contrasena sha1($_REQUEST['pass']); 
echo 
"Pass: ".$contrasena."<br>";
// Siempre poner un die para q ssalga un error en caso de fallo
$conn mysql_connect("host","user","pass")or die ("Error de connexión: host/user/pass incorrecto");
mysql_select_db("directorio",$conn) or die ("Error de connexión: base de datos incorrecta");
 

//$ssql = "SELECT nick FROM usuarios WHERE nick='$nick' and pass='$contrasena'"; 
$query "SELECT nick FROM usuarios WHERE nick='$nick' and pass='$contrasena'";
//Imprime a ver si sale correcto el query 
echo "Query: ".$query."<br>";
$rs mysql_query($query,$conn) or die("Error SQL: ".mysql_error()); 
if (((
$nick)=="") || (($contrasena)=="")) { 

include 
'sesionFaltanDatos.php';} 
          
else{ 
    echo 
mysql_num_rows($rs); 
    if (
mysql_num_rows($rs)==0){ 
        include 
'sesionIncorrecta.php';} 
    else{  
        
session_start(); 
        include 
'sesionCorrecto.php';} 

  
mysql_free_result($rs); 
mysql_close($conn); 
?>

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #12 (permalink)  
Antiguo 22/02/2008, 02:54
Avatar de esnalca  
Fecha de Ingreso: enero-2008
Mensajes: 77
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Error mysql_num_rows.

esta todo probado el echo del la consulta nos devuelve

SELECT * FROM usuarios WHERE nick='nickquehemosintroducido' AND pass='contraseña que hemos recibido'

luego tambien emos hecho echo de la recogida de las variables y si nos devuelven lo que hemos introducido.

Gracias
  #13 (permalink)  
Antiguo 22/02/2008, 03:03
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: Error mysql_num_rows.

Hola de nuevo!!!
Entonces lo unico q se me ocurre es ir por trozos, es decir:

1ero.- prueba la consulta sin el Where. ->SELECT * FROM usuarios
2undo.- prueba la consulta solo con el nick -> SELECT * FROM usuarios WHERE nick='$nick';
- si aqui no te da problemas ya aislamos q el problema viene con el password sino seguimos
3ero.- prueba la consulta solo con el pass -> SELECT * FROM usuarios WHERE pass='$contrasena';

incluso lo podrias probar sin las variables - es decir, poner el nombre a piñon a ver si asi lo pilla correctamente

--> Select * from usuarios WHERE nick='alberto' AND pass='mipassword';

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 22/02/2008 a las 03:16
  #14 (permalink)  
Antiguo 22/02/2008, 04:12
Avatar de esnalca  
Fecha de Ingreso: enero-2008
Mensajes: 77
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Error mysql_num_rows.

nada sigue sin dejarme logearme
  #15 (permalink)  
Antiguo 22/02/2008, 04:18
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: Error mysql_num_rows.

Cita:
Iniciado por esnalca Ver Mensaje
nada sigue sin dejarme logearme
te funcionaron todas las sentencias? se clavo en alguna?
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #16 (permalink)  
Antiguo 22/02/2008, 04:21
Avatar de esnalca  
Fecha de Ingreso: enero-2008
Mensajes: 77
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Error mysql_num_rows.

en si siempre me va por el else las sentencias las imprimi y ma sacaba en nick='nickintroducido' y pass='passintroducida'
  #17 (permalink)  
Antiguo 22/02/2008, 04:32
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: Error mysql_num_rows.

ya veo q no probaste todas las sentencias q te puse - pruebalo sin la clausula where a ver si te entra y luego vas probando con varias variantes... asi conseguiras aislar el problema!

pusiste el die("Error SQL: ".error_mysql()); para asegurarte q tu sentencia es correcta -

con los pocos datos q das más no puedo decirte!

Saludos y suerte
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #18 (permalink)  
Antiguo 22/02/2008, 04:47
Avatar de esnalca  
Fecha de Ingreso: enero-2008
Mensajes: 77
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Error mysql_num_rows.

bueno ya lo siento ya e encontrado el error despues de darle muchas vueltas a la cabeza y al codigo, el error no era del codigo ya que estaba perfecto ya lo siento por las molestias.

El error habia sido del diseñador de la base de datos ya que para el campo de la contraseña dejo espacio insuficiente para poder meter la contraseña encriptada bajo sha1

Gracias.
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 00:13.