Paginación de resultados con tablas relacionadas

Hola buenas experto,
Tengo un pequeño problemilla con la paginación de resultados entre tablas relacionadas.
Listo unos resultados de una tabla producto que esta relacionada con otra tabla de categorías, las relaciono mediante una tercera que recoge las id´s de las dos tablas.
Para hacer pruebas he puesto en la paginación que me saque 1 registro por página puesto que no tengo muchos metidos y en el caso de listarme los productos de una de las categorías seleccionadas (esta categoría tiene 2 productos) me sale la paginación correctamente empezando desde el 1 y luego aparece siguiente, pero en cuanto le doy al botón de siguiente apare un error como este:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND filmbd_localizaciones.visible='1' ORDER BY filmbd_localizaciones.id DESC LIM' at line 2
Para que pueda entender mejor lo que estoy haciendo le pego el código de la consulta:
<ul id="listadoLoc">
<?
        // LISTO LAS LOCALIZACINOES DESTACADAS
                $host="localhost";
                $user="root";
                $pass="creattaB";
                $db="filmbd";
            $con=mysql_connect($host,$user,$pass);
            mysql_select_db($db,$con);
                    if (!isset($pg))
                    $pg = 0;
                    $cantidad = 1;
                    $inicial = $pg * $cantidad;
                $rsx=mysql_query("SELECT * FROM filmbd_localizaciones, filmbd_cat_local, filmbd_localizaciones_categorias WHERE filmbd_localizaciones.id=filmbd_cat_local.id AND
 filmbd_cat_local.categoria_id=filmbd_localizaciones_categorias.categoria_id AND filmbd_localizaciones_categorias.categoria_id=$categoria AND $tabla_localizaciones.visible='1' ORDER BY $tabla_localizaciones.id DESC LIMIT $inicial,$cantidad") or die(mysql_error());
                $quantx = mysql_num_rows($rsx);  
                $contar = "SELECT * FROM filmbd_localizaciones, filmbd_cat_local, filmbd_localizaciones_categorias WHERE filmbd_localizaciones.id=filmbd_cat_local.id AND
 filmbd_cat_local.categoria_id=filmbd_localizaciones_categorias.categoria_id AND filmbd_localizaciones_categorias.categoria_id=$categoria AND $tabla_localizaciones.visible='1' ORDER BY $tabla_localizaciones.id DESC";
                $contarok = mysql_db_query($db,$contar);
                $total_records = mysql_num_rows($contarok);
                $pages = intval($total_records / $cantidad);
                if  ($quantx <= 0) echo "<br>No hay Localizaciones para listar<br>";
                else {
                    $ix=-1;
                        while (($ix+1)< $quantx) {
                        $ix++;
                        $item_id = mysql_result($rsx,$ix,"id");
                        $item_nombre = mysql_result($rsx,$ix,"nombre_l" . $idioma_activo);                        
                        $item_imagenm = $localizaciones_upload . Mysql_result($rsx,$ix,"imagen1");
                        $item_imagen_thumb = $localizaciones_upload . "tb_" . Mysql_result($rsx,$ix,"imagen1");    
                        ?>
<li>                 
         <?php if($item_nombre != "") { ?>
        <a href="localizaciones-listado.php?id=<?=$item_id;?>"><img src="<?=$item_imagen_thumb;?>"/></a><a href="localizaciones-listado.php?id=<?=$item_id;?>" title="Acceder a la información" class="texto"><?=$item_nombre;?></a>    
         <? } ?>        
         </li>
<? } }
// ----------- Fin de Listar Productos de Categorias ---------------------                
?>
</ul>
<ul id="paginacion">
<?
if ($pg >= 1)
{
$url = $pg - 1;
echo "
<li><a href='localizaciones-listado.php?id=".$id."&pg=".$url."'>« Anterior</a></li>
";
}
else {
echo " ";
}
for ($i = 1; $i<$pages; $i++) {
if ($i == $pg) {
echo "
<li><a href='localizaciones-listado.php?id=".$id."&pg=".$url."' class='activo'>$i</a></li>
";
}
else {
echo "
<li><a href='localizaciones-listado.php?id=".$id."&pg=".$i."'>".$i."</a></li>
";
}
}
if ($pg < ($pages-1)) {
$url = $pg + 1;
echo "
<li><a href='localizaciones-listado.php?id=".$id."&pg=".$url."'>Siguiente »</a></li>
";
}
else {
echo " ";
}
    ?>  
</ul>
Espero pueda ayudarme puesto que se que la paginación funciona porque la tengo aplicada en otra página así que creo que tendrá que ver con la relación de las tablas.
ESpero sus noticias, un saludo
beatriz

1 Respuesta

Respuesta
1
Bueno de por si el código esta algo desordenado. Es posible que en la 1era consulta la variable $categoria tenga valor vacío yp or ende el error. Revisa eso
Hola de nuevo experto,
Gracias por contestar. Referente a tu sugerencia, informarle que la variable no esta vacía. Me recoge el valor de la categoría que selecciono correctamente.
He sacado en pantalla la sentencia sql y me recoge estos valores:
SELECT * FROM filmbd_localizaciones, filmbd_cat_local, filmbd_localizaciones_categorias WHERE filmbd_localizaciones.id=filmbd_cat_local.id AND filmbd_cat_local.categoria_id=filmbd_localizaciones_categorias.categoria_id AND filmbd_localizaciones_categorias.categoria_id=6 ORDER BY filmbd_localizaciones.id DESC LIMIT 0,1
No hay Localizaciones para listar mierda!
Necesito hacer esta condición debido a que tengo un listado de categorías que cuando pinchas en una de ellas se cargan las localizaciones.
EL caso es que cada categoría puede tener muchos registros por lo que necesito paginarlos.
No sé que puede ser, si se le ocurre otra sugerencia se lo agradecería mucho.
Espero sus noticias y de nuevo gracias por su ayuda.
Beatriz
Hola experto!
Ya lo solucionné. Con lo de la variable me dio la pista.
AL parecer en la parte donde sacas Anterior y siguiente y el numero de páginas hay que añadirle la variable $categoria para que pagine los resultados de esa categoría. Ese era el motivo por el que me daba error.
Gracias por su ayuda.
Beatriz

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas