Foros del Web » Programando para Internet » PHP »

Solucion cuando no hay registros y hago mysql_num_rows

Estas en el tema de Solucion cuando no hay registros y hago mysql_num_rows en el foro de PHP en Foros del Web. el problema esq si no hay registros, da un error sql, esto tiene alguna solucion sencilla, creo que seria cosa de añadir una condicion, pero ...
  #1 (permalink)  
Antiguo 02/11/2003, 07:49
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
Solucion cuando no hay registros y hago mysql_num_rows

el problema esq si no hay registros, da un error sql, esto tiene alguna solucion sencilla, creo que seria cosa de añadir una condicion, pero ande?

Código PHP:
$totalUsrVisit mysql_num_rows(mysql_query("SELECT DISTINCT ip_usr FROM $sql_tabla_count_pulsa") ) or die("MySQL dice: ".mysql_error()); 

__________________
3w.valenciadjs.com
3w.laislatv.com
  #2 (permalink)  
Antiguo 02/11/2003, 14:55
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

No es que salga un error. El problema es que con mysql_num_rows() no hay que usar el or die().

La explicacion esta en como funciona el or. En PHP las operaciones booleanas se ejecutan en "cortocircuito". Solo se evaluan los operadores necesarios para tener una respuesta. Con el or se evalua solo hasta el primer TRUE.

En mysql_query() y demas funciones mysql_* que devuelven un valor distinto a 0 si son correctas o false en caso de error, el truco del or die() funciona, porque devuelven falso y se evalua el die().

Pero mysql_num_rows(), aun cuando no de error, puede devolver 0. Y en PHP 0 es equivalente a falso. Y por eso evalua el die().

Resumiendo, no uses or die() con mysql_num_rows(). Y no quieras crear codigo "inteligente", juntando en una linea dos. Yo recomiendo no poner nunca el mysql_query() como parametro de otra funcion. Tu codigo deberia ser:
Código PHP:
$result=mysql_query("SELECT DISTINCT ip_usr FROM $sql_tabla_count_pulsa") or die("MySQL dice: ".mysql_error());
$totalUsrVisit mysql_num_rows($result); 
No queda tan "kuul" como todo en una linea, pero es mucho mas claro.

Saludos.

PD: Si solo quieres el numero de ip distintas, quizas seria mejor hacer un COUNT().
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 25/11/2003, 14:53
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Saludos

Antes de mostrar datos, puedes preguntar por la variable de conección a la db.

if ($result) {

//procesas los resultados;

}elseif (!$result) {

echo "No existen datos con esas condiciones";

}

Suerte
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
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 18:51.