Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/08/2011, 17:30
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Pregunta ¿Delimitar enlaces paginación? y ¿Registros repetidos infinitamente?

Buenas Noches!!

Tengo 2 problemillas...Os cuento...

Estoy creando un listado donde muestra los registros de unas tablas anidadas y su respectiva paginación.

El 1º problema es el siguiente:
He creado el código de la paginación, y funciona. Pero a la hora de poner el límite de enlaces de dicha paginación cometo algún error que desconozco ya que si me encuentro en la primera página los enlaces se limitan a 7 (Como indico en el código) pero si estoy en la página 2 o 3 o la que sea se le hace caso omiso a ese límite y se muestran todas la páginas...
Unas imágenes harán que comprendáis mejor mi problema:
------- 1 ------- En esta imagen estoy situado en la página 1 y muestra más o menos la páginación como yo quiero (Más adelante os explico lo del más o menos).


------- 2 ------- En esta segunda imagen se vé lo que se vería en cualquier otra página que no sea la 1, es decir la 2,3,4 ect...


El 2º Problema es el siguiente:
He hecho una consulta a la base de datos para que me muestre todos los registros que tengo.... el problema es que en la base de datos solo tengo 4 registros y esos mismos registros se me han repetido hasta crear las 752 páginas que veis en la segunda imagen de arriba, por lo tanto si en cada imagen he puesto un límite de 5 registros, 5*752= 3760 registros que me está mostrando, ¿alguien sabe porque se me repite de esta forma tan infinita?

**Lo del primer problema que decia "más o menos" es porque mi idea es que lo muestre de la siguiente forma: <<Anterior 1 2 3 4 5 6 7 ... 750 751 752 Siguiente>> y que si estoy en la página 7 sea así: <<Anterior 7 8 9 10 11 12 13 14 ... 750 751 752 Siguiente>> ** Pero esto por el momento no es importante solo es si se os ocurre alguna idea.

El código lo muestro aquí:
Código PHP:
<!-- Listado (Empieza) -->
<?
        
//AL PRINCIPIO COMPRUEBO SI HICIERON CLICK EN ALGUNA PÁGINA
        
if(isset($_GET['page']))
        {
            
$page$_GET['page'];
        }
        else
        {
        
//SI NO DIGO QUE ES LA PRIMERA PÁGINA
        
$page=1;
        }

        
//AQUÍ SE SELECCIONAN TODOS LOS DATOS DE LA TABLA
        
$consulta'SELECT profesionales.nombreempresa ,profesionales.provprof , profesionales.pobprof ,profesionales.descripciongym ,profesionales.descuento ,
                                    provincia.idprovincia ,provincia.provincia,
                                    poblacion.idpoblacion ,poblacion.poblacion                            
                             FROM actividades, instalaciones, provincia, poblacion, profesionales WHERE profesionales.provprof = provincia.idprovincia AND profesionales.pobprof = poblacion.idpoblacion 
                             ORDER BY fechaingreso ASC'
;
        
$datos=mysql_query($consulta,$conexion);

        
//MIRO CUANTOS DATOS FUERON DEVUELTOS
        
$num_rows=mysql_num_rows($datos);

        
//AQUÍ SE DECIDE CUANTOS RESULTADOS MOSTRAR POR PÁGINA , PONGO 5
        
$rows_per_page5;

        
//CALCULO LA ÚLTIMA PÁGINA
        
$lastpageceil($num_rows $rows_per_page);

        
//COMPRUEBO QUE EL VALOR DE LA PÁGINA SEA CORRECTO Y SI ES LA ULTIMA PÁGINA
        
$page=(int)$page;
        if(
$page $lastpage)
        {
            
$page$lastpage;
        }
        if(
$page 1)
        {
        
$page=1;
        }
        
//CREO LA SENTENCIA LIMIT PARA AÑADIR A LA CONSULTA QUE DEFINITIVA
        
$limit'SELECT profesionales.nombreempresa ,profesionales.provprof , profesionales.pobprof ,profesionales.descripciongym ,profesionales.descuento ,
                                    provincia.idprovincia ,provincia.provincia,
                                    poblacion.idpoblacion ,poblacion.poblacion                            
                             FROM actividades, instalaciones, provincia, poblacion, profesionales WHERE profesionales.provprof = provincia.idprovincia AND profesionales.pobprof = poblacion.idpoblacion 
                             ORDER BY fechaingreso ASC
                             LIMIT '
. ($page -1) * $rows_per_page ',' .$rows_per_page;

        
//REALIZO LA CONSULTA QUE VA A MOSTRAR LOS DATOS (ES LA ANTERIOR + EL $limit)
        
$consulta $limit;
        
$peliculas=mysql_query($consulta);

        if(!
$peliculas)
        {
        
//SI FALLA LA CONSULTA MUESTRO ERROR
             
die('Invalid query: ' mysql_error());
        }
        else
        {
          
//SI ES CORRECTA MUESTRO LOS DATOS
      
?>   
      <? 
        
while($registrolistado mysql_fetch_array($peliculas))
        {  
      
?>
       <!------- Div que repite por cada registro (Empieza) ---------->
        <div id="tablaslistado">
           <table class="generaltablist">
             <tr>
                   <th rowspan="4" scope="col"><img src="../../images/fotosprof/ejemplo.gif" width="100px" height="100px" style="padding-top:22px;" alt="ejemplo gimnasio" align="left" /></th>
                <th height="20" scope="col" align="left"><?php echo $registrolistado ["nombreempresa"?></th>
                <th scope="col">Descuento:</th>
              </tr>
              <tr>
                <td rowspan="2"><?php echo $registrolistado ["descripciongym"?></td>
                <th class="celdadescuento" width="70" height="70px"><?php echo $registrolistado ["descuento"?>%</th>
             </tr>
             <tr>
                <td rowspan="2" align="center"><a href="">+ info</a></td>
              </tr>
              <tr>
                <th align="left"><?php echo $registrolistado ["provincia"?> | <?php echo $registrolistado ["poblacion"?></th>
                 </tr>
           </table>
       </div>
       <div class="clear"></div>
       <!------- Div que repite por cada registro (Termina) ---------->
       <?  
       

       
?>
       
       <!------- Paginación (Empieza) ---------->   
       <?
        
//UNA VEZ QUE MUESTRO LOS DATOS TENGO QUE MOSTRAR EL BLOQUE DE PAGINACIÓN SIEMPRE Y CUANDO HAYA MÁS DE UNA PÁGINA
        
if($num_rows != 0)
        {
           
$nextpage$page +1;
           
$prevpage$page -1;
        
?>
         <ul id="pagination-digg">
        <?
        
//SI ES LA PRIMERA PÁGINA DESHABILITO EL BOTON DE ANTERIOR, MUESTRO EL 1 COMO ACTIVO Y MUESTRO EL RESTO DE PÁGINAS
         
if ($page == 1
        {
        
?>
              <li class="previous-off">&laquo; Anterior</li>
              <li class="active">1</li> 
            <?
            
 
            
for($i$page+1$i<= $lastpage $i++)
            {
            
?>
            <li><a href="index.php?page=<? echo $i;?>"><? echo $i;?></a></li>
         <? 
        
}
           
//Y SI LA ULTIMA PÁGINA ES MAYOR QUE LA ACTUAL MUESTRO EL BOTON SIGUIENTE O LO DESHABILITO
        
if($lastpage >$page )
        {
        
?>       
              <li class="next"><a href="?page=<? echo $nextpage;?>" >Siguiente &raquo;</a></li>
        <?
        
}
        else
        {
        
?>
              <li class="next-off">Siguiente &raquo;</li>
        <?  
        
}
         } 
        else 
        {
        
//EN CAMBIO SI NO ESTAMOS EN LA PÁGINA UNO HABILITO EL BOTON DE ANTERIOR Y MUESTRO LAS DEMÁS
        
?>
              <li class="previous"><a href="?page=<? echo $prevpage;?>"  >&laquo; Anterior</a></li>
        <?
          
for($i1$i<= $lastpage $i++)
        {
        
//COMPRUEBO SI ES LA PÁGINA ACTIVA O NO
        
if($page == $i)
        {
        
?>  
            <li class="active"><? echo $i;?></li>
        <?
        
}
        else
        {
        
?>  
            <li><a href="?page=<? echo $i;?>" ><? echo $i;?></a></li>
        <?
        
}
          }
        
//SI NO ES LA ÚLTIMA PÁGINA ACTIVO EL BOTON SIGUIENTE    
          
if($lastpage >$page )
        {
        
?> 
              <li class="next"><a href="?page=<? echo $nextpage;?>">Siguiente &raquo;</a></li>
        <?
          
}
        else
        {
        
?> 
            <li class="next-off">Siguiente &raquo;</li>
            
        <?
          
}
         }
        }
        }
        
?>
        </ul>
        </div>
      <!------- Paginación (Termina) ---------->
      </div>
    <!-- Listado (Termina) -->
Si necesitais más información para intentar ayudarme a resolver los problemas no dudeis en solicitarmela.

Muchas gracias de antemano porque se con certeza que me vais a ayudar (Y no es peloteo ehh es experiencia jeje )

Un saludo muy grande!!