Buongiorno ragazzi, ringrazio sempre tutti del forum per il supporto che mi date, ho questo problema , ho creato dei filtri che a secondo della scelta estraggono dati dal db e funziona tutto, ma lo script e lungo e pieno di if, c'è un modo per semplificarlo?


codice:
  <?php     if($_REQUEST['idcompetenza'] !='' && $_REQUEST['stato']!='' &&  $_REQUEST['idnegozio'] !='' && $_REQUEST['idprodotto'] !='' && $_REQUEST['idgestore'] !='' && $_REQUEST['datainizio'] !='' && $_REQUEST['datafine'] !='' && $_REQUEST['stornato'] !='' && $_REQUEST['pagato'] !=''){
       
           
         $datainizio=$_REQUEST['datainizio'];
    
          $data= convertiData($datainizio); 
    
            
           $datafine=$_REQUEST['datafine'];
    
            $data2= convertiData($datafine); 
      
            
             if (! $db->Query("SELECT DATE_FORMAT(contrattigare.datainizio, '%d-%m-%Y')as inizio, contrattigare.idcontratto, contrattigare.idnegozio, contrattigare.idprodotto, contrattigare.utenza, contrattigare.datainizio, contrattigare.durata, contrattigare.idcliente, contrattigare.compenso, contrattigare.punteggiomobile, contrattigare.pagato, contrattigare.punteggiofissovoce, contrattigare.punteggiofissovoceadsl, contrattigare.stato, contrattigare.stornato, prodottigare.descrizione, clientigare.cognome, clientigare.nome, competenze.descrizione AS Cdescrizione, negozi.negozio, prodottigare.fissovoce, prodottigare.fissovoceadsl, prodottigare.mobile,  prodottigare.idgestore, contrattigare.idcompetenza, contrattigare.utenzaprovv FROM competenze RIGHT OUTER JOIN contrattigare ON competenze.idcompetenza = contrattigare.idcompetenza LEFT OUTER JOIN negozi ON contrattigare.idnegozio = negozi.idnegozio LEFT OUTER JOIN clientigare ON contrattigare.idcliente = clientigare.idcliente LEFT OUTER JOIN prodottigare LEFT OUTER JOIN gestori ON prodottigare.idgestore = gestori.idgestore ON contrattigare.idprodotto = prodottigare.idprodotto WHERE contrattigare.datainizio  BETWEEN('{$data}')AND('{$data2}') AND contrattigare.idcompetenza='{$_REQUEST['idcompetenza']}' AND  contrattigare.stato='{$_REQUEST['stato']}' AND contrattigare.idnegozio='{$_REQUEST['idnegozio']}' AND contrattigare.idprodotto='{$_REQUEST['idprodotto']}' AND contrattigare.stornato='{$_REQUEST['stornato']}'  AND contrattigare.pagato='{$_REQUEST['pagato']}'  ORDER BY contrattigare.idcontratto DESC")) echo $db->Kill();  
             
     }elseif ($_REQUEST['idcompetenza'] !='' && $_REQUEST['stato']!='' &&  $_REQUEST['idnegozio'] !='' && $_REQUEST['idprodotto'] !='' && $_REQUEST['idgestore'] !='' && $_REQUEST['datainizio'] !='' && $_REQUEST['datafine'] !='' && $_REQUEST['stornato'] !='') {
         
            $datainizio=$_REQUEST['datainizio'];
    
          $data= convertiData($datainizio); 
    
            
           $datafine=$_REQUEST['datafine'];
    
            $data2= convertiData($datafine); 
         
    
             if (! $db->Query("SELECT DATE_FORMAT(contrattigare.datainizio, '%d-%m-%Y')as inizio, contrattigare.idcontratto, contrattigare.idnegozio, contrattigare.idprodotto, contrattigare.utenza, contrattigare.datainizio, contrattigare.durata, contrattigare.idcliente, contrattigare.compenso, contrattigare.punteggiomobile, contrattigare.pagato, contrattigare.punteggiofissovoce, contrattigare.punteggiofissovoceadsl, contrattigare.stato, contrattigare.stornato, prodottigare.descrizione, clientigare.cognome, clientigare.nome, competenze.descrizione AS Cdescrizione, negozi.negozio, prodottigare.fissovoce, prodottigare.fissovoceadsl, prodottigare.mobile,  prodottigare.idgestore, contrattigare.idcompetenza, contrattigare.utenzaprovv FROM competenze RIGHT OUTER JOIN contrattigare ON competenze.idcompetenza = contrattigare.idcompetenza LEFT OUTER JOIN negozi ON contrattigare.idnegozio = negozi.idnegozio LEFT OUTER JOIN clientigare ON contrattigare.idcliente = clientigare.idcliente LEFT OUTER JOIN prodottigare LEFT OUTER JOIN gestori ON prodottigare.idgestore = gestori.idgestore ON contrattigare.idprodotto = prodottigare.idprodotto WHERE contrattigare.datainizio  BETWEEN('{$data}')AND('{$data2}') AND contrattigare.idcompetenza='{$_REQUEST['idcompetenza']}' AND  contrattigare.stato='{$_REQUEST['stato']}' AND contrattigare.idnegozio='{$_REQUEST['idnegozio']}' AND contrattigare.idprodotto='{$_REQUEST['idprodotto']}' AND contrattigare.stornato='{$_REQUEST['stornato']}'  ORDER BY contrattigare.idcontratto DESC")) echo $db->Kill();  
             
  }elseif ($_REQUEST['idcompetenza'] !='' && $_REQUEST['stato']!='' &&  $_REQUEST['idnegozio'] !='' && $_REQUEST['idprodotto'] !='' && $_REQUEST['idgestore'] !='' && $_REQUEST['datainizio'] !='' && $_REQUEST['datafine'] !='') {


         
            $datainizio=$_REQUEST['datainizio'];
    
          $data= convertiData($datainizio); 
    
            
           $datafine=$_REQUEST['datafine'];
    
            $data2= convertiData($datafine); 
         
    
             if (! $db->Query("SELECT DATE_FORMAT(contrattigare.datainizio, '%d-%m-%Y')as inizio, contrattigare.idcontratto, contrattigare.idnegozio, contrattigare.idprodotto, contrattigare.utenza, contrattigare.datainizio, contrattigare.durata, contrattigare.idcliente, contrattigare.compenso, contrattigare.punteggiomobile, contrattigare.pagato, contrattigare.punteggiofissovoce, contrattigare.punteggiofissovoceadsl, contrattigare.stato, contrattigare.stornato, prodottigare.descrizione, clientigare.cognome, clientigare.nome, competenze.descrizione AS Cdescrizione, negozi.negozio, prodottigare.fissovoce, prodottigare.fissovoceadsl, prodottigare.mobile,  prodottigare.idgestore, contrattigare.idcompetenza, contrattigare.utenzaprovv FROM competenze RIGHT OUTER JOIN contrattigare ON competenze.idcompetenza = contrattigare.idcompetenza LEFT OUTER JOIN negozi ON contrattigare.idnegozio = negozi.idnegozio LEFT OUTER JOIN clientigare ON contrattigare.idcliente = clientigare.idcliente LEFT OUTER JOIN prodottigare LEFT OUTER JOIN gestori ON prodottigare.idgestore = gestori.idgestore ON contrattigare.idprodotto = prodottigare.idprodotto WHERE contrattigare.datainizio  BETWEEN('{$data}')AND('{$data2}') AND contrattigare.idcompetenza='{$_REQUEST['idcompetenza']}' AND  contrattigare.stato='{$_REQUEST['stato']}' AND contrattigare.idnegozio='{$_REQUEST['idnegozio']}' AND contrattigare.idprodotto='{$_REQUEST['idprodotto']}' ORDER BY contrattigare.idcontratto DESC")) echo $db->Kill();  
             
  } elseif ($_REQUEST['idcompetenza'] !='' && $_REQUEST['stato']!='' &&  $_REQUEST['idnegozio'] !='' && $_REQUEST['idprodotto'] !='' && $_REQUEST['idgestore'] !='') {


         
            $datainizio=$_REQUEST['datainizio'];
    
          $data= convertiData($datainizio); 
    
            
           $datafine=$_REQUEST['datafine'];
    
            $data2= convertiData($datafine); 
         
    
             if (! $db->Query("SELECT DATE_FORMAT(contrattigare.datainizio, '%d-%m-%Y')as inizio, contrattigare.idcontratto, contrattigare.idnegozio, contrattigare.idprodotto, contrattigare.utenza, contrattigare.datainizio, contrattigare.durata, contrattigare.idcliente, contrattigare.compenso, contrattigare.punteggiomobile, contrattigare.pagato, contrattigare.punteggiofissovoce, contrattigare.punteggiofissovoceadsl, contrattigare.stato, contrattigare.stornato, prodottigare.descrizione, clientigare.cognome, clientigare.nome, competenze.descrizione AS Cdescrizione, negozi.negozio, prodottigare.fissovoce, prodottigare.fissovoceadsl, prodottigare.mobile,  prodottigare.idgestore, contrattigare.idcompetenza, contrattigare.utenzaprovv FROM competenze RIGHT OUTER JOIN contrattigare ON competenze.idcompetenza = contrattigare.idcompetenza LEFT OUTER JOIN negozi ON contrattigare.idnegozio = negozi.idnegozio LEFT OUTER JOIN clientigare ON contrattigare.idcliente = clientigare.idcliente LEFT OUTER JOIN prodottigare LEFT OUTER JOIN gestori ON prodottigare.idgestore = gestori.idgestore ON contrattigare.idprodotto = prodottigare.idprodotto WHERE  contrattigare.idcompetenza='{$_REQUEST['idcompetenza']}' AND  contrattigare.stato='{$_REQUEST['stato']}' AND contrattigare.idnegozio='{$_REQUEST['idnegozio']}' AND contrattigare.idprodotto='{$_REQUEST['idprodotto']}' ORDER BY contrattigare.idcontratto DESC")) echo $db->Kill();  
             
      } elseif ($_REQUEST['idcompetenza'] !='' && $_REQUEST['stato']!='' &&  $_REQUEST['idnegozio'] !='') {
 


    
             if (! $db->Query("SELECT DATE_FORMAT(contrattigare.datainizio, '%d-%m-%Y')as inizio, contrattigare.idcontratto, contrattigare.idnegozio, contrattigare.idprodotto, contrattigare.utenza, contrattigare.datainizio, contrattigare.durata, contrattigare.idcliente, contrattigare.compenso, contrattigare.punteggiomobile, contrattigare.pagato, contrattigare.punteggiofissovoce, contrattigare.punteggiofissovoceadsl, contrattigare.stato, contrattigare.stornato, prodottigare.descrizione, clientigare.cognome, clientigare.nome, competenze.descrizione AS Cdescrizione, negozi.negozio, prodottigare.fissovoce, prodottigare.fissovoceadsl, prodottigare.mobile,  prodottigare.idgestore, contrattigare.idcompetenza, contrattigare.utenzaprovv FROM competenze RIGHT OUTER JOIN contrattigare ON competenze.idcompetenza = contrattigare.idcompetenza LEFT OUTER JOIN negozi ON contrattigare.idnegozio = negozi.idnegozio LEFT OUTER JOIN clientigare ON contrattigare.idcliente = clientigare.idcliente LEFT OUTER JOIN prodottigare LEFT OUTER JOIN gestori ON prodottigare.idgestore = gestori.idgestore ON contrattigare.idprodotto = prodottigare.idprodotto WHERE  contrattigare.idcompetenza='{$_REQUEST['idcompetenza']}' AND  contrattigare.stato='{$_REQUEST['stato']}' AND contrattigare.idnegozio='{$_REQUEST['idnegozio']}'  ORDER BY contrattigare.idcontratto DESC")) echo $db->Kill();  
                    
     
     }else{
  if (! $db->Query("SELECT DATE_FORMAT(contrattigare.datainizio, '%d-%m-%Y')as inizio, contrattigare.idcontratto, contrattigare.idnegozio, contrattigare.idprodotto, contrattigare.utenza, contrattigare.datainizio, contrattigare.durata, contrattigare.idcliente, contrattigare.compenso, contrattigare.punteggiomobile, contrattigare.pagato, contrattigare.punteggiofissovoce, contrattigare.punteggiofissovoceadsl, contrattigare.stato, contrattigare.stornato, prodottigare.descrizione, clientigare.cognome, clientigare.nome, competenze.descrizione AS Cdescrizione, negozi.negozio, prodottigare.fissovoce, prodottigare.fissovoceadsl, prodottigare.mobile,  prodottigare.idgestore, contrattigare.idcompetenza, contrattigare.utenzaprovv FROM competenze RIGHT OUTER JOIN contrattigare ON competenze.idcompetenza = contrattigare.idcompetenza LEFT OUTER JOIN negozi ON contrattigare.idnegozio = negozi.idnegozio LEFT OUTER JOIN clientigare ON contrattigare.idcliente = clientigare.idcliente LEFT OUTER JOIN prodottigare LEFT OUTER JOIN gestori ON prodottigare.idgestore = gestori.idgestore ON contrattigare.idprodotto = prodottigare.idprodotto ORDER BY contrattigare.idcontratto DESC LIMIT 250")) echo $db->Kill();                   
            
     }
C' un modo per semplificarlo. Grazie