Ver Mensaje Individual
  #6 (permalink)  
Antiguo 13/12/2011, 04:04
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Respuesta: Query de Pagina de busqueda

Los otros criterios no deben dejar de funcionar... con lo que me dices no puedo decir nada mas.

Si pasas los valores posibles de edad separados por comas tiene que retornar TODOS los registros con valor edad en (IN) la lista de valores que le pases. En otras palabras todos los registros cuyo valor edad sea igual a uno de los de la lista. Manual

Esto

Cita:
<?php foreach (range(18,20) as $numero) echo "$numero,"?>
genera una lista con el siguiente formato

18,19,20,

esa coma del final te puede estar dando problemas....

Una alternativa si estas trabajando con un rango de edades (es decir sabes la edad minima y la maxima) es

...AND EDAD>=18 AND EDAD<=20...

tampoco tiene por que afectar el resto de criterios.

Excepto que estes mal interpratando la restricción que estas usando

Cita:
WHERE CATEGORIA LIKE %busco% AND POBLACION LIKE %ciudad% AND NACIONALIDAD LIKE %origen% AND EDAD LIKE %ed% AND TARIFA LIKE %precio%
AND (y) por lo que se deben cumplir TODAS las condiciones para que se encuentre un registro, la alternativa seria OR (o) pero eso solo tu sabes si puede funcionarte...

Una pregunta porque usas LIKE ... sobre categoria no se pero sobre POBLACION, NACIONALIDAD y TARIFA .... si se busca un precio tarifa debe ser igual al precio no parecido al precio ....

TARIFA=$precio es mas rápido y preciso... en precio esta clarisimo y en los otros creo que tambien....

Y si como se puede deducir de lo que dices de edad tambien trabajas con varios valores para cada criterio... es mejor que construyas la query dinamicamente

Código MySQL:
Ver original
  1. ...
  2. WHERE (CATEGORIA=$busco1
  3.                    OR CATEGORIA=$busco2
  4.                    OR  ... )
  5. AND (POBLACION=$ciudad1
  6.          OR POBLACION=$ciudad2
  7.          OR ....)
  8. AND (NACIONALIDAD=$origen1
  9.          OR NACIONALIDAD=$origen2
  10.          OR ...)
  11. AND EDAD>=$edadMin AND EDAD<=$edadMax
  12. AND TARIFA>=$precioMin AND TARIFA<=$precioMax
  13. ...

Fijate en los parentesis....

Sabes que POBLACION LIKE %ciudad% si ciudad es "San Lorenzo" te dara todos los San Lorenzos posibles...San Lorenzo de Almagro, San Lorenzo de El Escorial, .... e incluso uno que se llame "Playa de San Lorenzo" (este no se si existe).


Mensaje 2000
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 13/12/2011 a las 05:25