Paginacion de resultados "tutorial"

Hola a todos ,, esn esta ocacion les enseñare a hacer un sistema de paginacion de resultados bastante facil ... Para esto nesesitaremos lo siguiente:
1.- Host con base de datos (SQL)
2.- Soporte para lenguaje PHP
3.- Datos de la base de datos (nombre,servidor,usuario,password)

--------------------------------------------------------------------------
Comenzemos =_=
--------------------------------------------------------------------------

1.- Primero procedemos a crear nuestras tablas en la base de datos, para esto seguimos los siguientes pasos:
- Acceder a php myadmin
- Dirigirmos a nuestra base de datos
- Click en SQL
- Pegar el codigo para crear nuestras tablas

-- phpMyAdmin SQL Dump
-- version 2.6.0-pl2
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 06-10-2005 a las 07:50:07
-- Versión del servidor: 4.0.15
-- Versión de PHP: 4.3.3
--
-- Base de datos: `noticias`
--

-- --------------------------------------------------------

--
-- 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`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;

--
-- Volcar la base de datos para la tabla `articulos`
--

INSERT INTO `articulos` VALUES (1, 'La inflación de setiembre fue de 1,2% por los alimentos y la ropa', 'Según el Ministerio de Economía, los aumentos se deben al crecimiento de la economía y el mayor consumo. De esta manera, el costo de vida acumula un incremento de 8,9% en lo que va del año.', '', '2005-10-04', 1);
INSERT INTO `articulos` VALUES (2, 'El Presidente acusó a los súper de querer desestabilizar la economía', 'Dijo que tratan de generar "una pequeña inflación, porque se quieren apropiar de la rentabilidad que tienen que compartir con el pueblo". Sostuvo que están "cartelizados" y les pidió que bajen los precios. ', '', '2005-10-04', 1);
INSERT INTO `articulos` VALUES (3, 'La inflación del año ya se acerca a un escalón del 11 por ciento', 'Es lo que indica la suba de los precios no afectados por la estacionalidad. El aumento de setiembre, sin embargo, encendió luces amarillas. ', '', '2005-10-05', 1);
INSERT INTO `articulos` VALUES (4, 'Embotelladoras: no hubo acuerdo y dictaron la conciliación obligatoria', 'Lo hizo anoche Trabajo y ahora habrá tres semanas de tregua. Los gremios acataron la medida, pero anunciaron que trabajarán a reglamento. Pedían un aumento de $ 800 y las empresas ofrecieron $ 300. ', '', '2005-10-06', 1);
INSERT INTO `articulos` VALUES (5, 'Ironías y juegos cruzados en el debate de candidatos porteños', 'Carrió, Macri y Bielsa se cruzaron por TV. Plantearon sus propuestas, pero los momentos más fuertes se dieron cuando se aliaron de a dos contra uno, de manera alternada. Los tres se consideraron ganadores. ', '', '2005-10-05', 1);
INSERT INTO `articulos` VALUES (6, 'El embajador francés calificó a Kirchner de "populista" y Cristina lo cruzó fuerte', '"El embajador de Francia debería tratar con respeto al pueblo argentino", le contestó. ', '', '2005-10-06', 1);
INSERT INTO `articulos` VALUES (7, 'Al final, Bush confirmó que vendrá para la Cumbre de las Américas', 'formaron que irá a Mar del Plata en una gira que incluirá a Brasil y Panamá', '', '2005-10-06', 0);
INSERT INTO `articulos` VALUES (8, 'Apenas después de las elecciones, saldrán a tomar US$ 500 millones', 'Será a través del Boden 2015. La plata se usará para pagar deudas que vencen hasta fin de año, incluidos más de US$ 1.000 millones al FMI. Un grupo de bancos colocará títulos en el exterior. ', '', '2005-10-07', 1);
INSERT INTO `articulos` VALUES (9, 'Sostienen que los campos están perdiendo su fertilidad', 'De los tres principales nutrientes que extraen las cosechas se repone sólo una pequeña parte.', '', '2005-10-08', 1);


2.- Un a vez teniendo nuestras tablas , lo que sigue es facil .... Teniendo ya definida la parte de la web donde deseamos mostrar los resultados de la paginacion procederemos a copiar y pegar el siguiente codigo en Dicha pagina... Claro cambiando nuestros datos de la base de datos (nombre,servidor,usuario,password) ... o podemos copiar el codigo y guardar e archivo con el nombre "Paginacion.php" y despues incluirlo en nuestra web mediante un include (esto es lo mas recomendable)...


<?

function conectar()
{
$base_de_datos = "NOMBRE_DE_BASE_DE_DATOS";
$db_usuario = "USUARIO";
$db_password = "PASSWORD";

if (!($link = mysql_connect("SERVIDOR", $db_usuario, $db_password)))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db($base_de_datos, $link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}

$db = conectar();


$registros = 5;

if (!$pagina) {
$inicio = 0;
$pagina = 1;
}
else {
$inicio = ($pagina - 1) * $registros;
}


?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Noticias</title>
<style>
body { font-family: arial; font-size:12px}
</style>
</head>

<body>
<?
$resultados = mysql_query("SELECT id FROM articulos WHERE visible = 1");
$total_registros = mysql_num_rows($resultados);
$resultados = mysql_query("SELECT * FROM articulos WHERE visible = 1 ORDER BY fecha DESC LIMIT $inicio, $registros");
$total_paginas = ceil($total_registros / $registros);

if($total_registros) {

while($articulo=mysql_fetch_array($resultados)) {

echo "".$articulo["titulo"]."
";
echo "<font color='#666666'>".$articulo["descripcion"]."</font>


";

}

} else {
echo "<font color='darkgray'>(sin resultados)</font>";
}

mysql_free_result($resultados);

if($total_registros) {

echo "<center>";

if(($pagina - 1) > 0) {
echo "< Anterior ";
}

for ($i=1; $i<=$total_paginas; $i++){
if ($pagina == $i)
echo "".$pagina." ";
else
echo "$i ";
}

if(($pagina + 1)<=$total_paginas) {
echo " Siguiente >";
}

echo "</center>";

}
?>
</body>
</html>
<? mysql_close($db);?>



---------------------------------
NOTA ---> El codigo esta listo para ejecutarse en la pagina llamada "paginacion.php" , si vas copiar el codigo en tu index, noticias, o cualquier otra pagina con distinto nombre ... Tienes que cambiar el nombre "paginacion.php" del codigo anterior por el nombre de tu pagina .... Recuerda que tiene que tener extencion .PHP
------------------------------------

Bien , pues con esto terminamos con nuestro sistema de paginacion ... lo unico que falta es crear un formulario para insertar nuestros registros o puedes hacerlo manualmante desde la base de datos ....

Esper que les sea de utilidad .... Dudas , sugerencias , comentarios??? kore69_10@hot...

-----------------

Hasta la proxima
:o

que buen aporte

pero por casualidad ¿podrias darnos un ejemplo de como funciona ?
He aqui un ejemplo del resultado final si siguen los pasos del tutorial que anteriormente les di ...

EJEMPLO

------------------

Espero les sea de su agrado ... el numero de articulos mostrados lo puedes configurar el el codigo ...
-----------------
No sabes como me va a ayudar esto. Es algo que ya había preguntado en el foro
y no me habían contestado.
Una pregunta, ¿hay forma de ponerlo por orden alfabético?
mmmm , pues de que se puede se puede , se tendrian que hacer algunas modificaciones al codigo (en lugar de mostrar los resultados por "id", tendriamos que cambiarlo por "nick" y al hacer la query debes darle la instrucción ORDER BY ....... pero ya depende de ustedes mejorarlo y adaptarlo a su gusto y nesesidades ,, recordemos que este es un tutorial para principantes ...

Prometo ponerles un ejemplo por orden alfabético

------------
suerte
Tania escribió:No sabes como me va a ayudar esto. Es algo que ya había preguntado en el foro
y no me habían contestado.
Una pregunta, ¿hay forma de ponerlo por orden alfabético?

para eso simplemente en el select la parte donde poner ORDER BY pon por ejemplo order by name o el campo que desees por el cual les ordene y seguido de un espacio ASC o DESC ascendente o descendente por defecto es ascendente si no pones nada
soy yo o se ah fijado alguien en que cuando se ponen abajo las paginas para que salga Anterior - 1 - 2 -..... siguiente solo esta con un echo en vez de con un href para que se pueda navegar????
mas que nada es por k no consigo hacerlo xd