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 $inicio = $cantImg * $pagina; $criterio = ''; //mantiene la opcion escogida en el combo tipo si se escogio una opcion y se buscó $_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); //*******************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; // 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. '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('',''); // 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.