Foros del Web » Programando para Internet » PHP »

Aporte: Paginacion con php

Estas en el tema de Aporte: Paginacion con php en el foro de PHP en Foros del Web. HOLA A TODOS LES DEJO UN CÓDIGO QUE MODIFIQUE PARA PAGINAR BASES DE DATOS Y SECCIONAR DE ACUERDO A INTERVALOS LOS RESULTADOS ME EXPLICO <<ANTERIOR ...
  #1 (permalink)  
Antiguo 07/04/2012, 13:00
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 21 años, 2 meses
Puntos: 16
Información Aporte: Paginacion con php

HOLA A TODOS LES DEJO UN CÓDIGO QUE MODIFIQUE PARA PAGINAR BASES DE DATOS Y SECCIONAR DE ACUERDO A INTERVALOS LOS RESULTADOS ME EXPLICO

<<ANTERIOR 1 ... 5 6 7 8 9 ... 14 SIGUIENTE >>

A INTERVALOS ME REFIERO QUE SOLO MUESTRE 2 NÚMEROS A LA IZQUIERDA Y DERECHA DEL QUE TENEMOS SELECCIONADO.

PUEDEN MODIFICAR LA VARIABLE $INTERVALO PARA AUMENTAR O REDUCIR DICHO NUMERO.

AQUI LES DEJO EL CODIGO PHP


CÓDIGO PHP:
Código PHP:
<?php
require("ConnectBD.inc.php");

$page=$_GET['page'];
if (!isset(
$page)){$page 0;}
$inicial $page $cantidad;
?>

<table border="0" cellpadding="0" cellspacing="3"><tr><td align="center">
<ul id="pagination">
<?php
    $sql 
"SELECT * FROM table ORDER BY id ASC LIMIT $inicial,$cantidad"
    
$consulta mysql_query($sql) or die(mysql_error());

    
$contar "SELECT * FROM table";   
    
$contarokmysql_query($contar) or die(mysql_error());  
    
$total_records mysql_num_rows($contarok);  
    
$total_pages ceil($total_records $cantidad);
    
$prev = ($page 1); 
$ultima = ($total_pages -1);
$next = ($page 1); 
$intervalo 2;

if(
$page == 0){
echo 
"<li class=\"previous-off\">«Anterior</li>"; }else{
 if (
$page >= ($intervalo 1)){
 echo 
"<li class=\"previous\"><a href=\"".$_SERVER['PHP_SELF']."?page=$prev\">«Anterior</a></li> <li><a href=\"".$_SERVER['PHP_SELF']."?page=0\">1</a></li> <li class=\"previous-off\">...</li> ";}else{
 echo 
"<li class=\"previous\"><a href=\"".$_SERVER['PHP_SELF']."?page=$prev\">«Anterior</a></li>";}
}

 
$min $page $intervalo;
 
$max $page $intervalo 1;
  if(
$min 0){ 
   
$max -= $min
   
$min 0
  } 
  if(
$max $total_pages){ 
   
$min -= ($max $total_pages); 
   
$max $total_pages
    if(
$min 0){ 
     
$min 0
    }  
  } 

 for(
$i=$min;$i<$max;$i++) { 
    
$p $i+1;
    if((
$page) == $i){
        echo 
"<li class=\"active\">$p</li>"; }else{
        echo 
"<li><a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$p</a></li>";}
 }

if(
$page $ultima){ 
 if (
$page < ($ultima $intervalo)){
 echo 
" <li class=\"next-off\">...</li> <li><a href=\"".$_SERVER['PHP_SELF']."?page=$total_pages\">$total_pages</a></li> <li class=\"next\"><a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Siguiente»</a></li>"; }else{
 echo 
"<li class=\"next\"><a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Siguiente»</a></li>";} 
}else{
echo 
"<li class=\"next-off\">Siguiente»</li>";
}
?></td></tr></table>


CÓDIGO CSS:
Código PHP:
ul   
 
font-familyArialVerdanaborder:0margin:0padding:0; }
#pagination li          
 
font-familyArialVerdanaborder:0margin:0padding:0font-size:11px; list-style:nonefloat:left; }
#pagination a          
 
font-familyArialVerdanaborder:solid 1px #9aafe5; margin-right:2px; }
#pagination .previous-off, #pagination .next-off  
 
font-familyArialVerdanaborder:solid 1px #DEDEDE; color:#888888; display:block; float:left; font-weight:bold; margin-right:2px; padding:3px 4px; }
#pagination .next a, #pagination .previous a
 
font-familyArialVerdanafont-weight:bold; }
#pagination .active    
 
font-familyArialVerdanabackground:#2e6ab1; color:#FFFFFF; font-weight:bold; display:block; float:left; padding:4px 6px; margin-right:2px; }
#pagination a:link, #pagination a:visited  
 
font-familyArialVerdanacolor:#0e509e; display:block; float:left; padding:3px 6px; text-decoration:none; }
#pagination a:hover    
 
font-familyArialVerdanaborder:solid 1px #0e509e; } 
ESPERO SIRVA PARA ALGUIEN CREO QUE ESTA BIEN EXPLICADO Y TRATE DE SIMPLIFICAR LO QUE MAS PUDE EL CODIGO.

NO OLVIDEN DARME UN BUEN KARMA SHAKRA Y TODAS ESAS COSAS !!!
__________________
Adios ...!!!!
  #2 (permalink)  
Antiguo 07/04/2012, 13:02
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 21 años, 2 meses
Puntos: 16
Respuesta: Aporte: Paginacion con php

Esto va en celebracion de mi mensaje numero 600 jajajajaaj
__________________
Adios ...!!!!
  #3 (permalink)  
Antiguo 07/04/2012, 13:26
Avatar de wsoul  
Fecha de Ingreso: octubre-2010
Mensajes: 190
Antigüedad: 14 años, 1 mes
Puntos: 13
Respuesta: Aporte: Paginacion con php

muchas gracias por el código amigo, esta bien ver gente con ganas de ayudar.

PD: te recomiendo usar para estas cosas la función is_numeric y/o intval en vez de isset

saludos!
__________________
Compra y Vender artículos en https://www.losredactores.com o una comunidad de webmasters ? https://webeamos.com
  #4 (permalink)  
Antiguo 07/04/2012, 14:00
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 1 mes
Puntos: 188
Respuesta: Aporte: Paginacion con php

muchas gracias por colaborar con el foro amigo :D

ME AGRADA ver a chicos con iniciativa

--------------------------
Sabes que me hubiera gustado que me recomendarán cuando yo me estaba iniciando. Crea una librería de tus códigos, documentalos con PHPDOC y guardalos ordenadamente, separados por categoría.

haha, si supieras cuando llegues a mayor te acuerdas de lo que alguna vez hiciste y quieres verlo pero el problema es que normalmente no lo guardaste en un lugar especifico si no que lo dejaste "por ahí" en algún lugar recóndito de tu(s) disco duro.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #5 (permalink)  
Antiguo 11/04/2012, 15:26
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 21 años, 2 meses
Puntos: 16
Exclamación Respuesta: Aporte: Paginacion con php

LO SIENTO, PRIMER ERROR, CREO QUE NO HAY MAS PERO ACA VA LA CORRECCION, DONDE DICE
\"".$_SERVER['PHP_SELF']."?page=$total_pages
DEBE DECIR
\"".$_SERVER['PHP_SELF']."?page=$ultima

Cita:
Iniciado por BLAH !! Ver Mensaje

....

CÓDIGO PHP:
<?php
require("ConnectBD.inc.php");

...

if($page < $ultima){
if ($page < ($ultima - $intervalo)){
echo " <li class=\"next-off\">...</li> <li><a href=\"".$_SERVER['PHP_SELF']."?page=$ultima\">$total_pages</a></li> <li class=\"next\"><a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Siguiente»</a></li>"; }else{
echo "<li class=\"next\"><a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Siguiente»</a></li>";}
}else{
echo "<li class=\"next-off\">Siguiente»</li>";
}
?></td></tr></table>

....
SALUDOS !
__________________
Adios ...!!!!
  #6 (permalink)  
Antiguo 25/04/2012, 07:33
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Aporte: Paginacion con php

Notice: Undefined variable: cantidad in C:\wamp\www\matricula_cdm2\prueba1.php on line 6

Notice: Undefined variable: cantidad in C:\wamp\www\matricula_cdm2\prueba1.php on line 12

Cita:
<?php
require("ConnectBD.inc.php");

$page=$_GET['page'];
if (!isset($page)){$page = 0;}
$inicial = $page * $cantidad;
?>
...
como definir $cantidad, si es cero
Warning: Division by zero in C:\wamp\www\matricula_cdm2\prueba1.php on line 19
si es valor uno no muestra los datos
  #7 (permalink)  
Antiguo 25/04/2012, 07:55
Avatar de CesarHC  
Fecha de Ingreso: junio-2011
Ubicación: localhost
Mensajes: 566
Antigüedad: 13 años, 5 meses
Puntos: 56
Respuesta: Aporte: Paginacion con php

Siempre es bueno que colaboren fijo le servira a alguien .
__________________
Solo la práctica no te traicionara ¡¡¡¡¡¡

Seguir el camino tu debes PHP The Right Way.
  #8 (permalink)  
Antiguo 25/04/2012, 09:03
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Aporte: Paginacion con php

entiendo que $cantidad es el numero de filas que aparecen puede ser 5 o 10 bien ai,
pero $consulta no veo que la nombres en ninguna otra parte intente reemplazarlo x $contarok
pero igual no muestra los datos
ayuda porf.
  #9 (permalink)  
Antiguo 25/04/2012, 10:34
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 21 años, 2 meses
Puntos: 16
Respuesta: Aporte: Paginacion con php

Cita:
Iniciado por donangelomix Ver Mensaje
entiendo que $cantidad es el numero de filas que aparecen puede ser 5 o 10 bien ai,
pero $consulta no veo que la nombres en ninguna otra parte intente reemplazarlo x $contarok
pero igual no muestra los datos
ayuda porf.
Exacto ... no lo nombre porque en mi caso $cantidad esta definida por un campo dentro de mi BD.... el cual el cliente puede redefinir con un formulario y UPDATE en la BD.

simplemente $cantidad es la "cantidad de filas" que se mostraran por pagina

define cantidad como

$cantidad = "12";
puedes poner el numero que quieras


Espero te sirva estoy atento a tus respuestas
__________________
Adios ...!!!!
  #10 (permalink)  
Antiguo 25/04/2012, 10:34
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 21 años, 2 meses
Puntos: 16
Respuesta: Aporte: Paginacion con php

PD : disculpa por no haber explicado con anterioridad aquello

.... ADEMAS :

ORDER BY id ... lo puedes reemplazar por
ORDER BY campo-de-tu-BD

en mi caso yo tengo un campo que es ID por eso defini ORDER BY id ....
__________________
Adios ...!!!!

Última edición por BLAH !!; 25/04/2012 a las 10:40
  #11 (permalink)  
Antiguo 30/04/2012, 18:07
 
Fecha de Ingreso: febrero-2012
Ubicación: Cusco
Mensajes: 13
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Aporte: Paginacion con php

gracias por tu aporte
  #12 (permalink)  
Antiguo 01/05/2012, 15:11
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años, 7 meses
Puntos: 97
Respuesta: Aporte: Paginacion con php

Hola blah.

Si quieres hacerlo aún mas profesional ten en cuenta...

1. filtros y orden de columnas marcadas por el usuario en la web: si quieres que tu código sirva para cualquier paginación (frontend y backend), tienes que montártelo de alguna manera. Yo tengo una clase $Sql con las propiedades select,from,where,having,order by...que serializo y guardo en una sesion, vinculada a la tabla/s a paginar.

2.peticiones AJAX. En una paginación, es muy útil poder refrescar solo TBODY, cuando se trata de una tabla.

Saludos y gracias por tu esfuerzo y ganas de compartir.

Etiquetas: intervalo, paginacion, php+basedatos, registros
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 5 personas




La zona horaria es GMT -6. Ahora son las 05:03.