Ver Mensaje Individual
  #13 (permalink)  
Antiguo 23/11/2011, 10:07
skip77
 
Fecha de Ingreso: noviembre-2011
Mensajes: 9
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Como paginar contenido de tabla ?

Cita:
Iniciado por miktrv Ver Mensaje
Bueno, puedes resignarte o intentar aprender, o que te lo haga alguien.

Un saludo!
tarde en responder, pork lo pense y no me resigne jaja.
Ahora tengo este problema :S.
Consegui este codigo buscando:

- Este para la tabla:

Código PHP:
CREATE TABLE IF NOT EXISTS `page_next_previus` (
`
idint(11NOT NULL auto_increment,
`
titlevarchar(250NOT NULL,
`
contenttext NOT NULL,
PRIMARY KEY  (`id`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=;


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'); 
-Este para el archivo:

Código PHP:
<?php
/*
* autor: Abraham Zenteno Sánchez
* mail:  [email protected]

* 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>';
?>
El codigo lo pude hacer andar sin problemas por suerte , el problema esta cuando toco la variable $rows_for_page, en ese codigo esta como defecto en 1.
Cuando la paso a dos por ejemplo, en la paginacion me muestra :

en la pagina 1, el contenido del registro 1 y 2
en la pagina 2, el contenido del registro 2 y 3
y el 4 nunca aparece.

Y si pongo un numero mas grande es peor el error XD.

Mi idea es que me quede en este caso(con 1 en la variable $rows_for_page):
en la pagina 1, el contenido del registro 1 y 2
en la pagina 2, el contenido del registro 3 y 4

Realmente no se cual es el error, que tendria que cambiar del codigo?

Desde ya muchas gracias !!!!

Última edición por skip77; 23/11/2011 a las 10:20