Foros del Web » Programando para Internet » PHP »

Error con la paginación

Estas en el tema de Error con la paginación en el foro de PHP en Foros del Web. Hola amigs, estoy intentando paginar unos resultados de un foro siguiendo un manual que me encontre en Programación , el problema es que no funciona ...
  #1 (permalink)  
Antiguo 27/05/2008, 10:50
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Mensaje Error con la paginación

Hola amigs, estoy intentando paginar unos resultados de un foro siguiendo un manual que me encontre en Programación, el problema es que no funciona a la perfeccion.

Lo estoy probando en localhost y veran, tengo un maximo de 12 "usuarios" en la bd y en la paginacion tengo puesto que se muestren 10 resultados por pagina.
Pero no se muestran. CUando abro la pagina para ver los resultados, me muestra los 12 usuarios que tengo...

Miren, aqui el codigo

Código PHP:
<?php
$link 
mysql_connect("localhost""root","pass");
mysql_select_db("bd"$link);
$result mysql_query("SELECT autor, titulo, mensaje FROM foro"$link);
if (
mysql_num_rows($result)){
  echo 
"<table border = '1'> \n";
  echo 
"<tr><td>Autor</td><td>Titulo</td><td>Mensaje</td></tr> \n";
  while (
$row = @mysql_fetch_array($result)) {
    echo 
"<tr><td>".$row["autor"]."</td>";
        
"<td>".$row["titulo"].
      
"</td><td>".$row["mensaje"]."</td></tr> \n";
  }
  echo 
"</table> \n";
}
else
  echo 
"¡ No se ha encontrado ningún registro !";
  
  if (!isset(
$pag)) $pag 1// Por defecto, pagina 1
$result mysql_query("SELECT COUNT(*) FROM foro"$link);
list(
$total) = mysql_fetch_row($result);
$tampag 10;
$reg1 = ($pag-1) * $tampag;
$result mysql_query("SELECT autor, titulo, mensaje FROM foro  LIMIT $reg1, $tampag"$link);

/* Funcion paginar
 * actual:          Pagina actual
 * total:           Total de registros
 * por_pagina:      Registros por pagina
 * enlace:          Texto del enlace
 * Devuelve un texto que representa la paginacion
 */
function paginar($actual$total$por_pagina$enlace) {
  
$total_paginas ceil($total/$por_pagina);
  
$anterior $actual 1;
  
$posterior $actual 1;
  if (
$actual>1)
    
$texto "<a href=\"$enlace$anterior\">&laquo;</a> ";
  else
    
$texto "<b>&laquo;</b> ";
  for (
$i=1$i<$actual$i++)
    
$texto .= "<a href=\"$enlace$i\">$i</a> ";
  
$texto .= "<b>$actual</b> ";
  for (
$i=$actual+1$i<=$total_paginas$i++)
    
$texto .= "<a href=\"$enlace$i\">$i</a> ";
  if (
$actual<$total_paginas)
    
$texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
  else
    
$texto .= "<b>&raquo;</b>";
  return 
$texto;
}

echo 
paginar($pag$total$tampag"clientes.php?pag=");
?>
Y aqui una imagen de mi prueba:


Ven?, me muestran los 12 resultados y a su vez, me da la opcion de ir a la siguien pagina, para seguir mostrando resultados, pero no funciona. ¿¿Que falla???

Si eso, pruebenlo y verán.

Muchas gracias antetodo!!

PD: Se me olvidaba...porque no se muestra el titulo y el mensaje??
Gracias,
  #2 (permalink)  
Antiguo 27/05/2008, 11:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error con la paginación

Hola DeFFeR,

No se pagina ya que el código de paginación lo pusiste abajo de tu consulta. Para paginar debes primero averiguar el total de registros y posteriormente realizas la consulta ya limitando, es por eso que te arroja todos los resultados.

Saludos.
  #3 (permalink)  
Antiguo 27/05/2008, 12:03
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Respuesta: Error con la paginación

Gracias GatorV, mas o menos lo hice, pero no logre hacerlo funcionar.
Más o menos, miren:

Código PHP:
<html>
<body>
<?php
$link 
mysql_connect("localhost""root","pass");
mysql_select_db("bd"$link);
$result mysql_query("SELECT autor, titulo, mensaje FROM foro"$link);
  if (!isset(
$pag)) $pag 1// Por defecto, pagina 1
$result mysql_query("SELECT COUNT(*) FROM foro"$link);
list(
$total) = mysql_fetch_row($result);
$tampag 5;
$reg1 = ($pag-1) * $tampag;
$result mysql_query("SELECT autor, titulo, mensaje FROM foro  LIMIT $reg1, $tampag"$link);
if (
mysql_num_rows($result)){
  echo 
"<table border = '1'> \n";
  echo 
"<tr><td>Autor</td><td>Titulo</td><td>Mensaje</td></tr> \n";
  while (
$row = @mysql_fetch_array($result)) {
    echo 
"<tr><td>".$row["autor"]."</td>";
        
"<td>".$row["titulo"].
      
"</td><td>".$row["mensaje"]."</td></tr> \n";
  }
  echo 
"</table> \n";
}
else
  echo 
"¡ No se ha encontrado ningún registro !";


/* Funcion paginar
 * actual:          Pagina actual
 * total:           Total de registros
 * por_pagina:      Registros por pagina
 * enlace:          Texto del enlace
 * Devuelve un texto que representa la paginacion
 */
function paginar($actual$total$por_pagina$enlace) {
  
$total_paginas ceil($total/$por_pagina);
  
$anterior $actual 1;
  
$posterior $actual 1;
  if (
$actual>1)
    
$texto "<a href=\"$enlace$anterior\">&laquo;</a> ";
  else
    
$texto "<b>&laquo;</b> ";
  for (
$i=1$i<$actual$i++)
    
$texto .= "<a href=\"$enlace$i\">$i</a> ";
  
$texto .= "<b>$actual</b> ";
  for (
$i=$actual+1$i<=$total_paginas$i++)
    
$texto .= "<a href=\"$enlace$i\">$i</a> ";
  if (
$actual<$total_paginas)
    
$texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
  else
    
$texto .= "<b>&raquo;</b>";
  return 
$texto;
}

echo 
paginar($pag$total$tampag"clientes.php?pag=");
?>
</body>
</html>
Ahora si me muestra el total de registros por pagina. Esta vez en vez de 10 lo he cambiado a 5 y si, me muestra un total de 5. Pero el problema que eo ahora, es que si le doy a la siguiente pagina para que me siga mostrando resultados, no me los muestra, osea, me muestra los 5 primeros resultados que me muestra al principio, vamos como si no se actualizara.

¿Que sucede ahora??

Gracias de nuevo,
  #4 (permalink)  
Antiguo 27/05/2008, 12:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error con la paginación

Hola DeFFeR,

Pon esto arriba de esta linea:
Código PHP:
$pag $_GET['pag'];
if (!isset(
$pag)) $pag 1// Por defecto, pagina 1 
Saludos.
  #5 (permalink)  
Antiguo 27/05/2008, 13:50
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Respuesta: Error con la paginación

Hola de nuevo,

Bff mil gracias GatorV, gracias a tí logre hacer que funcionara la paginación

Muchas gracias
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 04:31.