Ciao a tutti, ho 2 select e 1 input con cui eseguo la ricerca dei dati in modo non combinato (il codice dice tutto)..
Vorrei poter giostrare la ricerca anche in modo combinato, cioè devono valere nella ricerca solo i campi selezionati/digitati, sia singolarmente che combinati tra di loro. Spero di essermi spiegato..

Al momento filtro la ricerca con i singoli campi come segue: se uno dei 3 campi sono selezionati/digitati, la ricerca viene eseguita, ma se ne seleziono/digito più di uno non ottengo nulla perchè le condizioni vanno in crisi tra di loro. Come posso risolvere?

codice:
<form action="#" method="POST">
    <select name="titolo">
        <option value="">Seleziona una voce...</option>
        <option value="1">a</option>
        <option value="2">b</option>
        <option value="3">c</option>
        <option value="4">d</option>
    </select>
    <select name="stato">
        <option value="">Seleziona una voce...</option>
        <option value="1">a</option>
        <option value="2">b</option>
        <option value="3">c</option>
        <option value="4">d</option>
    </select>
    <input type="text" name="pratica" />
    <button type="submit" name="submit">Cerca</button>
</form>

if(isset($_POST['submit']))
    {
    $pratica = $_POST['pratica'];
    $titolo = $_POST['titolo'];
    $stato = $_POST['stato'];


    $query_sql = 'SELECT * FROM pratiche WHERE 1=1';


    if($titolo != null)
        {
        $val = $titolo;
        $query_sql .= ' AND pratiche.desc = ?';
        }
    else
        {
        $_POST['titolo'] = false;
        }
        
    if($stato != null)
        {
        $val = $stato;
        $query_sql .= ' AND pratiche.status = ?';
        }
    else
        {
        $_POST['stato'] = false;
        }


    if(!empty($pratica))
        {
        $val = '%'.$pratica.'%';
        $query_sql .= ' AND pratiche.name LIKE ?';
        }
    else
        {
        $_POST['pratica'] = false;
        }


    require("../conn.php");
    try { $connessione = "mysql:host=$host; dbname=$db; charset=utf8"; $connessione = new PDO ($connessione, "$user", "$password"); $connessione -> setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $query = $connessione -> prepare ("$query_sql");
    $query -> execute(array($val));
    $connessione = null; } catch (PDOException $e) { /*echo $e -> getMessage();*/ die(); }
    while ($r = $query->fetch())
        {
        *risultati*
        }
    }