Tengo un código de paginación que me funcionaba hasta que he modificado una parte del código (mostrar el nombre de los colores en vez del número) que no tiene nada que ver con la paginación.
Ahora lo que me hace es en la primera página mostrarme el enlace para ir a la siguiente (independientemente del número de productos a mostrar) y en las demás páginas me muestra el enlace para volver a la página anterior o pasar a la siguiente, aunque no tenga productos.
Os dejo el código porque yo no sé lo que falla ya que no he tocado nada de la paginación. Espero que me puedan ayudar porque me estoy volviendo loca.
Código PHP:
<?php
require_once("conexion.inc.php");
$conexion = mysql_connect($servidor, $usuario, $passwd);
$db = mysql_select_db($basedatos, $conexion);
if (!$conexion)
{
echo "Error al establecer la conexión con la base de datos: " . mysql_error();
exit();
}
if (!$db)
{
echo "Error seleccionando la base de datos: " . mysql_error();
exit();
}
$resultado = mysql_query("SELECT * FROM " . $_GET["categoria"], $conexion);
$num_total = mysql_fetch_row($resultado);
$num_filas = 5;
if (isset($_GET["desplazamiento"]))
$desplazamiento = $_GET["desplazamiento"];
else
$desplazamiento = 0;
$resultado = mysql_query("SELECT * FROM " . $_GET["categoria"] . " LIMIT $desplazamiento, $num_filas", $conexion);
?>
<html>
<body bgcolor="#F5F5F5" topmargin="10">
<table width="836" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="836" bgcolor="#FFFFFF">
<?php
echo "<TABLE BORDER='1'>\n";
echo "<TH width=160 height=20>Descripción</TH>\n";
echo "<TH width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TH width=160 height=20>Colores</TH>\n";
echo "<TH width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TH width=160 height=20>Codigo marcaje</TH>\n";
echo "<TH width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TH width=160 height=20>Colores máximos</TH>\n";
echo "<TH width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TH width=160 height=20>Imagen</TH>\n";
while ($fila = mysql_fetch_array($resultado))
{
echo "<TR ALIGN='center' VALING='top'>";
echo "<TD width=160 height=90><A HREF=\"producto.php?categoria=" . $_GET["categoria"] . "&referencia=" . $fila["referencia"] . "\">" . $fila["descripcion"] . "</A></TD>\n";
echo "<TD width=9 height=90 bgcolor=#F5F5F5></TH>\n";
$color = explode("-", $fila["colores"]);
$total_color = count ($color);
echo "<TD width=160 height=90>";
for ($i=0; $i<$total_color; $i++)
{
$nombres_color = mysql_query("SELECT color FROM colores WHERE codigo = $color[$i]", $conexion);
$nom_color = mysql_fetch_array($nombres_color);
echo ucfirst($nom_color["color"]) . "<br>\n";
}
echo "</TD>";
echo "<TD width=9 height=90 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=90>" . $fila["codigo_marcaje"] . "</TD>\n";
echo "<TD width=9 height=90 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=90>" . $fila["colores_maximos"] . "</TD>\n";
echo "<TD width=9 height=90 bgcolor=#F5F5F5></TH>\n";
if (file_exists("imagenes/" . $fila["referencia"] . "_" . $color[0] . ".jpg"))
{
echo "<TD width=160 height=90><A HREF=\"producto.php?categoria=" . $_GET["categoria"] . "&referencia=" . $fila["referencia"] . "\"><img src=\"imagenes/" . $fila["referencia"] . "_" . $color[0] . ".jpg\" width=90 height=90></A></TD>\n";
}
elseif (file_exists("imagenes/" . $fila["referencia"] . "_" . $color[0] . "A.jpg"))
{
echo "<TD width=160 height=90><A HREF=\"producto.php?categoria=" . $_GET["categoria"] . "&referencia=" . $fila["referencia"] . "\"><img src=\"imagenes/" . $fila["referencia"] . "_" . $color[0] . "A.jpg\" width=90 height=90></A></TD>\n";
}
else
{
echo "<TD width=160 height=90><A HREF=\"producto.php?categoria=" . $_GET["categoria"] . "&referencia=" . $fila["referencia"] . "\"><img src=\"imagenes/" . $fila["referencia"] . "_99.jpg\" width=90 height=90></A></TD>\n";
}
echo "</TR>\n";
}
echo "</TABLE>\n";
?>
</td>
</tr>
<tr>
<td>
<?php
$urlAnt = " ";
$urlPos = " ";
if ($desplazamiento > 0)
{
$prev = $desplazamiento - $num_filas;
$urlAnt = $_SERVER["PHP_SELF"] . "?categoria=" . $_GET["categoria"] . "&desplazamiento=$prev";
}
if ($num_total > ($desplazamiento + $num_filas))
{
$prox = $desplazamiento + $num_filas;
$urlPos = $_SERVER["PHP_SELF"] . "?categoria=" . $_GET["categoria"] . "&desplazamiento=$prox";
}
if (($urlAnt == " ") && ($urlPos == " "))
{
echo "<TABLE BORDER='1'>\n";
echo "<TR ALIGN='center' VALIGN='top'>";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height20></TH>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "</TR>\n";
echo "</TABLE>\n";
}
// Primero siempre me hace la condición del if que viene a continuación y después siempre me hace el else
elseif (($urlAnt == " ") && ($urlPos != " "))
{
echo "<TABLE BORDER='1'>\n";
echo "<TR ALIGN='center' VALIGN='top'>";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20><A HREF='$urlPos'>Próxima página</A></TD>\n";
echo "</TR>\n";
echo "</TABLE>\n";
}
elseif (($urlAnt != " ") && ($urlPos == " "))
{
echo "<TABLE BORDER='1'>\n";
echo "<TR ALIGN='center' VALIGN='top'>";
echo "<TD width=160 height=20><A HREF='$urlAnt'>Página anterior</A></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "</TR>\n";
echo "</TABLE>\n";
}
else
{
echo "<TABLE BORDER='1'>\n";
echo "<TR ALIGN='center' VALIGN='top'>";
echo "<TD width=160 height=20><A HREF='$urlAnt'>Página anterior</A></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20></TD>\n";
echo "<TD width=9 height=20 bgcolor=#F5F5F5></TH>\n";
echo "<TD width=160 height=20><A HREF='$urlPos'>Próxima página</A></TD>\n";
echo "</TR>\n";
echo "</TABLE>\n";
}
mysql_free_result($resultado);
mysql_close($conexion);
?>
</td>
</tr>
</table>
</body>
</html>