Yo tengo hecha esta funcion, a ver si te puede ayudar en algo, los 3 argumentos son los campos que se pueden introducir en la busqueda, los 3 campos pertenecen a la misma tabla, si tienes que buscar campos en distintas tablas, tendras que usar INTERSECT de varias SELECT. Tengo hecho tambien un ejemplo con varias tablas, si lo necesitas me lo pides, es que tendria que modificarlo un poco.
Código PHP:
<?
function find_archivos($tipo, $tamanio, $carpeta) {
global $conn;
$and = false;
$query = "select archivo_id from archivos";
if ($tipo!="all") {
$query .= " where ";
$query .= "tipo='".$tipo."'";
$and = true;
}
if ($carpeta!="all") {
if ($and)
$query .= "and carpeta_id=".$carpeta;
else {
$query .= " where ";
$query .= "carpeta_id=".$carpeta;
$and =true;
}
}
if ($tamanio!='') {
if ($and)
$query .= "and tamanio<=".$tamanio;
else {
$query .= " where ";
$query .= "tamanio<=".$tamanio;
}
}
$res=mysql_query($conn,$query));
return $res;
}
?>