hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
26 de Julio de 2008, 01:51:36
Noticias: Te consideras bueno en C++?
Para ver este enlace Registrate o Inicia Sesion
Aquí

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Desarrollo Web
| | |-+  Php (Moderador: shevchenko)
| | | |-+  Paginación del resultado de un SELECT (rev.1)
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Paginación del resultado de un SELECT (rev.1)  (Leído 694 veces)
vart001
Administrador
*****
Desconectado Desconectado

Mensajes: 1,553


El Mero, mero!


Ver Perfil WWW
« : 02 de Mayo de 2005, 04:42:19 »

Paginación del resultado de un SELECT (rev.1)
Esta paginación es la que se ha usado para realizar esta web, puedes verla funcionando en la página donde se listan los artículos.

Se basa en hacer una consulta a una Tabla y en el SELECT poner la sentencia LIMIT que lo que hace es que apartir de un número de registro coge la cantidad indicada de registros siguientes, o sea que si ponemos LIMIT 10, 15 cogera los registros del 10 al 24.

Lo que se hace en este código es llamar una página indicandole cual es el número de registro desde donde se empezará a buscar.


<?php
//Conexión a la Base de datos, puede hacerse en un Include
//para llamar a un fichero con la configuración, o ponerlo todo aquí.
include ("conexio.php");
//$num es una variable con el número de página que nos pasa esta misma
//página cuando pulsamos sobre los links de los n    º de página.
//Si $num está vacio significa que es la primera vez que entramos en
//la página y le asignamos un 0.
IF ($num>0) { $n=$num;} ELSE { $n=0; }
//Contar cuantos registros hay
$conta="SELECT id FROM documents ";
$result2=mysql_query($conta,$conexio);
$quants=mysql_num_rows($result2);
//Buscar 15 registros
$sql="SELECT * FROM documents ORDER BY id DESC LIMIT ".$n.", 15 ";
$result=mysql_query($sql,$conexio);
if ($row=mysql_fetch_array($result))
{   
   echo "<TABLE BORDER='0'>";   
   DO   
   {
     echo "<TR><TD>".$row["documento"]."</TD> </TR>";   
   }
   WHILE ($row=mysql_fetch_array($result));   
   
   echo "</TABLE>";
}
//PAGINACIÓN
echo "<HR><TABLE BORDER='0' ALIGN='center' WIDTH='95%'><TR>";
//Muestra por pantalla el número total de artículos encontrados
echo "<TD ALIGN='left'> Encontrados ".$quants." artículos </TD>";
echo"<TD ALIGN='RIGHT'>";
echo "<FONT FACE='Arial' SIZE='-1' COLOR='#336699'>Páginas: </FONT>";
//Mientras $i no sea igual o superior al total encontrado se
//incrementa de 15 en 15. $i representa el identificador en
//la Tabla del número de registro que se buscará en el siguiente Select.
//$a es el número de págians encontrado.
FOR ($i=0; $i< $quants; $i=$i+15)
{   
    $a=$a+1; //Incrementamos el número de página
    //Si $n (número de registro donde empieza la busqueda actual actual)
    //es igual a $i se marca en negrita para resaltar la página en la que estamos.   
    IF ($n==$i)   
    {     
 //Ponemos el link a la misma página peró con un número de registro cada vez diferente
        echo "<A HREF='doc.php?num=".$i."'>[<B>".$a."< /B>] [/url] ";
    }   
    ELSE
    {
        echo "<A HREF='doc.php?num=".$i."'>' [".$a."][/url] ";   
    }
}
echo "</TD></TR></TABLE>";
?>


Revisión 1:
A partir de MySQL 4 se puede usar la función found_rows(), que sirve para conocer el número total de resultados de una query sin tener en cuenta la clausula limit de la misma.

Esto es,  si en una consulta ponemos limit 0,30;  mysql_num_rows() devuelve como máximo 30 resultados, aunque la cláusula sin el limit devolviese muchos más.

Esto se solucionaba volviendo a cargar la query sin el limit para ver el número de resultados, con el consiguiente retraso si la consulta era lenta. Pero llamar a la función found_rows() te devuelve la cantidad de registros sin tener que realizar de nuevo la query sin escribir el limit.

Ejemplo:

supongamos que la tabla tareas tenga 300 registros:
mysql_num_rows() de select * from tareas limit 0,30 devolverá 30.

Pero lo siguiente:


$consulta=mysql_query("select sql_calc_found _rows  tareas.* from tareas limit 0,15");
mysql_query("select found_rows() as total_filas");


el campo total_filas devolverá los 300.

El sql_calc_found _rows es importante en la consulta inicial (sin la coma posterior: es una clausula, no el nombre de un campo)

Importante:
sólo  funciona a partir de la versión 4 de MySQL.
En línea

root from cph


Para ver este enlace Registrate o Inicia Sesion
Hackear hotmail aqui

Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online