E' verametne un rompicapo quel codice ... l'errore non e' facilmente comprensibile anche perche' non e' ben chiaro cosa c'e' nei parametri passati e come e' fatta la base dati.
considero 4 5 linee di codice perche' di piu mi viene mal di testa
Codice PHP:
$Eta = trim($_POST['Eta']);
if ($Eta=="tutte") {
$Eta2 = "(t1.Eta = '$Eta' OR t1.Eta != '$Eta') AND";
} elseif ($Eta=="Da 18 anni in poi" OR $Eta > 18) {
$Eta2 = "(t1.Eta = 'Da 18 anni in poi' OR t1.Eta = 'tutte' OR t1.Eta LIKE '%21%' OR t1.Eta LIKE '%19%' OR t1.Eta LIKE '%20%' OR t1.Eta LIKE '%22%' OR t1.Eta LIKE '%23%') AND";
}
ad esempio questa ... $eta e' un numero o una stringa ? sembra che possa essere entrambi a seconda di che ? non sarebbe il caso di farlo diventare sempre e comunque un numero ti semplificherebbe di molto la gestione e la leggibilita'
poi se $eta e' == a tutte
fai questo
Codice PHP:
$Eta2 = "(t1.Eta = '$Eta' OR t1.Eta != '$Eta') AND";
ma e' un controllo inutile (e' sempre vero) perche' l'hai fatto ? per errore o per metterci comunque
una stringa valorizzata ma al quel punto non sarebbe uguale metterla vuota ?
secondo me hai reso complicatissima una cosa di per se complessa 
Sicuramente si puo scrivere meglio ...
Andrea