Tengo un problemilla, estoy intentando paginar los resultados de una consulta a una DB, en principio deberia mostrar de 4 en 4 los productos ACTIVOS (activo = 1). Pero me falla, el problema esta en que si desactivo el rpoducto o lo borro me sigue apareciendo una página más como si este aun fuese operativo.
PARTE 1:
Código PHP:
<?
// COMIENZA SCRIPT DE PAGINACION
$cadavez = 4;
$pagina=$_GET["pagina"];
$pagina = @(int)$pagina;
if ($pagina < 1 OR !$pagina) {
$pagina = 1;
}
$id_scategoria=$_GET["id_scategoria"];
$id_seccion=$_GET["id_seccion"];
if (isset($id_seccion)){
//hay secciones
$sql = "SELECT count(id) as n_registros FROM productos_datos WHERE id_categoria = ".$id_scategoria." and id_seccion=".$id_seccion;
}else{
$sql = "SELECT count(id) as n_registros FROM productos_datos WHERE id_categoria =".$id_scategoria;
}
$result = mysql_query($sql);
$line = mysql_fetch_array($result);
$cuantos = $line['n_registros'];
$paginas = ceil($cuantos / $cadavez);
//////////////////////////////////////////
//Programo el retroceso de las categorias
if ($paginas > 0) {
if (($pagina > 1) AND ($id_seccion > 0)) {
$intermedias .= "<span class=\"pagtxt\"><a class=\"paginacion\" href=\"$PHP_SELF?id_scategoria=$id_scategoria&id_seccion=$id_seccion&pagina=" . ($pagina-1) . "\"><< Anterior</a>";
}else if (($pagina > 1) AND ($id_seccion < 1)){
$intermedias .= "<span class=\"pagtxt\"><a class=\"paginacion\" href=\"$PHP_SELF?id_scategoria=$id_scategoria&pagina=" . ($pagina-1) . "\"><< Anterior</a>";
}else{
$intermedias .= "<span class=\"pagtxt\">";
}
//Programo numeraciones
for ($n = 1; $n <= $paginas; $n++){
if ($n == $pagina){
$intermedias .= " [<b>$n</b>] ";
}else if ($id_seccion > 0){
$intermedias .= " [<a class=\"paginacion\" href=\"$PHP_SELF?id_scategoria=$id_scategoria&id_seccion=$id_seccion&pagina=$n\">$n</a>] ";
}else{
$intermedias .= " [<a class=\"paginacion\" href=\"$PHP_SELF?id_scategoria=$id_scategoria&pagina=$n\">$n</a>] ";
}
}
//Programo el aumento de las categorias
if (($paginas > 1) AND ($pagina < $paginas) AND ($id_seccion > 0)) {
$intermedias .= "<a class=\"paginacion\" href=\"$PHP_SELF?id_scategoria=$id_scategoria&id_seccion=$id_seccion&pagina=" . ($pagina+1) . "\">Siguiente >></a></span>";
}else if (($paginas > 1) AND ($pagina < $paginas) AND ($id_seccion < 1)){
$intermedias .= "<a class=\"paginacion\" href=\"$PHP_SELF?id_scategoria=$id_scategoria&pagina=" . ($pagina+1) . "\">Siguiente >></a></span>";
}else{
$intermedias .= "</span>";
}
}
///////////////////////////////////////////
$pagina = ($pagina - 1) * $cadavez;
// TERMINA SCRIPT DE PAGINACION
?>
Código PHP:
<?
if (isset($id_seccion)){
$sql = "SELECT p.id, p.id_fabricante, f.link,p.costo, p.nombre, p.desc_corta, p.precioanterior, p.tester, f.nombre as fabricante, p.stock FROM productos_datos as p , productos_fabr as f WHERE activo AND p.id_categoria = '$id_scategoria' and p.id_seccion= '$id_seccion' and p.id_fabricante = f.id ORDER BY nombre LIMIT $pagina, $cadavez";
}else{
$sql = "SELECT p.id, p.id_fabricante, f.link,p.costo, p.nombre, p.desc_corta, p.precioanterior, p.tester, f.nombre as fabricante, p.stock FROM productos_datos as p, productos_fabr as f WHERE activo AND p.id_categoria = '$id_scategoria' and p.id_fabricante = f.id ORDER BY nombre LIMIT $pagina, $cadavez";
}
$result = mysql_query($sql);
if($row = mysql_fetch_array($result)){
echo "<br><div align=\"center\">" . $intermedias . "</div><br>";
?>