Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Paginación simple para tu web

Paginación facil para implementar en tu sitio web...


este es el archivo ejemplo:: paginar.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Indice</title>
<style type="text/css">
* { margin: 0; padding: 0; }
body { font: normal normal normal 11px/20px Verdana, Tahoma, Arial, Helvetica, sans-serif; color: #444; background: #fff; }
h1 { font: bold normal normal 13px/17px Verdana, Tahoma, Arial, Helvetica, sans-serif; color: #777; margin: 0 0 4px; clear: both; text-align: left; border-bottom: 1px solid #ddd; padding-bottom: 6px; }
h2 { font: normal normal normal 13px/17px "Lucida Sans Unicode", "Lucida Grande", "Trebuchet MS", Trebuchet, Arial, Helvetica, sans-serif; text-transform: uppercase; color: #0077b2; margin: 0 0 4px; clear: both; }
a { text-decoration: none; color: #0077b2; }
p { margin-bottom: 10px;}
ul { text-align: center; list-style: none; margin: 20px auto; height: 20px; overflow: hidden; }
li { width: 20px; height: 20px; text-align: center; background: #4ca0c9; color: #fff; font-weight: bold; display: block; float: left; margin-right: 6px; }
li a { width: 20px; height: 20px; line-height: 20px; display: block; background: #eaeaea; }
li a:hover { background: #0077b2; color: #fff; }
li.anterior, li.siguiente, li.anterior a, li.siguiente a { width: 100px; display: block; }
#contenedor { width: 600px; margin: 50px auto; }
</style>
</head>
<body>
<div id="contenedor">
<h1>Script para paginar en PHP</h1>
<?php
 
$bd = 'paginacion'; // nombre de tu base de datos
$usuario = 'root'; // usuario de la base de datos
$clave = 'web321'; // clave de la base de datos
$url = 'http://localhost/pruebas/paginacion-php/'; // URL raiz de tu archivo
$registros = 2; // Número de ítems por página.
 
function conectar() {
    global $bd, $usuario, $clave;
    if ( !( $link = mysql_connect('localhost', $usuario, $clave) ) ) {
        echo 'Error conectando a la base de datos.';
        exit();
    }
    if ( !mysql_select_db($bd, $link) ) {
        echo 'Error seleccionando la base de datos.';
        exit();
    }
    return $link;
}
 
function codif($in_str) {
    /* Función para convertir a utf-8 en caso necesario, por Guillermo Pérez (@mayid) */
    $cur_encoding = mb_detect_encoding($in_str);
    if( $cur_encoding == 'utf-8' && mb_check_encoding($in_str,'utf-8') )
        return $in_str;
    else
        return utf8_encode($in_str);
}
$db = conectar();
$pagina = isset($_GET['pagina']) ? $_GET['pagina'] : null;
$html = null;
$paginador = null;
if (!$pagina) { 
    $inicio = 0; 
    $pagina = 1; 
} else
    $inicio = ($pagina - 1) * $registros;
 
    $reg = mysql_query('SELECT id FROM articulos WHERE visible = 1');
    $total_registros = mysql_num_rows($reg); 
    $resultados = mysql_query('SELECT * FROM articulos WHERE visible = 1 ORDER BY fecha ASC LIMIT '. $inicio .' , '. $registros);   
    $total_paginas = ceil($total_registros / $registros);                   
    if($total_registros) {
        //Código del paginador
        $paginador .='
        <ul class="paginador">';
        if(($pagina - 1) >= 2)
            $paginador .='<li class="anterior"><a href="'. $url .'?pagina='. ($pagina - 1) .'">&laquo; Anterior</a></li>' . "\n";
        elseif(($pagina - 1) == 1)
            $paginador .='<li class="anterior"><a href="'. $url .'">&laquo; Anterior</a></li>' . "\n";
        for ($i = 1; $i <= $total_paginas; $i++) { 
            if ($i == $pagina)
                $paginador .='<li class="actual">'. $pagina .'</li>' . "\n"; 
            elseif($i == 1)
                $paginador .='<li><a href="'. $url .'" title="ir a la página 1">1</a></li>' . "\n";
            else
                $paginador .='<li><a href="'. $url .'?pagina='. $i .'" title="ir a la página '. $i .'">'. $i .'</a></li>' . "\n"; 
        }
        if( ($pagina + 1) <= $total_paginas )
            $paginador .='<li class="siguiente"><a href="'. $url .'?pagina='. ($pagina + 1) .'">Siguiente &raquo;</a></li>' . "\n";
        $paginador .='</ul>';
        // Fin paginador
        $html .= $paginador;
        while( $articulo = mysql_fetch_array($resultados) ) {
            $html .= '
            <h2>'.codif($articulo['titulo']).'</h2>
            <p class="contenido">'. codif($articulo['descripcion']) .'</p>';
        }
    } else
        $html .='
        <p class="sin-resultados">(No hay resultados para mostrar)</p>';
$html .= $paginador;
mysql_close($db);
echo $html;
?>
</div>
</body>
</html>
Base de datos ejemplo:: paginar.sql
-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 03-12-2010 a las 10:56:04
-- Versión del servidor: 5.1.36
-- Versión de PHP: 5.3.0
 
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
 
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
 
--
-- Base de datos: `pruebas_paginacion`
--
 
-- --------------------------------------------------------
 
--
-- Estructura de tabla para la tabla `articulos`
--
 
CREATE TABLE `articulos` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `titulo` VARCHAR(255) NOT NULL DEFAULT '',
  `descripcion` TEXT NOT NULL,
  `contenido` TEXT NOT NULL,
  `fecha` DATE NOT NULL DEFAULT '0000-00-00',
  `visible` TINYINT(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
 
--
-- Volcar la base de datos para la tabla `articulos`
--
 
INSERT INTO `articulos` (`id`, `titulo`, `descripcion`, `contenido`, `fecha`, `visible`) VALUES
(1, ' Abierta de nuevo la tienda de "estilo" WordPress', 'Ya puedes encargar tus accesorios favoritos con la marca WordPress en la tienda WordPress Swag. ¿Cuantas veces has querido hacer apología de tu CMS favorito y no has podido o te has tenido que buscar la vida en tiendas locales de personalización?, pues nada, se acabó, ya tenemos lista la nueva tienda oficial.', '', '2005-10-04', 1),
(2, 'Menciones de Twitter como comentarios', '¿Te quedaste huérfano con la muerte de Backtype connect?, ¿no quieres animarte con Disqus?, pues nada, puedes recuperar parte de la conversación que se va a las redes sociales con el plugin Twitter mentions as comments.', '', '2005-10-04', 1),
(3, 'Pronto WordPress para Windows Phone', '¿Os acordáis que hace poco nos anunciaron que WordPress estaría disponible para otras plataformas móviles?, si, cuando se anunció WordPress para Nokia.', '', '2005-10-05', 1),
(4, 'Qué es hotlinking y cómo protegerte', 'El hotlinking es quizás una de las prácticas más utilizadas y menos comprendidas por los bloggers. O sea, todos sabemos que "compartir es bueno", que "hay que enlazar" y todas esas cosas que hacen que la web sea hipertextual, hasta ahí de acuerdo.', '', '2005-10-06', 1),
(5, ' Rambo usa WordPress', 'De verdad, no es coña. Silvester Stallone, Rambo, usa en su sitio oficial WordPress, con el tema iA3, ofreciendo un sitio sencillo, casi minimalista pero efectivo en lo que respecta a navegación y SEO. Personalmente habría usado otro tipo de tema más orientado a sitios de noticias y fans pero al menos en el CMS no se ha equivocado.', '', '2005-10-05', 1),
(6, 'Karim Osman en WordCamp', 'Nunca es buena idea perderte una WordCamp  pero este año tenemos Automattic por partida doble. Repite Zé Fontainhas, al que no descarto que adoptemos en España en un futuro cercano (jeje), pero este año se nos suma nada menos que Karim Osman, "happiness enginer" de Automattic, que nos contará las interioridades de la empresa que hace posible cada día WordPress.com.', '', '2005-10-06', 1),
(7, 'Novedades de WordPress 3.1', 'Si ya te estás mordiendo las uñas por saber que nos traerá WordPress 3.1, y no quieres esperar a que nos lo cuente Zé Fontainhas en WordCamp, aquí tienes las más importantes novedades de esta versión que, si no cambia la programación, estará disponible  en su versión definitiva para finales de este año o principios de 2.011.', '', '2005-10-06', 0),
(8, ' WordPress y Tumblr', 'Seguro que no se te ha escapado el detalle de que WordPress está últimamente incorporando funcionalidades que hasta ahora distinguían a Tumblr.', '', '2005-10-07', 1),
(9, 'Descubre a quien le gustan tus entradas', 'Ya casi es monotema hablar de WordPress.com pero es que en Automattic están desbocados últimamente con novedades, y la de hoy es - aunque parezca poca cosa - muy importante.', '', '2005-10-08', 1);
Espero les sirva. atte. sergio
Editado
2
Puntos
1085
Visitas
11
Resp
Por sergioalex hace 69 meses
Desactivado Sitio web
Respuesta #1
buen aporte, se entiende bien la lógica de la paginación :P
1
Puntos
Por alber hace 69 meses
Administrador
Respuesta #2
muchas gracias por tu comentario pienso en subir mas cositas asi para nos ayudemos entre todos con nuestro proyectos. atte. sergio
1
Puntos
Por sergioalex hace 69 meses
Desactivado Sitio web
Respuesta #3
sergioalex dijo: muchas gracias por tu comentario pienso en subir mas cositas asi para nos ayudemos entre todos con nuestro proyectos. atte. sergio
yeahh!
0
Puntos
Por alber hace 69 meses
Administrador
Respuesta #4
alber dijo:
sergioalex dijo: muchas gracias por tu comentario pienso en subir mas cositas asi para nos ayudemos entre todos con nuestro proyectos. atte. sergio
yeahh!
gracias hay cosas que me salen facil de hacer, pero otras que no asi que dejo lo que sale facil y uds me ayudan con las que no puedo, asi nos hacemos mas facil la vida del programador..
0
Puntos
Por sergioalex hace 69 meses
Desactivado Sitio web
Respuesta #5
sergioalex dijo:
alber dijo:
sergioalex dijo: muchas gracias por tu comentario pienso en subir mas cositas asi para nos ayudemos entre todos con nuestro proyectos. atte. sergio
yeahh!
gracias hay cosas que me salen facil de hacer, pero otras que no asi que dejo lo que sale facil y uds me ayudan con las que no puedo, asi nos hacemos mas facil la vida del programador..
Esa es la idea, ojalá todos pensaran igual que tú XD

salu2
0
Puntos
Por alber hace 69 meses
Administrador
Respuesta #6
gracias de nuevo, mira que yo e trabajado en electrónica con personas que en forma muy literal no sabían leer y escribir, apenas y podían firmar, pero sabían tanto del campo de la electrónica que yo solo me dedica a a prender de ellos..

creo y asi entiendo que el hobre que estudia y sabe mucho de un tema en concreto y mira en menos a los demas, por que segun el no llega a su nivel de conociemiento, o no esta a su estatura academica. es un pobre tipo que desde hace mucho perdio el rumbo de lo que es saber vivir en un lugar como este, cito una palabras de un escritor, aclaro no son mias, y dice: EL HOMBRE ES UN ANGEL CON UNA SOLA ALA QUE NECESITA A OTRO PARA PODER VOLAR..


0
Puntos
Por sergioalex hace 69 meses
Desactivado Sitio web
Respuesta #7
yo estoy muy agradecido de lo que e aprendido con los curso de el maestro zeus, y admiro su calidad de maestro y siempre lo tendré en alta estima por que una persona que da de su conocimiento a otro para que ese otro pueda crecer se mere siempre un reconocimiento especial y un lugar en el corazón siempre.. por la herencia mas grande que un hombre puede dar a sus semejante, no es dinero, riquezas, SI NO EL CONOCIMIENTO. ya que lo demás aunque sea mucho se termina, pero el conocimiento es una riqueza perpetua.

asi que MUCHAS GRACIAS POR DEDICARSE A ESTO.....
0
Puntos
Por sergioalex hace 69 meses
Desactivado Sitio web
Respuesta #8
sergioalex dijo: yo estoy muy agradecido de lo que e aprendido con los curso de el maestro zeus, y admiro su calidad de maestro y siempre lo tendré en alta estima por que una persona que da de su conocimiento a otro para que ese otro pueda crecer se mere siempre un reconocimiento especial y un lugar en el corazón siempre.. por la herencia mas grande que un hombre puede dar a sus semejante, no es dinero, riquezas, SI NO EL CONOCIMIENTO. ya que lo demás aunque sea mucho se termina, pero el conocimiento es una riqueza perpetua.

asi que MUCHAS GRACIAS POR DEDICARSE A ESTO.....
touche :P
0
Puntos
Por alber hace 69 meses
Administrador
Respuesta #9
que es eso que significa touche :P

gracias
0
Puntos
Por sergioalex hace 69 meses
Desactivado Sitio web
Respuesta #10
sergioalex dijo: que es eso que significa touche :P

gracias
jaja significa "sin palabras" o "nada mas que decir" o "ya esta todo dicho".. en definitiva que estoy de acuerdo con tus palabras crack

salu2
0
Puntos
Por alber hace 69 meses
Administrador
Respuesta #11
hola crack! pásate a ver la paginación que he publicado a ver si te mola ;P https://datoweb.com/post/3068/paginacion-numeral-simple-en-php-aporte
0
Puntos
Por alber hace 69 meses
Administrador
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate