Casi en cualquier ocasión nos encontramos con la necesidad de contar registros de una consulta mysql con PHP.
Lo peor que podemos hacer es contar los registros mediante la sentencia count(*)
Ej.- select count(*) from provincias.
La ejecución de esta consulta consume muchos recursos en el servidor de bases de datos.
Podemos mejorarla, indicando únicamente un campo, en este caso el identificador primario de la tabla:
Ej.- select count(id) from provincias
Aún mejor que esta fórmula, es utilizar mysql_num_rows
$query_provincias="select id,nombre from provincias";
$result_provincias=mysql_query($query_provincias,$link) or die ("error");
$numero_filas = mysql_num_rows($result_provincias);
while($row_provincias=mysql_fetch_array($result_provincias))
{
//mostramos los datos
}
echo "El número total de resultados es".$numero_filas;
Esta función nos devuelve de forma rápida el número de filas de la consulta PERO condicionado por el limitador de resultados si lo incluimos en la consulta.
Es decir. Si en la consulta indicamos que se muestren sólo 20 registros:
$query_provincias="select nombre from provincias limit 0,20";
la variable $numero_filas, nos devolvería 20 como resultado.
La mejor forma y la más rápida de contar registros es utilizar la función la función SELECT SQL_CALC_FOUND_ROWS combinada con SELECT FOUND_ROWS(). Con ello obtendremos el número total de registros que generaría la consulta sin importar que esta lleve limit o no.
$query_provincias="select SQL_CALC_FOUND_ROWS id,nombre from provincias";
$result_provincias=mysql_query($query_provincias,$link) or die ("error");
$rt = mysql_fetch_row(mysql_query("SELECT FOUND_ROWS()")); // Total de registros
while($row_provincias=mysql_fetch_array($result_provincias))
{
//mostramos los datos
}
echo "El número total de resultados es".$rt[0];
No hay comentarios:
Publicar un comentario