11 junio 2009

Paginacion Anterior Siguiente PHP MYSQL

Que tal ahora escribire un ejemplo de paginación del la forma ( Primero Anterior 2 de 4 Siguiente Ultimo), es muy útili este ejemplo para paginar imagenes, paginas que se yo, para ello el ejemplo estara basado en php y mysql,bueno aqui todo lo necesario para que tengas tu propia paginación saludos.

Primero crea una base de datos con la ayuda de tu phpMyAdmin, de nombre examphp, despues importa la tabla que abajo se muestra.

CREATE TABLE IF NOT EXISTS `page_next_previus` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(250) NOT NULL,
`content` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;


INSERT INTO `page_next_previus` (`id`, `title`, `content`) VALUES
(1, 'Titulo 1', 'ESTO ES UN EJEMPLO DEL CONTENIDO 1'),
(2, 'Titulo 2', 'ESTO ES UN EJEMPLO DEL CONTENIDO 2'),
(3, 'Titulo 3', 'ESTO ES UN EJEMPLO DEL CONTENIDO 3'),
(4, 'Titulo 4', 'ESTO ES UN EJEMPLO DEL CONTENIDO 4');


Ahora Aquí el archivo php (pag_next.php)

<?php
/*
* autor: Abraham Zenteno Sánchez
* mail: abzenteno@gmail.com

* page: http://abzenteno.blogspot.com
*/
$host = "localhost";
$user = "";
$passwd = "";
$database = "examphp";

//provando conexion con mysql
$db = mysql_connect($host,$user,$passwd);

//provando conexion con la base de datos
@mysql_select_db($database,$db);

$rows_for_page = 1; //numero de registros a mostra
$sql = "SELECT * FROM page_next_previus";
$result = mysql_query($sql, $db);
//total de registros existentes en la tabla
$total_records = @mysql_num_rows($result);

//total de paginas
$pages = ceil($total_records / $rows_for_page);

@mysql_free_result($result);

//si no existe por GET la var screen coloca por defecto el valor de 0
if (!isset($_GET['screen']))
$screen = 0;
//de lo contrario asigna el valor por get a $position
else
$position = (int)$_GET['screen'];

//comenzando el paginado
$start = $screen * $rows_per_page;
//consulta ala db por limites
$sql = "SELECT * FROM page_next_previus order by id ASC LIMIT ".$position.",".$rows_for_page;
//ejecuta el query
$result = mysql_query($sql, $db);
//resultados de la consulta (total)
$rows = @mysql_num_rows($result);

//imprime registros
for ($i = 0; $i < $rows; $i++) {
$title = mysql_result($result,$i,1);
$content = mysql_result($result,$i,2);
echo "<h1> $title </h1>
<br>
<p>$content</p><br>";
}
//comienza el paginado
echo '<p><hr></p>
<div style="width:100%; text-align:center;">';
//si posicion es mayor o igual a 1 quiere decir que muestre la parte Primero y Anterior de la paginación
if ($position >= 1) {
$url = "pag_next.php?screen=0";
echo "<a href=\"$url\">Primero</a>\n";
//para que el preius no termine con valor 0
$url = "pag_next.php?screen=" .($position-1);
echo "<a href=\"$url\">Anterior</a>\n";
}
//sirve para expandir el prollecto para poder paginar de la manera (Primero Anterior | 0 | 1 | 2 | 3 | Siguiente Ultimo)
/*for ($i = 0; $i < $pages; $i++) {
$url = "pag_next.php?screen=" . $i;
echo " | <a href=\"$url\">$i</a> | ";
}*/

//muestra total de resultados 1 de N
echo '<strong>'.($position+1).' de '.$pages.' </strong>';

//si position es menor a el valor entre los parentesis muestra la parte (Siguiente Ultimo)
if ($position < ($pages-1)) {
$url = "pag_next.php?screen=" . ($position+1);
echo "<a href=\"$url\">Siguiente</a>\n";
$url = "pag_next.php?screen=" . ($pages-1);
echo "<a href=\"$url\">Ultimo</a>\n";
}
echo '</div>';
?>
De tal manera aquí la imagen del ejemplo:

3 comentarios:

Angel dijo...

Gracias por el aporte!

solo destacar un error:

//consulta ala db por limites
$sql = "SELECT * FROM page_next_previus order by id ASC LIMIT ".$start.",".$rows_for_page;

diria que en lugar de position va start, como he puesto arriba.

Gracias!

[.-ryder-.] dijo...

pero tambien tiene otro error...

que si ponemos la pagina como index entonces saldra todo en blanco a menos que pongamos la direccion con 0 como valor de pagina en la navegacion...


Cual seria la modificacion? ya que no lo logro...

nkrc10 dijo...

Sos grande viejooooo...no sabes las veces que me he quedado en vela tratando de encontrar un paginador que me sirviera....el tuyo funciona de maravilla...solo tiene un errorcito que le corregi...esta aqui:

//si no existe por GET la var screen coloca por defecto el valor de 0
if (!isset($_GET['screen']))
$screen = 0;
//de lo contrario asigna el valor por get a $position
else
$position = (int)$_GET['screen'];


hay que cambiar el $screen por $position y ya esta. Si no se muestran los resultados al inicio.
Quedaria asi despues del cambio:

//si no existe por GET la var screen coloca por defecto el valor de 0
if (!isset($_GET['screen']))
$position = 0;
//de lo contrario asigna el valor por get a $position
else
$position = (int)$_GET['screen'];


Y listo, muchas gracias nuevamente :D

Excel 2013, convertir mes en texto a numero

Si tienes un mes en formato ENERO este lo cambiara a 02, funciona en la versión de Excel 2013, solo se tienen que reemplazar J2 por la celda...