Foros del Web » Programando para Internet » PHP »

Problema con paginacion PHP

Estas en el tema de Problema con paginacion PHP en el foro de PHP en Foros del Web. Hola a todos, implemente un sistema de paginacion por $_GET, funciona pero tengo que hacer doble click en el enlace, con un solo click cambia ...
  #1 (permalink)  
Antiguo 11/06/2012, 21:19
 
Fecha de Ingreso: diciembre-2010
Mensajes: 160
Antigüedad: 13 años, 4 meses
Puntos: 1
Problema con paginacion PHP

Hola a todos, implemente un sistema de paginacion por $_GET, funciona pero tengo que hacer doble click en el enlace, con un solo click cambia de paginacion pero no el contenido, al hacer otro click mas cambia el contenido. Realmente es algo raro.

Este es el codigo donde capturo el $_GET

Código PHP:
$pag = (int) mysql_real_escape_string($_GET['pag']);

        
//En que pagina estoy?
        
if(!empty($pag)){
            
$RegistrosAEmpezar=($pag-1)*$limit_posts;
            
$PagAct=$pag;
        }
        else{
            
$RegistrosAEmpezar=0;
            
$PagAct=1;
        }

    
$NroRegistros=3000;
    
$PagAnt=$PagAct-1;
    
$PagSig=$PagAct+1;
    
$PagUlt=$NroRegistros/$limit_posts;



    
//Consulta Posts Recientes
if (($data=$cache->get('posts_recent',8)) === FALSE || !empty($id))
        {

    
//Consulta de posts normales
    
$request=db_query("
        SELECT m.ID_MEMBER, m.ID_TOPIC, m.body, m.imgport, c.ID_CAT, subject, c.name, t.ID_BOARD, posterName, puntos, m.hiddenOption, posterTime, denuncias
        FROM {$db_prefix}messages as m, {$db_prefix}boards as c, {$db_prefix}topics as t
        WHERE c.ID_BOARD=m.ID_BOARD AND t.ID_TOPIC=m.ID_TOPIC AND t.isSticky = 0 {$cat_condition}
        AND c.ID_CAT != 12 " 
. (!empty($modSettings['recycle_enable']) && $modSettings['recycle_board'] > "
            AND c.ID_BOARD != $modSettings[recycle_board]" 
'') . "

        ORDER BY m.ID_TOPIC DESC
        LIMIT $RegistrosAEmpezar,$limit_posts"
__FILE____LINE__);

       while(
$posts mysql_fetch_array($request))
    {


            
$context['normal_posts'][] = array(
            
'ID_MEMBER' => $posts['ID_MEMBER'],
            
'id' => $posts['ID_TOPIC'],
            
'body' => $posts['body'],
            
'imgport' => $posts['imgport'],
            
'title' => $posts['subject'],
            
'category' => $posts['name'],
            
'id_category' => $posts['ID_BOARD'],
            
'user' => $posts['posterName'],
            
'date' => $posts['posterTime'],
            
'puntos' => $posts['puntos'],
            
'denuncias' => $posts['denuncias'],

        );
    }

     
mysql_free_result($request);

    if (empty(
$id))
    
$cache->set('posts_recent'$context['normal_posts']);

    }else{
    
$context['normal_posts'] = $data;
    } 
Y este es el code de paginacion que va en la lista de articulos.

Código PHP:
<div id="pg" class="floatR">';
$comienza=1;
$termina=$PagUlt;
$pag_string='';
$medio=4;
        if($PagUlt>2*$medio){
            $topesup=$PagUlt-$medio;
            $topeinf=$medio;
        if ($PagAct>$topeinf)
            $comienza=$PagAct-$medio;

        if($PagAct>$topesup){
            $termina=$PagUlt;
            $comienza=$PagUlt-2*$medio;}
        else
        if ($PagAct>$topeinf)
            $termina=$PagAct+$medio;
        else
            $termina=2*$medio;}

        $id = $_GET['
id'];
        if (empty($id))
        {

        if ($PagUlt>1){
            for ($i=$comienza;$i<=$termina;$i++){
                    if ($i!=$PagAct)
                    $pag_string.='
<a  class="numeronew" id="pag_$i" href="/pagina/'. $i.'/">'.$i.'</a>';
                    else
                        $pag_string .='
<a  href="/pagina/'. $i.'/" class="numero active">'.$i.'</a>';}
        }
               if($id == ''){
               if($PagAct>1) echo "<a id='
btn' class='numeronew' title='Atras' href='/index.php?pag=$PagAnt'>&lt; Atras</a>";
               echo $pag_string;
               if($PagAct<$PagUlt)  echo "<a id='
btn' class='numeronew' title='Siguiente' href='/index.php?pag=$PagSig'>Siguiente &gt;</a>";
               }else
               {
               if($PagAct>1) echo "<a id='
btn' class='numeronew' title='Atras' href='/index.php?pag=$PagAnt'>&lt; Atras</a>";
                echo $pag_string;
               if($PagAct<$PagUlt)  echo "<a id='
btn' class='numeronew' title='Siguiente' href='/index.php?pag=$PagSig'>Siguiente &gt;</a>";
              }

              }else{

              if ($PagUlt>1){
              for ($i=$comienza;$i<=$termina;$i++){
                    if ($i!=$PagAct)
                    $pag_string.="<a  class='
numeronew' id='pag_$i' href='/".$_GET['id']."/". $i."/'>".$i."</a>";
                    else
                        $pag_string .="<a  class='
numero active'>".$i."</a>";}
        }
              if($id == ''){
              if($PagAct>1) echo "<a id='
btn' class='numeronew' title='Atras' href='/index.php?pag=$PagAnt'>&lt; Atras</a>";
               echo $pag_string;
              if($PagAct<$PagUlt)  echo "<a id='
btn' class='numeronew' title='Siguiente' href='/index.php?pag=$PagSig'>Siguiente &gt;</a>";
              }else
              {
              if($PagAct>1) echo "<a id='
btn' class='numeronew' title='Atras' href='/index.php?pag=$PagAnt'>&lt; Atras</a>";
              echo $pag_string;
              if($PagAct<$PagUlt)  echo "<a id='
btn' class='numeronew' title='Siguiente' href='/index.php?pag=$PagSig'>Siguiente &gt;</a>";
              }

            }
echo'
</div>; 
Quisiera saber en que estoy fallando, funcionar funciona, pero como dije arriba tengo que hacer doble click para que muestre el contenido de la pagina seleccionada. Muchas Gracias!!
  #2 (permalink)  
Antiguo 12/06/2012, 06:51
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 10 meses
Puntos: 32
Respuesta: Problema con paginacion PHP

Tengo algunas preguntas primero.

1. Estas programando en MVC?
2. Que es $id?

Por lo que veo y se me tuviera que pensarlo con logica, diria que te esta quedando datos en alguna cache que manejas y supone que no hace falta irlos a buscar.

Saludos.
__________________
http://www.latinium.com.ar/
  #3 (permalink)  
Antiguo 12/06/2012, 06:54
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 10 meses
Puntos: 32
Respuesta: Problema con paginacion PHP

Tengo algunas preguntas primero.

1. Estas programando en MVC?
2. Que es $id?

Por lo que veo y se me tuviera que pensarlo con logica, diria que te esta quedando datos en alguna cache que manejas y supone que no hace falta irlos a buscar.

Saludos.
__________________
http://www.latinium.com.ar/
  #4 (permalink)  
Antiguo 12/06/2012, 07:56
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problema con paginacion PHP

Para comenzar eh de decir que tienes varios errores en tu código...
  • No puedes acceder directmente a una variable GET si no va a estar definda siempre, primero verifica si existe con isset...
  • No debes indicar el numero de registros manualmente, a menos que estes segura de que nunca cambiará, de lo contrario es necesario obtener el numero real de registros en la DB
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 13/06/2012, 13:20
 
Fecha de Ingreso: diciembre-2010
Mensajes: 160
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Problema con paginacion PHP

Cita:
Iniciado por elgoncho99 Ver Mensaje
Tengo algunas preguntas primero.

1. Estas programando en MVC?
2. Que es $id?

Por lo que veo y se me tuviera que pensarlo con logica, diria que te esta quedando datos en alguna cache que manejas y supone que no hace falta irlos a buscar.

Saludos.
$ID es la id de las categoria, Gracias por contestar.
  #6 (permalink)  
Antiguo 13/06/2012, 13:21
 
Fecha de Ingreso: diciembre-2010
Mensajes: 160
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Problema con paginacion PHP

Cita:
Iniciado por Nemutagk Ver Mensaje
Para comenzar eh de decir que tienes varios errores en tu código...
  • No puedes acceder directmente a una variable GET si no va a estar definda siempre, primero verifica si existe con isset...
  • No debes indicar el numero de registros manualmente, a menos que estes segura de que nunca cambiará, de lo contrario es necesario obtener el numero real de registros en la DB
Muchas gracias por contestar, cambiare eso.

Etiquetas: mysql, paginacion, registro
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 15:32.