Si el resultado de la consulta me dice que hay 18 productos, en la primer página me muestra los primeros 16 productos, pero al pasar a la siguiente página, en vez de mostrarme los 2 restantes, me aparecen 8
Ejemplifico:
Pagina 1
prod 1 - prod 2 - prod 3 - prod 4
prod 5 - prod 6 - prod 7 - prod 8
prod 9 - prod 10 - prod 11 - prod 12
prod 13 - prod 14 - prod 15 - prod 16
Pagina 2
prod 11 - prod 12 - prod 13 - prod 14
prod 15 - prod 16 - prod 17 - prod 18
La página 2 devuelve desde el resultado nro 11 para adelante.
Les muestro el código:
Código PHP:
// realizar esta función si se apretó el botón de enviar en el formulario de busqueda
if(isset($_GET['searchart']))
$select1 = $_GET['select1'];
{
$condiciones = "";
if ($select1 != "") $condiciones .= " AND categoria.id_categoria = $select1";
$res = mysql_query("SELECT * FROM producto, categoria, linea, articulo WHERE producto.cod_categoria = categoria.cod_categoria AND producto.cod_linea = linea.cod_linea AND producto.cod_articulo = articulo.cod_articulo $condiciones GROUP BY producto.cod_articulo ORDER BY producto.cod_linea");
$numeroRegistros = mysql_num_rows($res);
$tamPag=10;
$tamPag2=16;
//pagina actual si no esta definida y limites
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$pagina = $_GET["pagina"];
}
//calculo del limite inferior
$limitInf=($pagina-1)*$tamPag;
//calculo del numero de paginas
$numPags=ceil($numeroRegistros/$tamPag);
if(!isset($pagina))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$seccionActual=intval(($pagina-1)/$tamPag);
$inicio=($seccionActual*$tamPag)+1;
if($pagina<$numPags)
{
$final=$inicio+$tamPag-1;
}else{
$final=$numPags;
}
if ($final>$numPags){
$final=$numPags;
}
}
$res = mysql_query("SELECT * FROM producto, categoria, linea, articulo WHERE producto.cod_categoria = categoria.cod_categoria AND producto.cod_linea = linea.cod_linea AND producto.cod_articulo = articulo.cod_articulo $condiciones GROUP BY producto.cod_articulo ORDER BY producto.cod_linea LIMIT ".$limitInf.", ".$tamPag2.");
//muestro los resultados...
//Paginacion
if($pagina>1)
{
echo "<a class='txtPaginador11b' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&select1=".$select1."&searchart=buscar'>";
echo "<class='txtPaginador11b'><< ANTERIOR</font>";
echo "</a>*";
}
for($i=$inicio;$i<=$final;$i++)
{
if($i==$pagina)
{
echo "<class='txtPaginador11b'><b>".$i." </b>";
}else{
echo "<a class='txtPaginador11b' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&select1=".$select1."&searchart=buscar'>";
echo "<class='txtPaginador11b'>".$i."</a>*";
}
}
if($pagina<$numPags)
{
echo "*<a class='txtPaginador11b' href='" .$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&select1=".$select1."&searchart=buscar'>";
echo "<class='txtPaginador11b'>SIGUIENTE >></a>";
}
echo "<div id='total_paginador'><font face='verdana' size='-2'>Total: ".$numeroRegistros." resultados</div>";
mysql_close($conexion);
¿Puede ser que ahí esté el problema?
¿Por qué devuelve resultados duplicados si la base no los tiene?
¿Por qué me dice por ej. que hay 100 resultados y me muestra 130?
Muchas gracias, saludos y felices fiestas para todos.
Marx.