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
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 de apolinux
1