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...
AND (NACIONALIDAD
=$origen1
AND EDAD
>=$edadMin
AND EDAD
<=$edadMax
AND TARIFA
>=$precioMin
AND TARIFA
<=$precioMax
...
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