Foros del Web » Programando para Internet » PHP »

como hacer una paginacion en php

Estas en el tema de como hacer una paginacion en php en el foro de PHP en Foros del Web. Hola este es un codigo q recopile y modifique ya q no servia lo mejore un poco de como crear una paginacion de una consulta ...
  #1 (permalink)  
Antiguo 18/05/2013, 12:32
Avatar de foxtier494  
Fecha de Ingreso: enero-2013
Mensajes: 10
Antigüedad: 11 años, 3 meses
Puntos: 2
Información como hacer una paginacion en php

Hola este es un codigo q recopile y modifique ya q no servia lo mejore un poco de como crear una paginacion de una consulta web con php mysql con un menucito de siguiente y anterior y con los numeros de acceso directo espero q les guste no es el codigo de condigos pero funciona y se ve bien



Código PHP:
<html>
 <head>

  <?php
   
include("../conexion.php");


  if(isset(
$_GET['pag']) == TRUE){
   
$pag $_GET['pag'];
   }

   else{
 
$pag 0;
   }


  
$limite 5

 
$inicial $pag $limite;

 
$resultados_mostrados 0


    
$clave $_POST["titulo"];

   
$consul "SELECT * FROM tesis where descripcion LIKE '%$clave%' LIMIT $inicial,$limite";

    
$resultados mysql_query($consul,$conet);


?>


 </head>                   
 <body>
    <div id="general">

   <div id="banner">

   </div>

   <div class="linearo"></div>

   <div id="menu">

   </div>
<div class="linearo"></div>
   <div id="body">

<table border="1">
<?
     $cantresult 
mysql_num_rows($resultados);
      while(
$myrow mysql_fetch_array($resultados))
      {

?>

     <tr align="center">
        <td align="center" width="100px" height="200px"></td>
        <td><?php echo $myrow["titulo"]; ?></td>
     </tr>


<?
$resultados_mostrados
++;
}
?>

<tr>
<td>
<?
 
if ($pag 0

 
// Enlace "anterior" 
 
$anterior $pag 1
 echo 
"<a href='buscar.php?pag=$anterior'>Anterior</a> - "



for (
$i 0$i<($pag 1); $i++) {

echo 
"<a href='buscar.php?pg=".$i."'>".$i."</a> ";

}


if (
$resultados_mostrados == $limite

 
// Enlace "siguiente" 
 
$siguiente $pag 1
 echo 
"<a href='buscar.php?pag=$siguiente'>Siguiente</a>"


?>
</td>
</tr>

</table>


</div>
 
   <div class="linearo"></div>
  </div>

 </body>
</html>

</body>
</html>
  #2 (permalink)  
Antiguo 18/05/2013, 13:32
Avatar de herzbazi  
Fecha de Ingreso: febrero-2012
Mensajes: 612
Antigüedad: 12 años, 2 meses
Puntos: 36
Respuesta: como hacer una paginacion en php

buen aporte .

felicitaciones
__________________
Enseña todo lo que sepas...
Aprende todo lo que puedas..
  #3 (permalink)  
Antiguo 18/05/2013, 14:23
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: como hacer una paginacion en php

Solo un dato, el numero de páginas que se muestran será erroneo siempre, porque no sabes cuantos registros hay en total para dividirlos entre el numero de items a mostrar para saber el numero exacto de páginas...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 18/05/2013, 14:58
Avatar de foxtier494  
Fecha de Ingreso: enero-2013
Mensajes: 10
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: como hacer una paginacion en php

Cita:
Iniciado por Nemutagk Ver Mensaje
Solo un dato, el numero de páginas que se muestran será erroneo siempre, porque no sabes cuantos registros hay en total para dividirlos entre el numero de items a mostrar para saber el numero exacto de páginas...

no entiendo el principio de tu pregunta, pero es una paginacion de cosultas extensas por decir este modelo es de tesis y hace una consulta de palabras claves con like y con la limitacion de 10 q le puse por defecto que se ve mas bonito ^^ solo muestra los 10 despues envio un get que se llama pag lo * por 10 es que el limite y como resultado de el query me muestra los 20 siguientes todo esta en la consulta query el resto son condiciones
  #5 (permalink)  
Antiguo 18/05/2013, 16:45
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: como hacer una paginacion en php

Bueno, para comenzar no es una pregunta, el punto es que el for() generará páginas infinitamente según vayas avanzando, sin importar si hay aun registros para mostrar o no ya que pones ($pag + 1) por lo cual si pones ?pag=100 tu for() generará del 0 al 101 aun cuando solo podrían existir 10 paginas con registros reales....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 25/05/2013, 10:57
Avatar de foxtier494  
Fecha de Ingreso: enero-2013
Mensajes: 10
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: como hacer una paginacion en php

Cita:
Iniciado por Nemutagk Ver Mensaje
Bueno, para comenzar no es una pregunta, el punto es que el for() generará páginas infinitamente según vayas avanzando, sin importar si hay aun registros para mostrar o no ya que pones ($pag + 1) por lo cual si pones ?pag=100 tu for() generará del 0 al 101 aun cuando solo podrían existir 10 paginas con registros reales....
a ok entidno si tienes razon si le colocas al for q genere 100 pues genera 100 aunque no allan registros pero asi como lo tengo mientras le de a siqueinte el genera la consulta gasta q no consiga mas registros es solo alterando el for q no serviria si porfavor tienes una forma mas efectiva de hacer te lo agradeceríamos mucho.
  #7 (permalink)  
Antiguo 25/05/2013, 12:00
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: como hacer una paginacion en php

Hay infinidad de códigos en este foro y en internet de como hacer una paginación real, porque con tu código van apareciendo paginas conforme se avanza, que tal si quiero ir directamente a la ultima o penúltima página? con tu código no se podría porque tu sistema nunca sabe realmente cuantas páginas se van a generar, lo que le hace falta a tu código es saber el numero exacto de registros a mostrar y luego eso dividir entre el numero de items a mostrar por página, así obtienes el numero total de páginas reales con items que mostrar por lo tanto puedes poner links para ir desde la primer página hasta la ultima...

Código PHP:
Ver original
  1. <?php
  2.  
  3. $pag = isset($_GET['pag']) ? $_GET['pag'] : 1;
  4.  
  5. $pdo = new PDO($driver,$user,$pass);
  6. $query = $pdo->prepare('SELECT COUNT(*) FROM mitabla');
  7. $query->execute();
  8.  
  9. $totalReg = $query->fetchColumn();
  10.  
  11. $itemsXPag = 5;
  12. $totalPag = ceil($totalReg / $itemsXPag);
  13. $itemsInicio = $itemsXPag * ($pag - 1);
  14.  
  15. $query = $pdo->prepare('SELECT * FROM mitabla LIMIT :inicio, :limite');
  16. $query->bindParam(':inicio',$itemsInicio);
  17. $query->bindParam(':limite',$itemsXPag);
  18. $query->execute();
  19.  
  20. $registros = $query->fetchAll();
  21.  
  22. //link anterior...
  23.  
  24. for($i=1; $i<=$totalPag; $i++) {
  25.      if ($pag == $i) {
  26.           echo '<strong>'.$i.'</strong>';
  27.      }else {
  28.           echo '<a href="'.$_SERVER['PHP_SELFT'].'?pag='.$i.'">'.$i.'</a>';
  29.      }
  30. }
  31.  
  32. //link siguiente...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: paginacion, paginacion-en-php
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:46.