Ver Mensaje Individual
  #8 (permalink)  
Antiguo 26/01/2009, 13:33
Avatar de aldo1982
aldo1982
 
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: [Apoerte] Paginacion php+mysql

Cita:
Iniciado por FabianSN Ver Mensaje
Bueno, aqui he hecho algo basandome en tu caso particular.
Para probarlo solo debes cambiar algunos parametros de conexion para especificar la BD y tabla a usar.

Se podría haber hecho en funcion o definiendo clases, pero preferí hacerlo sobre el mismo código para que se entienda mejor el funcionamiento.

Saludos y espero te sirva.

Código PHP:
<table width="550"  cellpadding="2" cellspacing="1">    
    <?
        $cn
=mysql_connect("localhost","root",""); // Depende de la conexion a la BD que tenga cada usuario
        
$db=mysql_select_db("tu_base_de_dato",$cn); // Seleccionar la BD a usar

        
$perPage 10// Filas por pagina
        
$pageplus6//Cuantas paginas mostrar antes de mostrar la página final
        
$Tabla="tabla_a_usar"//Tabla que vas a usar para hacer la consulta

        // Pagina inicial
        
if ($_GET[page]>0) {
            
$page=$_GET[page];
        } else {
            
$page=1;
        }
        
//Calcular el primer valor del parámetro a pasarle a LIMIT
        
$inicio=$perPage*($page-1);

        
//Calcular cantidad de páginas
        
$sql "SELECT count(ID) as cantidad FROM $Tabla"
        
$result mysql_query($sql);
        if (
$row mysql_fetch_array($result)) 
            
$filas=$row[cantidad]; // Total de registros devueltos por la consulta
            
$paginas=ceil($filas/$perPage); // Total de paginas
            
        
        
if ($filas>0) {
            
$sql "SELECT * FROM $Tabla ORDER BY ID LIMIT $inicio,$perPage";
            
$result mysql_query($sql);
            while(
$row mysql_fetch_array($result)) {
                
?>
                <tr>
                    <td align="center"><? echo $row[0?></td>
                    <td align="center"><? echo $row[1?></td>
                </tr>
                <?
            
}
            echo 
"</table>";
            if ((
$page+$pageplus)>$paginas)
                
/* Si la cantidad de páginas que quedan para completar la cantidad de paginas 
                   que se debe mostrar, es menor que dicho parametro reduce la cantidad a mostrar */
                
$pageplus=$paginas-$page
            for(
$n=$page+1;$n<=($page+$pageplus);$n++) {
                echo 
"<a href=\"prueba.php?page=$n\">$n</a>";
                if (
$n+1<=($page+$pageplus)) {
                    
//Coloca el separador (espacio y coma, en este caso)
                    
echo "&nbsp;,";
                } else {
                    if ((
$page+$pageplus)<$paginas) {
                    
// Si el próximo es el final coloca la última página
                    
echo "&nbsp;...&nbsp;<a href=\"prueba.php?page=$paginas\">$paginas</a>"
                    }
                }
            }
            
// Que haya algun link para volver una página hacia atrás
            
if ($page==$paginas)
                echo 
"<a href=\"prueba.php?page=".($page-1)."\">Volver a ".($page-1)."</a>";
            
        } else {
            
?>
            <tr>
                <td colspan="2" id="noRows"><b>No se han encontrado registros</b></td>
            </tr>
            </table>
            <?
        
}
    
?>
hola fabian, mira la idea seria cambiar la funcion, no el uso de la misma ... me explico ?
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA