Weblogs Código

RecorteX

73 usuarios y 244 recortes de código
Usuario

Contraseña
Crear cuenta
asp csharp css fechas Flash html imagenes java javascript linux mysql oracle php sql SQLServer url vbnet web xhtml xml
Top Usuarios
fjmp76 (43)
albin (31)
josuebasurto (31)
juanjo (30)
pedrocaro (9)
stanz (8)
AndiXTRM (7)
Joserra (7)
miiglesi (6)
aplyca (5)
Top Etiquetas
php (38)
vbnet (28)
javascript (26)
csharp (26)
html (25)
java (24)
sql (18)
xml (13)
mysql (13)
css (10)
xhtml (7)
Flash (7)
imagenes (7)
linux (6)
fechas (6)
asp (6)
oracle (5)
url (5)
web (5)
SQLServer (5)

Paginar resultados con PHP

Crearemos una función en PHP para paginar resultados de una consulta MySQL

Función:
 
<?php
function PAGINAR($_max,$_db,$_uri,$_sep,$_class) {
  // $_max obtiene el numero de filas a mostrar en cada pagina (default: 20)
  // $_db contiene la consulta SQL que genera el paginador (default: error)
  // $_uri contiene la URL de la pagina para propagarla (default: automatico)
  // $_sep contiene el/los caracter/es que separan cada numero de pagina, por default son espacios en blanco (opcional)
  // $_class contiene la clase personalizada para darle formato a los vinculos (opcional)
  if (empty($_max)) { $_max = 20; } else { $_max = $_max; }
  if (empty($_sep)) { $_sep = '&nbsp;&nbsp; '; } else { $_sep = $_sep; }
  if (empty($_class)) { $_class = 'paginator'; } else { $_class = $_class; }
  if (empty($_GET['p'])) { $_pag = 1; } else { $_pag = $_GET['p']; }
  if (empty($_db)) { echo 'Error critico. No se ha seteado la variable $_db para realizar la consulta SQL'; exit; } else { $_db = $_db; }
  $_query = @mysql_query($_db); $_total = @mysql_num_rows($_query); $_total = ceil($_total/$_max);
  if (!$_uri) { $_uri = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; } else { $_uri = $_uri; }
  if ($_total >= 2) {
    for ($_i = 1; $_i <= $_total ;$_i++) {
      if ($_pag) {
        if (($_i == $_pag) || (!$_GET[p] && $_i == 1)) { echo '<span class="'.$_class.'">['.$_i.']</span>'.$_sep }
        else { echo '<a href="'.$_uri.'&amp;p='.$_i.'" class="'.$_class.'"><span class="'.$_class.'">'.$_i.'</a>'.$_sep; }
      }
    }
    mysql_free_result($_query);
  }
}
?>
 
Modo de uso (explicado linea a linea):
 
<?php
// indicamos el valor maximo
$_paginador[max] = 20;
 
// obtenemos el valor minimo actual
if (empty($_GET['p']) || $_GET['p'] == 1) { $_paginador[min] = 0; } else { $_paginador[min] = ($_GET['p']-1) * $_paginador[max]; }
 
// realizamos la consulta
$_sql = mysql_query("SELECT * FROM `nombre_de_tabla` DESC LIMIT $_paginador[min],$_paginador[max]");
while ($_row = mysql_fetch_assoc($_sql)) {
  echo $_row['nombre_de_campo'];
}
 
// URL actual
$_paginador['url'] = 'index.php?mod=fotos';
 
// Consulta sin LIMIT para contar los registros totales.
$_paginador['db'] = 'SELECT * FROM `nombre_de_tabla`';
 
// indicamos el separador (opcional)
$_paginador['sep'] = '&nbsp;&nbsp;';
 
// indicamos la clase CSS (opcional)
$_paginador['class'] = 'blue';
 
// llamamos al paginador
PAGINAR($_paginador[max],$_paginador['db'],$_paginador['url'],$_paginador['sep'],$_paginador['class']);
 
?>
 
Comentario de w2mescal:
la funcion da error, supuestamente en la linea:

if (($_i == $_pag) || (!$_GET[p] && $_i == 1)) { echo '<span class="'.$_class.'">['.$_i.']</span>'.$_sep }

pero por lo q veo no hay tal error, alguien mas le pasa??
un saludete.
Comentario de w2mescal:
ok le falta el ; al final despues del $_sep ya sabeis el tipico ; q se nos pira a todos.
Comentario de xoneca:

En la primera parte, el “$_max = $_max”, “$_sep = $_sep” y “$_class = $_class” sobran (con su correspondiente “else {..}”.

Identifícate para dejar un comentario.
Proyecto: Juanjo Navarro, 2006 - Diseño: Albin