Foros del Web » Programando para Internet » PHP »

Como paginar contenido de tabla ?

Estas en el tema de Como paginar contenido de tabla ? en el foro de PHP en Foros del Web. Hola, tengo el siguiente problema , busque y busque codigos pero no puedo hacer lo que quiero . Con el codigo siguiente: Código HTML: <head> ...
  #1 (permalink)  
Antiguo 19/11/2011, 18:16
 
Fecha de Ingreso: noviembre-2011
Mensajes: 9
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta Como paginar contenido de tabla ?

Hola, tengo el siguiente problema , busque y busque codigos pero no puedo hacer lo que quiero .

Con el codigo siguiente:


Código HTML:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>

<body bgcolor="#000000">


<table cellpadding="0" cellspacing="0">
	<!-- MSTableType="layout" -->
	<tr>

		<td height="160" width="120" valign="top">	
		<a target="_blank" href="HIPERVINCULO" title="TITULO" >
		<img border="0"Español src="IMAGEN" width="120" height="160"></a></td>
		<td height="110" width="10" valign="top"><img border="0" src="IMAGEN_TRANSPARENTE_PARA_SEPARAR" width="10" height="110"></td>	


		<td height="160" width="120" valign="top">	
		<a target="_blank" href="HIPERVINCULO" title="TITULO" >
		<img border="0"Español src="IMAGEN" width="120" height="160"></a></td>
		<td height="110" width="10" valign="top"><img border="0" src="IMAGEN_TRANSPARENTE_PARA_SEPARAR" width="10" height="110"></td>	


		<td height="160" width="120" valign="top">	
		<a target="_blank" href="HIPERVINCULO" title="TITULO" >
		<img border="0"Español src="IMAGEN" width="120" height="160"></a></td>
		<td height="110" width="10" valign="top"><img border="0" src="IMAGEN_TRANSPARENTE_PARA_SEPARAR" width="10" height="110"></td>	


		<td height="160" width="120" valign="top">	
		<a target="_blank" href="HIPERVINCULO" title="TITULO" >
		<img border="0"Español src="IMAGEN" width="120" height="160"></a></td>
		<td height="110" width="10" valign="top"><img border="0" src="IMAGEN_TRANSPARENTE_PARA_SEPARAR" width="10" height="110"></td>	


		<td height="160" width="120" valign="top">	
		<a target="_blank" href="HIPERVINCULO" title="TITULO" >
		<img border="0"Español src="IMAGEN" width="120" height="160"></a></td>
		<td height="110" width="10" valign="top"><img border="0" src="IMAGEN_TRANSPARENTE_PARA_SEPARAR" width="10" height="110"></td>	


		<td height="160" width="120" valign="top">	
		<a target="_blank" href="HIPERVINCULO" title="TITULO" >
		<img border="0"Español src="IMAGEN" width="120" height="160"></a></td>
		<td height="110" width="10" valign="top"><img border="0" src="IMAGEN_TRANSPARENTE_PARA_SEPARAR" width="10" height="110"></td>	


		<td height="160" width="120" valign="top">	
		<a target="_blank" href="HIPERVINCULO" title="TITULO" >
		<img border="0"Español src="IMAGEN" width="120" height="160"></a></td>
		<td height="110" width="10" valign="top"><img border="0" src="IMAGEN_TRANSPARENTE_PARA_SEPARAR" width="10" height="110"></td>	


		<td height="160" width="120" valign="top">	
		<a target="_blank" href="HIPERVINCULO" title="TITULO" >
		<img border="0"Español src="IMAGEN" width="120" height="160"></a></td>
		<td height="110" width="10" valign="top"><img border="0" src="IMAGEN_TRANSPARENTE_PARA_SEPARAR" width="10" height="110"></td>	


		
	</tr>
</table>


</body>

Mi idea es que a partir de este fragmento del codigo anterior :

Código HTML:
	<td height="160" width="120" valign="top">	
		<a target="_blank" href="HIPERVINCULO" title="TITULO" >
		<img border="0"Español src="IMAGEN" width="120" height="160"></a></td>
		<td height="110" width="10" valign="top"><img border="0" src="IMAGEN_TRANSPARENTE_PARA_SEPARAR" width="10" height="110"></td> 
me lo tome como 1 elemento de la paginacion. O sea que tendria 8 elementos para paginar.

Me gustaria que por ejemplo la paginacion sea 2 elementos por pagina.
O sea que tendria 4 paginas en total completas.

Tambien armar el codigo pensando que agregare mas fragmentos como ese.

PD: Probe codigos y trate de adaptarlos para que me funcione para lo que quiero, pero no lo logro. Lo maximo que llegue con uno fue llegar a tener todo bien, salvo que me cargaba todas las imagenes en la primera pagina y yo quiero que carguen a medida que se hace la paginacion.

Espero que me puedan ayudar o me pudan dar indicios de como puedo seguir .

Saludos!
  #2 (permalink)  
Antiguo 19/11/2011, 19:01
Avatar de Antonio_España  
Fecha de Ingreso: mayo-2007
Mensajes: 58
Antigüedad: 16 años, 10 meses
Puntos: 4
Respuesta: Como paginar contenido de tabla ?

Lo que yo hago es mandar por $_POST la cantidad de datos mostrados, y en el bucle del query cuento las filas retornadas por la consulta, cuando las filas retornadas suman mas que las enviadas por $_POST es cuando permito la impresion de la pagina.

Código:
$resultados_mostrados = $_POST['boton'] ? $_POST['boton'] : 0;
$conteo_filas = 0;
$limite_por_pagina = 20;
$query = mysql_query ("consulta");

while ($a = mysql_fetch_array($query))
{
   if ($conteo>$resultados_mostrados) && ($mostrados<$limite_por_pagina)
   {
      echo "<table....";
      $mostrados++;
   }
   $conteo++;
}
<form....>
<input type="button" value="siguiente" name="boton_para_usuario" />
<input type="hidden" name="boton" value="<? echo $mostrados +  $resultados_mostrados ?>" />
</form>
Espero que te ayude :)
__________________
Aprendiz autodidacta
  #3 (permalink)  
Antiguo 20/11/2011, 08:29
 
Fecha de Ingreso: noviembre-2011
Mensajes: 9
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Como paginar contenido de tabla ?

Cita:
Iniciado por Antonio_España Ver Mensaje
Lo que yo hago es mandar por $_POST la cantidad de datos mostrados, y en el bucle del query cuento las filas retornadas por la consulta, cuando las filas retornadas suman mas que las enviadas por $_POST es cuando permito la impresion de la pagina.

Código:
$resultados_mostrados = $_POST['boton'] ? $_POST['boton'] : 0;
$conteo_filas = 0;
$limite_por_pagina = 20;
$query = mysql_query ("consulta");

while ($a = mysql_fetch_array($query))
{
   if ($conteo>$resultados_mostrados) && ($mostrados<$limite_por_pagina)
   {
      echo "<table....";
      $mostrados++;
   }
   $conteo++;
}
<form....>
<input type="button" value="siguiente" name="boton_para_usuario" />
<input type="hidden" name="boton" value="<? echo $mostrados +  $resultados_mostrados ?>" />
</form>
Espero que te ayude :)
Muchas gracias por responder Antonio_España , realmente no entiendo el codigo anterior que tiene cosas de sql , no se como adaptarlo para lo que quiero, donde pondria los fragmentos que yo cite antes? como escribo esos fragmentos en la base de datos?

Espero que me puedas ayudar :S

Y muchas gracias por responder!
  #4 (permalink)  
Antiguo 20/11/2011, 08:38
 
Fecha de Ingreso: octubre-2011
Mensajes: 27
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Como paginar contenido de tabla ?

Estimado, te recomiendo JQuery en ese caso, ya que no estas usando Bases de Datos, lo unico que haces es usar QuickPager

Código Javascript:
Ver original
  1. <script type="text/javascript" src="js/jquery.min.js"></script>
  2. <script type="text/javascript" src="js/quickpager.jquery.js"></script>
  3.  
  4. $(document).ready(function() {
  5.     $(".pageme tbody").quickPager( {
  6.         pageSize: 5,
  7.         currentPage: 1,
  8.         pagerLocation: "after"
  9.     });
  10. });
  11.  
  12. </script>

Código HTML:
Ver original
  1. <div class="pager"></div>
  2. <center><table border="0" width="400" cellpadding="3" cellspacing="3" class="pageme">
  3.     <tbody>
  4.         <tr>
  5.             <td>1</td>
  6.             <td>Virus check complete. All viruses functioning normally</td>
  7.             <td>Virus check complete. All viruses functioning normally</td>
  8.             <td>Virus check complete. All viruses functioning normally</td>
  9.         </tr>
  10.         <tr>
  11.             <td>2</td>
  12.             <td>Virus check complete. All viruses functioning normally</td>
  13.             <td>Virus check complete. All viruses functioning normally</td>
  14.             <td>Virus check complete. All viruses functioning normally</td>
  15.         </tr>
  16.         <tr>
  17.             <td>3</td>
  18.             <td>Virus check complete. All viruses functioning normally</td>
  19.             <td>Virus check complete. All viruses functioning normally</td>
  20.             <td>Virus check complete. All viruses functioning normally</td>
  21.         </tr>
  22.         <tr>
  23.             <td>4</td>
  24.             <td>Virus check complete. All viruses functioning normally</td>
  25.             <td>Virus check complete. All viruses functioning normally</td>
  26.             <td>Virus check complete. All viruses functioning normally</td>
  27.         </tr>
  28.         <tr>
  29.             <td>5</td>
  30.             <td>Virus check complete. All viruses functioning normally</td>
  31.             <td>Virus check complete. All viruses functioning normally</td>
  32.             <td>Virus check complete. All viruses functioning normally</td>
  33.         </tr>
  34.         <tr>
  35.             <td>6</td>
  36.             <td>Virus check complete. All viruses functioning normally</td>
  37.             <td>Virus check complete. All viruses functioning normally</td>
  38.             <td>Virus check complete. All viruses functioning normally</td>
  39.         </tr>
  40.         <tr>
  41.             <td>7</td>
  42.             <td>Virus check complete. All viruses functioning normally</td>
  43.             <td>Virus check complete. All viruses functioning normally</td>
  44.             <td>Virus check complete. All viruses functioning normally</td>
  45.         </tr>
  46.         <tr>
  47.             <td>8</td>
  48.             <td>Virus check complete. All viruses functioning normally</td>
  49.             <td>Virus check complete. All viruses functioning normally</td>
  50.             <td>Virus check complete. All viruses functioning normally</td>
  51.         </tr>
  52.         <tr>
  53.             <td>9</td>
  54.             <td>Virus check complete. All viruses functioning normally</td>
  55.             <td>Virus check complete. All viruses functioning normally</td>
  56.             <td>Virus check complete. All viruses functioning normally</td>
  57.         </tr>
  58.     </tbody>
  59.     <tfoot>
  60.     <tr>Tablas Dinamicas</tr>
  61.     </tfoot>
  62. </center>
  63. <div class="pager"></div>
  #5 (permalink)  
Antiguo 20/11/2011, 09:04
 
Fecha de Ingreso: noviembre-2011
Mensajes: 9
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Como paginar contenido de tabla ?

Cita:
Iniciado por Kurassier Ver Mensaje
Estimado, te recomiendo JQuery en ese caso, ya que no estas usando Bases de Datos, lo unico que haces es usar QuickPager

Código Javascript:
Ver original
  1. <script type="text/javascript" src="js/jquery.min.js"></script>
  2. <script type="text/javascript" src="js/quickpager.jquery.js"></script>
  3.  
  4. $(document).ready(function() {
  5.     $(".pageme tbody").quickPager( {
  6.         pageSize: 5,
  7.         currentPage: 1,
  8.         pagerLocation: "after"
  9.     });
  10. });
  11.  
  12. </script>

Código HTML:
Ver original
  1. <div class="pager"></div>
  2. <center><table border="0" width="400" cellpadding="3" cellspacing="3" class="pageme">
  3.     <tbody>
  4.         <tr>
  5.             <td>1</td>
  6.             <td>Virus check complete. All viruses functioning normally</td>
  7.             <td>Virus check complete. All viruses functioning normally</td>
  8.             <td>Virus check complete. All viruses functioning normally</td>
  9.         </tr>
  10.         <tr>
  11.             <td>2</td>
  12.             <td>Virus check complete. All viruses functioning normally</td>
  13.             <td>Virus check complete. All viruses functioning normally</td>
  14.             <td>Virus check complete. All viruses functioning normally</td>
  15.         </tr>
  16.         <tr>
  17.             <td>3</td>
  18.             <td>Virus check complete. All viruses functioning normally</td>
  19.             <td>Virus check complete. All viruses functioning normally</td>
  20.             <td>Virus check complete. All viruses functioning normally</td>
  21.         </tr>
  22.         <tr>
  23.             <td>4</td>
  24.             <td>Virus check complete. All viruses functioning normally</td>
  25.             <td>Virus check complete. All viruses functioning normally</td>
  26.             <td>Virus check complete. All viruses functioning normally</td>
  27.         </tr>
  28.         <tr>
  29.             <td>5</td>
  30.             <td>Virus check complete. All viruses functioning normally</td>
  31.             <td>Virus check complete. All viruses functioning normally</td>
  32.             <td>Virus check complete. All viruses functioning normally</td>
  33.         </tr>
  34.         <tr>
  35.             <td>6</td>
  36.             <td>Virus check complete. All viruses functioning normally</td>
  37.             <td>Virus check complete. All viruses functioning normally</td>
  38.             <td>Virus check complete. All viruses functioning normally</td>
  39.         </tr>
  40.         <tr>
  41.             <td>7</td>
  42.             <td>Virus check complete. All viruses functioning normally</td>
  43.             <td>Virus check complete. All viruses functioning normally</td>
  44.             <td>Virus check complete. All viruses functioning normally</td>
  45.         </tr>
  46.         <tr>
  47.             <td>8</td>
  48.             <td>Virus check complete. All viruses functioning normally</td>
  49.             <td>Virus check complete. All viruses functioning normally</td>
  50.             <td>Virus check complete. All viruses functioning normally</td>
  51.         </tr>
  52.         <tr>
  53.             <td>9</td>
  54.             <td>Virus check complete. All viruses functioning normally</td>
  55.             <td>Virus check complete. All viruses functioning normally</td>
  56.             <td>Virus check complete. All viruses functioning normally</td>
  57.         </tr>
  58.     </tbody>
  59.     <tfoot>
  60.     <tr>Tablas Dinamicas</tr>
  61.     </tfoot>
  62. </center>
  63. <div class="pager"></div>
gracias por responder !!!

probe con lo que decis, y tambien estuve probando otrso ejemplos mas, pero cargan todos en la primera pagina, yo necesitaria que carguen a medida que paso de paginas :S. Sino, si tengo 2500 fotos que repartir se me tilda la pagina :S.

Saludos!
  #6 (permalink)  
Antiguo 20/11/2011, 10:16
 
Fecha de Ingreso: octubre-2011
Mensajes: 27
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Como paginar contenido de tabla ?

Complicado,en especial de la forma que planteas el problema, si quieres hacer algo asi deberías aprender un poco de SQL, para hacer llamados dinámicos y paginados, como fue el ejemplo de Antonio_España, si generas el contenido de forma manual la que te mencioné es tu única opción.

Saludos!
  #7 (permalink)  
Antiguo 23/11/2011, 10:09
 
Fecha de Ingreso: noviembre-2011
Mensajes: 9
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Como paginar contenido de tabla ?

Cita:
Iniciado por Kurassier Ver Mensaje
Complicado,en especial de la forma que planteas el problema, si quieres hacer algo asi deberías aprender un poco de SQL, para hacer llamados dinámicos y paginados, como fue el ejemplo de Antonio_España, si generas el contenido de forma manual la que te mencioné es tu única opción.

Saludos!

tarde en responder, pork me mate buscando un codigo que pueda entender, jajja.
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:21
  #8 (permalink)  
Antiguo 29/11/2011, 21:22
 
Fecha de Ingreso: octubre-2011
Mensajes: 27
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Como paginar contenido de tabla ?

Te paso el que uso yo, es algo complicado explicar el por qué no funciona :D


paginador.php

Código PHP:
Ver original
  1. $RegistrosAMostrar=4;
  2.  
  3.  //estos valores los recibo por GET
  4.  if(isset($_GET['pag'])){
  5.   $RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
  6.   $PagAct=$_GET['pag'];
  7.   //caso contrario los iniciamos
  8.  }else{
  9.   $RegistrosAEmpezar=0;
  10.   $PagAct=1;
  11.  }
  12.  
  13.  $Resultado=mysql_query("SELECT * FROM librodevisitass ORDER BY id DESC LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$con);
  14.  echo "<table>";
  15.  while($MostrarFila=mysql_fetch_array($Resultado)){
  16.    echo "<tr><td><img src='imagenes/microfono.jpg'  width='30' height='30'> <b>" .$MostrarFila['nombre']. "</b> <a href='mailto:" .$MostrarFila['email']. "><img src='imagenes/icono-mail.jpg'/></a> escribio: </td></tr>";
  17.    echo "<tr><td>".$MostrarFila['mensaje']. "</td></tr>";
  18.    echo "<tr><td>&nbsp;<td></tr>";
  19.  }
  20.  echo "</table>";
  21.  
  22.  //******--------determinar las p�ginas---------******//
  23.  $NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM librodevisitass",$con));
  24.  $PagAnt=$PagAct-1;
  25.  $PagSig=$PagAct+1;
  26.  $PagUlt=$NroRegistros/$RegistrosAMostrar;
  27.  
  28.  //verificamos residuo para ver si llevar� decimales
  29.  $Res=$NroRegistros%$RegistrosAMostrar;
  30.  // si hay residuo usamos funcion floor para que me
  31.  // devuelva la parte entera, SIN REDONDEAR, y le sumamos
  32.  // una unidad para obtener la ultima pagina
  33.  if($Res>0) $PagUlt=floor($PagUlt)+1;
  34.  
  35.  //desplazamiento
  36. echo "<center><a href='#' onclick=\"Pagina('1')\">Primero</a> ";
  37. if($PagAct>1) echo "<a href='#' onclick=\"Pagina('$PagAnt')\">Anterior</a> ";
  38. echo "<strong>Pagina ".$PagAct." de ".$PagUlt."</strong>";
  39. if($PagAct<$PagUlt)  echo " <a href='#' onclick=\"Pagina('$PagSig')\">Siguiente</a> ";
  40. echo "<a href='#' onclick=\"Pagina('$PagUlt')\">Ultimo</a></center>";
  41.  
  42. ?>

index.php
Código PHP:
Ver original
  1. <div id="comentario" >
  2. <?php include("paginador.php")?>
  3. </div>


Obviamente a paginador le debes crear una required o include a tu bd de datos

Etiquetas: contenido, html, imagenes, paginar, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:15.