Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Paginacion

Estas en el tema de Paginacion en el foro de PHP en Foros del Web. Hola a todos, tengo el siguiente código el cual me permite dividir el total de resultados de mi consulta, en paginas de 10 registros cada ...
  #1 (permalink)  
Antiguo 06/04/2018, 15:53
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Paginacion

Hola a todos, tengo el siguiente código el cual me permite dividir el total de resultados de mi consulta, en paginas de 10 registros cada una... todo bien hasta aca... solo al momento de hacer la paginación como puedo hacer para que siguiente>> sea dinámico es decir no la pagina 8 sino la que corresponda si estoy en la 9 al dar clic en siguiente me mande a la 10 ... Desde ya mil gracias
Código PHP:
<head>
<style type="text/css">

ul    { border:0; margin:0; padding:0; }
#pagination-digg li          { border:0; margin:0; padding:0; font-size:13px; list-style:none; /* savers */ float:left; }
#pagination-digg a           { border:solid 1px #9aafe5; margin-right:2px; }
#pagination-digg .previous-off,
#pagination-digg .next-off   { border:solid 1px #DEDEDE; color:#888888; display:block; float:left; font-weight:bold; margin-right:2px; padding:3px 4px; }
#pagination-digg .next a,
#pagination-digg .previous a { font-weight:bold; }
#pagination-digg .active     { background:#2e6ab1; color:#FFFFFF; font-weight:bold; display:block; float:left; padding:4px 6px; /* savers */ margin-right:2px; }
#pagination-digg a:link,
#pagination-digg a:visited   { color:#0e509e; display:block; float:left; padding:3px 6px; text-decoration:none; }
#pagination-digg a:hover     { border:solid 1px #0e509e; }
</style></head>
<?php

require_once('../Connections/connection.php');

//Evitamos que salgan errores por variables vacías
error_reporting(E_ALL E_NOTICE);
//Cantidad de resultados por página (debe ser INT, no string/varchar)
$cantidad_resultados_por_pagina 10;

//Comprueba si está seteado el GET de HTTP
if (isset($_GET["pagina"])) {

    
//Si el GET de HTTP SÍ es una string / cadena, procede
    
if (is_string($_GET["pagina"])) {

        
//Si la string es numérica, define la variable 'pagina'
         
if (is_numeric($_GET["pagina"])) {

             
//Si la petición desde la paginación es la página uno
             //en lugar de ir a 'index.php?pagina=1' se iría directamente a 'index.php'
             
if ($_GET["pagina"] == 1) {
                 
header("Location: index.php");
                 die();
             } else { 
//Si la petición desde la paginación no es para ir a la pagina 1, va a la que sea
                 
$pagina $_GET["pagina"];
            };

         } else { 
//Si la string no es numérica, redirige al index (por ejemplo: index.php?pagina=AAA)
             
header("Location: index.php");
            die();
         };
    };

} else { 
//Si el GET de HTTP no está seteado, lleva a la primera página (puede ser cambiado al index.php o lo que sea)
    
$pagina 1;
};

//Define el número 0 para empezar a paginar multiplicado por la cantidad de resultados por página
$empezar_desde = ($pagina-1) * $cantidad_resultados_por_pagina;

   
        
?>
        
        <body>
<?php
//Obtiene TODO de la tabla
$obtener_todo_BD "SELECT * FROM informes";

//Realiza la consulta
$consulta_todo mysqli_query($connection$obtener_todo_BD);

//Cuenta el número total de registros
$total_registros mysqli_num_rows($consulta_todo);

//Obtiene el total de páginas existentes
$total_paginas ceil($total_registros $cantidad_resultados_por_pagina); 

//Realiza la consulta en el orden de ID ascendente (cambiar "id" por, por ejemplo, "nombre" o "edad", alfabéticamente, etc.)
//Limitada por la cantidad de cantidad por página
$consulta_resultados mysqli_query($connection"
SELECT * FROM informes
 
LIMIT $empezar_desde, $cantidad_resultados_por_pagina"
);

//Crea un bluce 'while' y define a la variable 'datos' ($datos) como clave del array
//que mostrará los resultados por nombre
while($datos mysqli_fetch_array($consulta_resultados)) {
?>

<span class="persona">
<p><strong><?php echo $datos['Nombre']; ?></strong> <br>
<?php echo $datos['ApellidoPaterno']; ?></p>
</span>

<?php
};


?>


<table border="0">
<?
echo "
<ul id='pagination-digg'>
    <li class='previous-off'>«Anterior</li>
    <li class='active'>1</li>
    <li><a href='?pagina=2'>2</a></li>
    <li><a href='?pagina=3'>3</a></li>
    <li><a href='?pagina=4'>4</a></li>
    <li><a href='?pagina=5'>5</a></li>
    <li><a href='?pagina=6'>6</a></li>
    <li><a href='?pagina=7'>7</a></li>
    <li class='next'><a href='?pagina=8'>Siguiente »</a></li>
</ul>"
;?>
</table>
  #2 (permalink)  
Antiguo 06/04/2018, 16:08
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Paginacion

Saludo


Pues para eso tienes a $pagina
Simplemente sumale uno en el momento
de ponerlo en el href de siguiente

Código PHP:
Ver original
  1. <a href='url?pagina=<?php echo $pagina + 1;?>'>Siguiente</a>


Y para anterior, lo mismo, solo que restando.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 06/04/2018, 16:17
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Paginacion

Gracias tenia problemas en la sintaxis

  #4 (permalink)  
Antiguo 06/04/2018, 16:22
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Paginacion

Una duda más si doy clic en la pagina 7 ... después en siguiente que debo hacer para que cambien los números de la paginación es decir tengo
1.2.3.4.5.6.7 siguiente>>
al pasar a 8 quede
8.9.10.11.12.13.14 siguiente>>
  #5 (permalink)  
Antiguo 06/04/2018, 19:53
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Paginacion

De nada.

En cuanto a tu nueva duda,
pues $pagina en ese caso podría ayudarte otra vez.

Para tu ejemplo, estando en la página 7 das a siguiente
y se visualiza la página 8, en ese caso, tus links usarían a
$pagina+1, $pagina+2, etc tanto en el valor de pagina=X
donde X es $pagina, cómo en la parte 'visual' del tag <a>X</a>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #6 (permalink)  
Antiguo 07/04/2018, 10:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Paginacion

Tienes que mostrar los enlaces con un ciclo for:

Código PHP:
Ver original
  1. // Página actual obtenida de $_GET o 1, por default
  2. $pagina = (isset($_GET['pagina'])) ? (int) $_GET['pagina'] : 1;
  3.  
  4. // Total de páginas, obtenido al contar los resultados y dividir entre elementos por página
  5. $max = ceil($total_registros / 10);
  6.  
  7. echo '<ul id="pagination-digg">';
  8.  
  9. // Enlace a página anterior solo si no estás en la primera
  10. if($pagina > 1) {
  11.     $num = $pagina - 1;
  12.     echo "<li class=\"previous\"><a href=\"?pagina=$num\">«Anterior</a></li>";
  13. }
  14. // Mostrar el resto de enlaces
  15. for($i = 1; $i <= $max; $i++) {
  16.     if($i == $pagina) {
  17.           // Muestras elemento activo
  18.     } else {
  19.           // Muestras enlace a página
  20.     }
  21. }
  22.  
  23. // Enlace a página siguiente solo si no estás en la última
  24. if($pagina < $max) {
  25.      // Haces lo mismo que con anterior para mostrarla
  26. }
  27.  
  28. echo '</ul>';
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 13/04/2018 a las 11:17
  #7 (permalink)  
Antiguo 09/04/2018, 00:02
 
Fecha de Ingreso: febrero-2015
Ubicación: venezuela
Mensajes: 50
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Paginacion

Ya resolviste, si algo te puedo proporcionar el código que yo uso de paginado php que yo hace muchos años conseguí en internet pero no funcionaba como yo quería y podría decir que lo tengo muy cambiado

Etiquetas: mysql, nombre, paginacion, query, registro, select, tabla, variable
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 09:00.