Buenas tardes y antes que nada, gracias a cualquier alma caritativa que quiera echarme una mano.
Llevo toda la semana luchando con una paginación y por mas que leo y releo foros y ejemplos soy incapaz de llevarla a cabo.
Decir que me funciona el paginador cuando no realizo ninguna busqueda, es decir con todos los resultados, muestra todo correctamente de pagina en pagina; pero al realizar la busqueda, me muestra correctamente los resultados de la primera pagina, pero no los de las sucesivas, y no guarda la opcion escogida en el select. He intentado sesiones, get y distintos ejemplos pero o lo hago mal o no se que pasa.
Se trata de una pagina de alquiler vacacional, y se busca por 5 combos en una base de datos con mysql:
Los mismos son: zona, tipo, precio semana,ocupantes, fecha entrada, fsalida
Para la ayuda solo puse un combo(tipo), porque empece a escribir tantas veces el script, que con que me salga con uno despues seguiria.
Mis scripts:
alquileres.php (equivale a ?mod=rent que se llama desde el index de mi web modular)
Código PHP:
Ver original//**********Principio paginacion********************
//crea un nuevo objeto de la clase imagenes, que es donde manejo las consultas sql.
$obj = new Imagenes();
// Parametros a ser usados por el Paginador
$cantImg = 8; //por página, esto se le pasa a la consulta como limite
if(isset($_GET['pagina'])?
$_GET['pagina']:$pagina=0); $inicio = $cantImg * $pagina;
$criterio = '';
//mantiene la opcion escogida en el combo tipo si se escogio una opcion y se buscó
if(isset($_POST['tipo'])?
$_POST['tipo']:$tipo=0);
if (isset($_POST['tipo']) && $_POST['tipo'] != 0) { $_SESSION['TIPO'] = $_POST['tipo'];
$criterio .= 'WHERE tipo = ' . $_POST['tipo'];
}
//se recoge el resultado de la consulta con el filtro criterio y los limites inicio,cantImg
$datos = $obj->getPropiedades($criterio, $inicio, $cantImg);
//se recoge el total de la consulta de arriba
$total = $obj->TotalPropiedades($criterio);
$cantPag = ceil($total / $cantImg); //*******************fin paginacion************************************
?>
en el mismo archivo el form
Código PHP:
Ver original<form action="?mod=rent" name="fenvia" method="post">
<input type="hidden" name="criterio" value="<?php echo $criterio ?>">
Tipo vivienda:<br><select name="tipo" class="alquiler">
<?php echo "<option value='0'selected=selected"; if($tipo == 0) echo " selected";echo ">Cualquiera</option>";
echo "<option value='1'"; if($tipo == 1) echo " selected"; echo ">Apartamento</option>";
echo "<option value='2'"; if($tipo == 2) echo " selected"; echo ">Casa</option>";?>
</select>
<input type="submit" name="buscar" value="Buscar" class="button"> <input type="reset" class="button" value="Borrar">
</form>
pagination.php
se incluye en el layout de mi web modulada si el modulo=rent
utilizo la clase Paginador.php
Código PHP:
Ver original<?php
// Parametros a ser usados por el Paginador.
$cantidadRegistrosPorPagina = &$cantImg;
$cantidadEnlaces = 6; // Cantidad de enlaces que tendra el paginador.
$totalRegistros = &$total;
$pagina = isset($_GET['pagina'])?
$_GET['pagina'] : 0;
// Comenzamos incluyendo el Paginador.
require_once 'Paginador.php';
// Instanciamos la clase Paginador
$paginador = new Paginador();
// Configuramos cuanto registros por pagina que debe ser igual a el limit de la consulta mysql
$paginador->setCantidadRegistros($cantidadRegistrosPorPagina);
// Cantidad de enlaces del paginador sin contar los no numericos.
$paginador->setCantidadEnlaces($cantidadEnlaces);
// Le marcamos cuales enlaces deseamos omitir.
$paginador->setOmitir(array('bloqueAnterior', 'bloqueSiguiente',
));
//Cambiamos los textos por defecto para anterior y siguiente
$paginador->setTitulosVista('anterior', '< anterior');
$paginador->setTitulosVista('siguiente', 'siguiente >');
$paginador->setTitulosVista('primero', '<< primera');
$paginador->setTitulosVista('ultimo', 'ultima >>');
// Propagamos Variables
$paginador->setMarcador('','');
$paginador->setPropagar(array('mod'));
// Agregamos estilos al Paginador
$paginador->setClass('primero', 'previous');
$paginador->setClass('anterior', 'previous');
$paginador->setClass('siguiente', 'next');
$paginador->setClass('ultimo', 'next');
$paginador->setClass('numero', '<>');
$paginador->setClass('actual', 'active');
// Y mandamos a paginar desde la pagina actual y le pasamos tambien el total
// de registros de la consulta mysql.
$datos = $paginador->paginar($pagina, $totalRegistros);
// Preguntamos si retorno algo, si retorno paginamos. Nos retorna un arreglo
// que se puede usar para paginar del modo clasico. Si queremos paginar con
// el enlace ya confeccionado realizamos lo siguiente.
if ($datos) {
$enlaces = $paginador->getHtmlPaginacion('pagina', 'span');
?>
<div class="meneame">
<span class="current">
<?php
echo "Resultados: ".$total."- Página ".($pagina+1)." de ".$cantPag;
?>
</span>
 
<?php
foreach ($enlaces as $enlace) {
echo $enlace . "\n";
}
?>
</div>
<?php
}
?>
<!-- viene de la pagina alquileres.php-->
Y esto es todo, me falta solo que cuando escojo una opcion en tipo, se mantenga al pasar de pagina y me muestre los resultados de dicha pagina.