PHP: ¿Cómo Paginar Registros de una base de datos?
De Foros del Web
Bueno aquí coloco un script que hize para manejar los registros y mostrarlos de forma ordenada una cantidad x de registros por paginas que usted le dara el valor necesario.
Quiero explicar como fue la estructura y como trabaja, para paginar registros es necesario saber: 1- cuántos registros se desean mostrar 2- cuántos registros mostrar por pagina 3- desde donde se mostrarán los registros(aqui me baso en saber si va a iniciar a mostrar en la pagina 2 del registro 5 hasta el 10 ya que la pagina 1 muestra del 1 al 5)
Con estos datos obtenidos y estructurados se obtienen los resultados deseados.
EL SCRIPT:
Código PHP:
<?php ######################################################## ## PAGINAR REGISTROS ## POR: Marco A. Castillo ## EMAIL: dellasera@gmail.com ######################################################## # Funcion para conectar a la base de datos function conectar($host,$user,$pass,$db){ $link = @mysql_connect($host,$user,$pass) or die("Error Conectando a la Base de datos"); @mysql_select_db($db,$link) or die("Error Seleccionando base de datos."); return $link; } $host = "localhost"; $user = "root"; $pass = ""; $db = "directorio"; # Se crea la variable $link que es para identificar la coneccion # a la base de datos $link = conectar($host,$user,$pass,$db); # aqui colocan la tabla que se utilizara para # extraer los registros y paginarlos $tabla = "licencias"; # aqui se extrae la cantidad de registros totales $rsC = mysql_query("Select count(*) from ".$tabla); $resultC = mysql_fetch_array($rsC); $count = $resultC[0]; # Aqui se pone la cantidad de registros por pagina # que se quieren mostrar $hasta = 2; if($pag==""){ $desde = 0; $pag = 1; } else{ $pag = $_GET["pag"]; $pagS = $pag - 1; $desde = $hasta * $pagS; } $rs = mysql_query("select * from ".$tabla." limit $desde,$hasta"); if($count!=0){ while($result=mysql_fetch_array($rs)){ # Aqui colocan su tabla html y sus datos a mostrar # solo se usa el array $result[""] y entre comillas # el nombre de la celda a mostrar. echo $result["licencia"]."<br>\n"; # fin del despliegue personalizado. } } else{ echo "No tenemos registros."; } mysql_close($link); # aqui se llama a la funcion que muestra los links por paginas # la variable $extra_variables es para anexar mas variables al url # si es necesario para los querys que hagan. # Solo se debe concatenar los datos nombre1=valor1&nombre2=value2 # NOTA: puede ubicar en cualquier parte de su codigo esta funcion # para que aparesca dentro de la celda que desee. # link totales es una variable al ser definida le dices a la funcion # cuantos links quieres que aparescan por pantalla ya que si tienes # 100 paginas no deberas ver los 100 links y solo muestres los necesarios $link_totales = 4; # se llama la funcion paginar # los links si tiene un css podran tomar la estructura y color que le pongas ## Inicia Paginador paginar($count,$hasta,$pag,$link_totales,$extra_variables); # Funcion paginar # Inicia function paginar($count,$hasta,$pag,$link_totales,$extra_variables){ if($link_totales==1)$link_totales=2; $links = $count / $hasta; $arriba = $link_totales - 2; $abajo = $pag - 1; if($abajo==0)$abajo = 1; $temp_r = $links - $pag; if($temp_r>=$arriba){ $link_break = $pag + $arriba; } else{ $link_break = $links; $abajo = $pag + 1 - $arriba; if($pag==$links-1)$abajo = $pag - $arriba; if($pag==$links)$abajo = $pag - 1 - $arriba; } if($pag==1)$link_break = $link_totales; if($abajo==0)$abajo=1; if(strlen($extra_variables)!=0) $extra_variables = "&".$extra_variables; if($pag==1){ $anterior = 1; } else{ $anterior = $pag - 1; } if($pag!=1){ echo "<a href=".$_SERVER['PHP_SELF']."?pag=".$anterior.$extra_variables."><< Anterior | </a>"; } for($i=$abajo;$i<=$links;$i++){ if($link_break<$i){ break; } else{ if($pag==$i){ echo $i." | "; } else{ echo "<a href='".$_SERVER['PHP_SELF']."?pag=".$i.$extra_variables."'>"; echo $i; echo " | </a>"; } } } if($pag==$links){ $siguiente = $links; } else{ $siguiente = $pag + 1; } if($pag!=$links){ echo "<a href=".$_SERVER['PHP_SELF']."?pag=".$siguiente.$extra_variables.">Siguiente >></a>"; } } ?>
Es importante saber que en esta parte del codigo:
Código PHP:
while($result=mysql_fetch_array($rs)){ # Aqui colocan su tabla html y sus datos a mostrar # solo se usa el array $result[""] y entre comillas # el nombre de la celda a mostrar. echo $result["licencia"]."<br>\n"; # fin del despliegue personalizado. }
dentro del while se coloca el html que usted estructuren para mostrar las noticias bien elegantes a los usuarios y si quien mostrar el titulo en una parte del html solo deben poner en la parte html donde parecera el titulo esta variable: $result["titulo"] tomando en cuenta que titulo se llama su campo.
NOTA: vean que aparece esta linea asi:
Código HTML:
# se llama la funcion paginar # los links si tiene un css podran tomar la estructura y color que le pongas paginar($count,$hasta,$pag,$link_totales,$extra_va riables); # Funcion paginar function paginar($count,$hasta,$pag,$link_totales,$extra_va riables){
no sé por qué aparece asi ya que no lo escribi así pero solo deben cambiar el nombre de la variable $extra_va riables que esta separada y ponerla así sólo en estas lineas: $extra_variables
--Dwaks 06 May 2005
Este artículo es parte de las FAQs de PHP y el Manual de PHP.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
