Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Paginador php solo me muestra registros en 1ra pagina

Estas en el tema de Paginador php solo me muestra registros en 1ra pagina en el foro de PHP en Foros del Web. a la hora de mostrar los post con una determinada etiqueta... el paginador funciona en cuanto a la cantidad de registros a mostrar por pagina ...
  #1 (permalink)  
Antiguo 08/01/2016, 16:59
 
Fecha de Ingreso: diciembre-2015
Mensajes: 115
Antigüedad: 8 años, 4 meses
Puntos: 2
Sonrisa Paginador php solo me muestra registros en 1ra pagina

a la hora de mostrar los post con una determinada etiqueta... el paginador funciona en cuanto a la cantidad de registros a mostrar por pagina pero no a la hora de mostrar los mismos... es decir solo muestra los de la primera, de la segunda en adelante reconoce que hay mas registros pero no los muestra y de veras no le hallo el error :C a ver si alguien con mejor ojo me ayuda a encontrar el fallo

aca dejo el codigo:

<!-- PAGINADOR -->
Código PHP:
<?php
 
/*
      Place code to connect to your DB here.
   */
   
require("soporte/conexiondb.php"); // conectamos a la base de datos
$tag intval((quitar($_GET['tag'])));
   
$tbl_name="post";    //nombre de la tabla

   
$adjacents 2;
   
   
/* 
      Primero obtenemos el numero total de filas en la tabla. 
   */
   
$query "SELECT COUNT(*) as num FROM $tbl_name  WHERE etiquetas='$tag' ORDER BY id DESC";
   
$total_pages mysql_fetch_array(mysql_query($query));
   
$total_pages $total_pages['num'];
   
   
/* variables a utilizar para la consulta. */
   
$targetpage "etiquetas.php";  //nombre del archivo
   
$limit 1;                         //Cantidad limite de registros a mostrar por cada pagina
    
$page "http://localhost/blog/php/etiquetas.php?tag='".$tag."'";
   if(isset(
$_GET["page"])){
       
$page = (int)$_GET["page"];

      
$start = ($page 1) * $limit;         //primer item a mostrar
   
}else{
      
$start 0;                      //Si no hay registros existentes, empezar pagina en 0
   
}
   
   
/* Realizamos y obtenemos datos de la consulta. */
   
$sql mysql_query("SELECT * FROM $tbl_name WHERE etiquetas='$tag' ORDER BY id DESC LIMIT $start, $limit");
   
//$result = mysql_query($sql);
   
   /* Setup page vars for display. */
   
if ($page == 0$page 1;             //if no page var is given, default to 1.
   
$prev $page 1;                     //previous page is page - 1
   
$next $page 1;                     //next page is page + 1
   
$lastpage ceil($total_pages/$limit);    //lastpage is = total pages / items per page, rounded up.
   
$lpm1 $lastpage 1;                 //last page minus 1
   
   /* 
      Now we apply our rules and draw the pagination object. 
      We're actually saving the code to a variable in case we want to draw it more than once.
   */
   
$pagination "";
   if(
$lastpage 1)
   {  
      
$pagination .= "<div class=\"pagination\">";
      
//previous button
      
if ($page 1
         
$pagination.= "<a href=\"$targetpage?page=$prev\"> <span class=\"icon-reply\" alt=\"Atras\"> </span></a>";

      else
         
$pagination.= "<span class=\"icon-reply\" alt=\"Atras\"> </span>";
     
#            $pagination.= "<span class=\"disabled\">« previous</span>";    


      
      //pages  
      
if ($lastpage + ($adjacents 2))  //not enough pages to bother breaking it up
      
{  
         for (
$counter 1$counter <= $lastpage$counter++)
         {
            if (
$counter == $page)
               
$pagination.= "<span class=\"current\">$counter</span>";
            else
               
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";              
         }
      }
      elseif(
$lastpage + ($adjacents 2))  //enough pages to hide some
      
{
         
//close to beginning; only hide later pages
         
if($page + ($adjacents 2))    
         {
            for (
$counter 1$counter + ($adjacents 2); $counter++)
            {
               if (
$counter == $page)
                  
$pagination.= "<span class=\"current\">$counter</span>";
               else
                  
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";              
            }
            
$pagination.= "...";
            
$pagination.= "<a href=$targetpage?page=$lpm1>$lpm1</a>";
            
$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";      
         }
         
//in middle; hide some front and some back
         
elseif($lastpage - ($adjacents 2) > $page && $page > ($adjacents 2))
         {
            
$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
            
$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
            
$pagination.= "...";
            for (
$counter $page $adjacents$counter <= $page $adjacents$counter++)
            {
               if (
$counter == $page)
                        
$pagination.= "<span class=\"current\">$counter</span>";

               else
                  
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";              
            }
            
$pagination.= "...";
            
$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
            
$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";      
         }
         
//close to end; only hide early pages
         
else
         {
            
$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
            
$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
            
$pagination.= "...";
            for (
$counter $lastpage - (+ ($adjacents 2)); $counter <= $lastpage$counter++)
            {
               if (
$counter == $page)
                        
$pagination.= "<span class=\"current\">$counter</span>";

               else
                  
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";              
            }
         }
      }
      
      
//next button
      
if ($page $counter 1
         
$pagination.= "<a href=\"$targetpage?page=$next\"><span class=\"icon-forward\" alt=\"Siguiente\"></span></a>";
      else
         
$pagination.= "<span class=\"icon-forward\" alt=\"Siguiente\"></span>";
     
#            $pagination.= "<span class=\"disabled\">next »</span>";

      
$pagination.= "</div>\n";     
   }
?>

   <?php
//si no hay registros existentes, se le notifica al usuario
   
if ($total_pages == 0){
?>
<script type="text/javascript">
    alert("No se ha registrado ningún Post hasta el momento...");
</script>

<?php
//de lo contrario, se procede a mostrar los resultados.
} else {

while (
$row=mysql_fetch_array($sql)) {

?>
                     
<!-- Se muestra el POST-->       
<section id="articulo_seis">
<h1> <?php echo $row['titulo']; ?></h1>
<?php echo '<img src="'.$row['imagen'] .'">'?>
<article>
   <p>  
   <?php echo substr($row['contenido'], 0,380)."..."?> <a href="post.php?n=<?php echo $row['id']; ?>" class="more"> Leer más</a>
   </p> 
</article>
<h6> <?php echo "Por ".$row['autor']; ?> <?php echo "el ".$row['dia']."/".$row['mes']."/".$row['anio'] ." a las ".$row['hora']; ?> </h6>
</section>

                      
<?php
}
} echo 
$pagination;
?>
  #2 (permalink)  
Antiguo 08/01/2016, 19:08
 
Fecha de Ingreso: enero-2016
Mensajes: 71
Antigüedad: 8 años, 3 meses
Puntos: 14
Respuesta: Paginador php solo me muestra registros en 1ra pagina

Entiendo que en la segunda pagina no te muestra ni paginacion ni registros.

Veo que la variable $targetpage es la que usas en las paginaciones. Creo que le falta el $tag.

Lo estas definiendo en la variable $page pero despues lo sobreescribes con el numero de pagina.

Cual es la URL que tienes en la pagina 2? porque en la pagina 1 tienes el tag, cosa que te falta en las siguientes paginas verdad?

Código PHP:
   /* variables a utilizar para la consulta. */ 
    
$targetpage "etiquetas.php";  //nombre del archivo 
    
$limit 1;                         //Cantidad limite de registros a mostrar por cada pagina 
    
$page "http://localhost/blog/php/etiquetas.php?tag='".$tag."'"
Creo que este es tu problema ... no he leído todo el código porque es enorme pero primero prueba cambiando el valor de targetpage con el valor de page.

Compara la URL de la primera pagina (que funciona Ok) con la de la segunda pagina - encuentra una diferencia ahí. Creo que por ahí van los tiros.
  #3 (permalink)  
Antiguo 09/01/2016, 12:29
 
Fecha de Ingreso: diciembre-2015
Mensajes: 115
Antigüedad: 8 años, 4 meses
Puntos: 2
Sonrisa Respuesta: Paginador php solo me muestra registros en 1ra pagina

Cita:
Iniciado por x_atrix Ver Mensaje
Entiendo que en la segunda pagina no te muestra ni paginacion ni registros.

Veo que la variable $targetpage es la que usas en las paginaciones. Creo que le falta el $tag.

Lo estas definiendo en la variable $page pero despues lo sobreescribes con el numero de pagina.

Cual es la URL que tienes en la pagina 2? porque en la pagina 1 tienes el tag, cosa que te falta en las siguientes paginas verdad?

Código PHP:
   /* variables a utilizar para la consulta. */ 
    
$targetpage "etiquetas.php";  //nombre del archivo 
    
$limit 1;                         //Cantidad limite de registros a mostrar por cada pagina 
    
$page "http://localhost/blog/php/etiquetas.php?tag='".$tag."'"
Creo que este es tu problema ... no he leído todo el código porque es enorme pero primero prueba cambiando el valor de targetpage con el valor de page.

Compara la URL de la primera pagina (que funciona Ok) con la de la segunda pagina - encuentra una diferencia ahí. Creo que por ahí van los tiros.

y si tienes razon... acomode el target de esta forma "etiquetas.php?tag=$tag"y ahora si esta haciendo la paginacion correctamente pero en el navegador... es decir va bien de etiquetas.php?tag=5?page=2 a page=3, page=4 etc etc... el detalle está en que no esta haciendo la paginacion en los prev y next... cuando le doy click cambia en el navegador pero no en el paginador como tal sigue mostrando que actualmente estoy en la pagina 1 y por ende me muestra el registro de dicha pagina sin importar que el navegador me indique page=1, page=2 o cual sea el fallo es molesto
  #4 (permalink)  
Antiguo 09/01/2016, 23:11
 
Fecha de Ingreso: enero-2016
Mensajes: 71
Antigüedad: 8 años, 3 meses
Puntos: 14
Respuesta: Paginador php solo me muestra registros en 1ra pagina

Las URLs esta mal. Necesitas un '&' no un '?' para segundo y siguientes parametros.

Ejemplo: http://www.ejemplo.com/pagina.php?tag=$tag&pag=$pag

Un saludo,
  #5 (permalink)  
Antiguo 10/01/2016, 13:58
 
Fecha de Ingreso: diciembre-2015
Mensajes: 115
Antigüedad: 8 años, 4 meses
Puntos: 2
De acuerdo Respuesta: Paginador php solo me muestra registros en 1ra pagina

Cita:
Iniciado por x_atrix Ver Mensaje
Las URLs esta mal. Necesitas un '&' no un '?' para segundo y siguientes parametros.

Ejemplo: http://www.ejemplo.com/pagina.php?tag=$tag&pag=$pag

Un saludo,
diste en la tecla justo lo que necesitaba, full gracias. Solucionado

Etiquetas: mysql, paginador, web+general
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 19:20.