Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2015, 11:28
betty2002
 
Fecha de Ingreso: abril-2015
Mensajes: 3
Antigüedad: 9 años, 8 meses
Puntos: 0
Paginador.php + mysql en web modular con inputs select

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
  1. //**********Principio paginacion********************
  2. //crea un nuevo objeto de la clase imagenes, que es donde manejo las consultas sql.
  3. $obj = new Imagenes();
  4.  
  5. // Parametros a ser usados por el Paginador
  6. $cantImg = 8; //por página, esto se le pasa a la consulta como limite
  7.  
  8. if(isset($_GET['pagina'])?$_GET['pagina']:$pagina=0);
  9. $inicio = $cantImg * $pagina;
  10. $criterio = '';
  11.  
  12. //mantiene la opcion escogida en el combo  tipo si se escogio una opcion y se buscó
  13. if(isset($_POST['tipo'])?$_POST['tipo']:$tipo=0);
  14.  
  15. if (isset($_POST['tipo']) && $_POST['tipo'] != 0) {
  16.     $_SESSION['TIPO'] = $_POST['tipo'];
  17.     $criterio .= 'WHERE tipo = ' . $_POST['tipo'];
  18. }
  19.  
  20. //se recoge el resultado de la consulta con el filtro criterio y los limites inicio,cantImg
  21. $datos = $obj->getPropiedades($criterio, $inicio, $cantImg);
  22.  
  23. //se recoge el total de la consulta de arriba
  24. $total = $obj->TotalPropiedades($criterio);
  25. $cantPag = ceil($total / $cantImg);
  26. //*******************fin paginacion************************************
  27. ?>

en el mismo archivo el form
Código PHP:
Ver original
  1. <form action="?mod=rent" name="fenvia" method="post">
  2.             <input type="hidden" name="criterio" value="<?php echo $criterio ?>">                        
  3.                   Tipo vivienda:<br><select name="tipo" class="alquiler">
  4.                   <?php echo "<option value='0'selected=selected"; if($tipo == 0) echo " selected";echo ">Cualquiera</option>";
  5.                   echo "<option value='1'"; if($tipo == 1) echo " selected";  echo ">Apartamento</option>";
  6.                   echo "<option value='2'"; if($tipo == 2) echo " selected";  echo ">Casa</option>";?>
  7.                   </select>
  8.              
  9.                <input type="submit" name="buscar" value="Buscar" class="button">&nbsp;<input type="reset" class="button" value="Borrar">      
  10.           </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
  1. <?php
  2.     // Parametros a ser usados por el Paginador.
  3.     $cantidadRegistrosPorPagina = &$cantImg;
  4.     $cantidadEnlaces = 6; // Cantidad de enlaces que tendra el paginador.
  5.     $totalRegistros = &$total; 
  6.     $pagina = isset($_GET['pagina'])? $_GET['pagina'] : 0;
  7.    
  8.     // Comenzamos incluyendo el Paginador.
  9.     require_once 'Paginador.php';
  10.    
  11.     // Instanciamos la clase Paginador
  12.     $paginador          = new Paginador();
  13.  
  14.     // Configuramos cuanto registros por pagina que debe ser igual a el limit de la consulta mysql
  15.     $paginador->setCantidadRegistros($cantidadRegistrosPorPagina);
  16.     // Cantidad de enlaces del paginador sin contar los no numericos.
  17.     $paginador->setCantidadEnlaces($cantidadEnlaces);
  18.    
  19.     // Le marcamos cuales enlaces deseamos omitir.
  20.     $paginador->setOmitir(array('bloqueAnterior',
  21.                                 'bloqueSiguiente',
  22.                                 ));
  23.                                
  24.     //Cambiamos los textos por defecto para anterior y siguiente
  25.     $paginador->setTitulosVista('anterior', '< anterior');
  26.     $paginador->setTitulosVista('siguiente', 'siguiente >');   
  27.     $paginador->setTitulosVista('primero', '<< primera');
  28.     $paginador->setTitulosVista('ultimo', 'ultima >>');
  29.    
  30.     // Propagamos Variables
  31.    
  32.     $paginador->setMarcador('','');
  33.    
  34.     $paginador->setPropagar(array('mod'));                 
  35.    
  36.     // Agregamos estilos al Paginador
  37.     $paginador->setClass('primero',         'previous');
  38.     $paginador->setClass('anterior',        'previous');
  39.     $paginador->setClass('siguiente',       'next');
  40.     $paginador->setClass('ultimo',          'next');
  41.     $paginador->setClass('numero',          '<>');
  42.     $paginador->setClass('actual',          'active');
  43.    
  44.     // Y mandamos a paginar desde la pagina actual y le pasamos tambien el total
  45.     // de registros de la consulta mysql.
  46.     $datos = $paginador->paginar($pagina, $totalRegistros);
  47.    
  48.     // Preguntamos si retorno algo, si retorno paginamos. Nos retorna un arreglo
  49.     // que se puede usar para paginar del modo clasico. Si queremos paginar con
  50.     // el enlace ya confeccionado realizamos lo siguiente.
  51.     if ($datos) {
  52.         $enlaces = $paginador->getHtmlPaginacion('pagina', 'span');
  53.     ?>
  54.     <div class="meneame">
  55.     <span class="current">
  56.     <?php
  57.     echo "Resultados: ".$total."- P&aacute;gina ".($pagina+1)." de ".$cantPag;
  58.     ?>
  59.     </span>
  60.     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp
  61.     <?php
  62.         foreach ($enlaces as $enlace) {
  63.             echo $enlace . "\n";
  64.         }
  65.     ?>
  66.     </div>
  67.     <?php
  68.     }
  69.     ?>
  70.     <!-- 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.