Ciao a tutti,
sto cercando di creare un piccolo motore di ricerca per un elenco iscritti.

Tanto per incominciare spiego subito quale è la struttura.

Ho una tabella utenti con tanti dati, ma quelli sensibili sono:

tabella utenti
---------------------
NumeroIscrizione
DataIscrizione
Cognome
Nome
Laurea
Sezione
Settore

Io dovrei permettere all'untente che accede al sistema di cercare l'utente registrato inserendo i filtri che ritiene più opportuni.

Per questo ho creato un semplice form che contiene:
NumeroIscrizione: Campo Input TEXT
Cognome: Campo Input TEXT
Nome: Campo Input TEXT
Laurea: Campo Select con tante opzioni
Sezione: Campo Radio con due elementi
Settore: Campo Check con tre opzioni

Per poi realizzare la query in questa maniera.
Codice PHP:
//Controllo se search è attivato per sostituire con i risultati della ricerca invece che con i risultati visualizzati
if(isset($_GET['search']) and $_GET['search'] == true){

//Inizio la composizione della tabella
    
$q "SELECT * FROM ".$tabella utenti." WHERE ";

//Controllo se l'imput cognome è stato impostato, se risulta vero e non vuoto aggiungo alla tabella questa opzione di ricerca in più.
    
if(isset($_POST['cognome']) and $_POST['cognome'] <> ''){
      
$q .= "Cogn LIKE '%".$_POST['cognome']."%' and";
    }

//Come sopra
    
if(isset($_POST['nome']) and $_POST['nome'] <> ''){
      
$q .= "Nome LIKE '%".$_POST['nome']."%' and";
    }

    
    if(isset(
$_POST['laurea']) and $_POST['laurea'] <> ''){
      
$q .= "Laurea = '".$_POST['laurea']."' and";
    }
 
//Come sopra   
    
if(isset($_POST['niscrizione']) and $_POST['niscrizione'] <> ''){
      
$q .= "NumIscr = '".$_POST['niscrizione']."' and";
    }

//Come sopra
    
if(isset($_POST['data']) and $_POST['data'] <> ''){
      
$q .= "DataIscrizione LIKE '".$_POST['data']."%' and";
    }
    
//Elimino l'ultimo "and" inserito.
    
$q substr($q0, -3);

//Chiudo la query ordinandola per cognome in maniera crescente.
    
$q .= "ORDER BY Cogn ASC";
  } 
Sembra che funzioni anche se non correttamente. Perchè nel momento in cui imposto più di un campo di ricerca non ottengo nessun risultato.
Avete altri metodi per la costruzione di un query che si adatti a questo tipo?
O meglio sapete il perchè?

Vi ringrazio in anticipo

PS: Come magari avete notato non è stato effettuata la ricerca sui campi settore e sezione, questo perchè il processo per ottenerli è un pò più complicato e dopo aver risolto questo problema passerò a loro.