Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/06/2009, 03:29
ruizdeeguilaz
 
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 45
Antigüedad: 15 años, 5 meses
Puntos: 8
Respuesta: Consulta DB php y html conbinados

Perdona nitramara, quizás he querido resumir en exceso y por eso no se entiende muy bien mi respuesta. Además, te he dicho una cosa mal: mysql_affected_rows sólo sirve para sentencias INSERT, UPDATE o DELETE, pero no para SELECT. Disculpa la confusión.

Trataré de explicartelo mejor y más detalladamente.

Cuando haces una query a base de datos, te devuelve un valor con el que puedes identificar los resultados y trabajar con ellos:
Código PHP:
$res mysql_query($sql); 
El resultado que te digo se guarda en $res. Si la query no devuelve ningún resultado, $res se establece a FALSE, en lugar de contener los resultados, por lo que tienes que tener cuidado a la hora de trabajar con la variable $res, ya que puede no contener nada y puede generar errores. Antes de usar $res, por tanto, debes asegurarte de que ha devuelto algún resultado.

Para ver si ha obtenido algún resultado tú usas la función mysql_num_rows, pero esta función requiere que la query haya devuelto algún resultado, en caso cotrario, da un error. Es como la pescadilla que se muerde la cola: usas mysql_num_rows para saber si ha habido algún resultado, pero mysql_num_rows necesita que haya habido algún resultado para funcionar correctamente, ¿lo entiendes?

En resumen, para comprobar si ha habido algún resultado, basta con que compruebes si $res es FALSE o no; si lo es, no ha devuelto resultados y si no, sí los ha devuelto:

Código PHP:
if ($res != false)    // En este caso, esto es lo mismo que poner if($res)
{
    
// Si entra aquí es porque $res no es FALSE; es decir, ha devuelto resultados
    
$tot mysql_num_rows($res);    // Como $res no es FALSE, seguro que no falla
    
while ($datos=mysql_fetch_assoc($res))
    {
         
// ... código para generar la tabla 
    
}
}
else
{
    
// Si entra aquí es porque $res es FALSE; es decir, NO ha devuelto resultados
    
echo "no hay resultados";

Espero haberte quitado la confusión que te he provocado con la explicación anterior.

Salu2,
Carlos.