Bueno quiero aprovechar de postear :D
no entiendo bien la pregunta..
1.- ¿el problema del filtro son los select de las opciones de filtro?
2.- ¿o son la acumulacion de AND's en una variable de sql?
porque si es la 2 opcion tengo una solucion
mira yo lo hago asi:
(suponiendo que al menos 1 filtro es obligatorio)
supongamos que se tienen 3 opciones de filtros y se envian todas:
Código PHP:
// hagamos como que llegaron de un $_GET
$marca="toyota";
$año="2007";
$color="azul";
//entonces empiezas a crear tu consulta:
$sql = "select * from automoviles where ";
if($marca){
$sql.= "marca = $marca"; //si hay variable $marca agregar a la consulta
//si ademas existen las variable $año y $color entonces agregar con "AND"
if($año) $sql.= " and año= $año";
if($color) $sql.=" and color= $color";
}
else { //cuando $marca no existe pero $año o $color si estan
//reviso si hay variable $año
if($año) {
$sql.= "año= $año"; //agrego $año a la busqueda sql (sin AND)
if($color) $sql.= " and color= $color"; //si adema esta $color, agregar con AND
}
//en caso que no haya $año, comprobar si existe $color para agregar (con AND)
else if($color) $sql.= "color= $color";
}
Disculpa si lo hice muy comentado xD .