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_page= 5;
//CALCULO LA ÚLTIMA PÁGINA
$lastpage= ceil($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">« 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 »</a></li>
<?
}
else
{
?>
<li class="next-off">Siguiente »</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;?>" >« Anterior</a></li>
<?
for($i= 1; $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 »</a></li>
<?
}
else
{
?>
<li class="next-off">Siguiente »</li>
<?
}
}
}
}
?>
</ul>
</div>
<!------- Paginación (Termina) ---------->
</div>
<!-- Listado (Termina) -->
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!!