"se han encontrado 12 resultados distribuidos a lo largo de 4 paginas. se muestran los resultados del 1 al 3 de la pagina 1".
al hacer click en la pagina numero 2 (o tres o cualquiera) algo raro pasa porque no me muestra los siguientes tres resultados sino que muestra todos los productos de la base de datos de productos distribuidos en "x" paginas. es como si hiciera al hacer click en la pagina 2 una nueva consulta eliminando cualquier criterio de busqueda, es decir, no respeta el filtro aplicado.
el codigo es el siguiente (simplificare los filtros poniendo solo 2 para facilitar la comprension del problema).
Supongamos que en mi base de datos tengo 10 productos con la caracteristica de que estan en oferta.
El formulario de busqueda que tengo quedaria simplificado a esto:
Código PHP:
<form name="form" onReset="return Limpiar();" action=""procesarbuscador.php" ENCTYPE="multipart/form-data" METHOD="POST">
<!-- Nombre del Producto -->
<LABEL for=nombre>Nombre del Producto</LABEL><br>
<input type="text" class="caja" id="nombre" name="nombre"></input><br><br>
<!-- Oferta -->
<LABEL for=oferta>Producto en Oferta</LABEL><br>
<input type=radio value="Si" name=oferta class=text1>Si</input>
<input type=radio value="No" name=oferta class=text1>No</input>
<br><br>
<!-- final Producto en Oferta -->
<input type="submit" name="Submit" value="Buscar" class="caja">
<input type="reset" name="Reset" value="Limpiar" class="caja">
</form>
Código PHP:
//recibimos las variables enviadas por el formulario
$nombre=trim($_POST['nombre']);
$oferta=trim($_POST['oferta']);
$sql = " SELECT *
FROM productos
WHERE
";
$masUnElemento = 0;
//Para cada una de las cajas:
if(trim($nombre) == ""){
if($masUnElemento){$sql.=" AND ";}
$sql.=" nombreLIKE '%$nombre%' ";
$masUnElemento++;
}
if(trim($nombre) != ""){
if($masUnElemento){$sql.=" AND ";}
$sql.=" nombreLIKE '%$nombre%' ";
$masUnElemento++;
}
if(trim($oferta) == ""){
if($masUnElemento){$sql.=" AND ";}
$sql.=" ofertaLIKE '%$oferta%' ";
$masUnElemento++;
}
if(trim($oferta) != ""){
if($masUnElemento){$sql.=" AND ";}
$sql.=" ofertaLIKE '%$oferta%' ";
}
//armamos el phppagging de okram
include_once "../PHPPaging.lib.php";
$result = mysql_query($sql) or die (mysql_error());
$datos = mysql_num_rows($result);
$paging = new PHPPaging;
$paging->agregarConsulta($sql);
$paging->porPagina(2); //resultados por pagina. como en este caso hay 10
// resultados, serian 5 paginas
$paging->paginasAntes(2);
$paging->linkTitulo('Página %1$s: Ver registros del %2$s al %3$s (Total: %4$s)');
$paging->mostrarPrimera("--Primera");
$paging->mostrarUltima("Última--");
$paging->mostrarActual("<span class=\"navthis\">%d</span>");
$paging->mostrarAnterior("Anterior");
$paging->mostrarSiguiente("Siguiente");
$paging->linkClase('nav');
$paging->ejecutar();
if($datos<=0){
echo "No hay resultados coincidentes con tu búsqueda";
}
else
{
echo "Se ha(n) encontrado un total de ".$paging->numTotalRegistros()." Cliente(s) coincidentes con su búsqueda<br>";
echo "Usted se encuentra en la página ".$paging->numEstaPagina()." de un total de ".$paging->numTotalPaginas(). " página(s) <br>";
while($datos = $paging->fetchResultado()) {
echo "<table><tbody><tr>";
echo "<td class=fil>$datos[nombre]</td></tr></tbody></table>";
echo "<div align=center><br>Existen ".$paging->numTotalRegistros()." productos Registrados distribuidos en ".$paging->numTotalPaginas(). " páginas
<br>Mostrando ".$paging->numRegistrosMostrados()." producto(s), del ";
echo $paging->numPrimerRegistro()." al ".$paging->numUltimoRegistro();
echo " de un total de ".$paging->numTotalRegistros()." producto(s)
</div>";
echo "<div align=center><br><div class=\"navigation\">".$paging->fetchNavegacion()."</div></div>";
?>
alguna ayuda de por que hace esto? gracias a todos...