Is there a better way to write this query?

startimg point: index.php?IDGruppo=25,48,47&IDFamiglia=845,587,215,444

now i explode IDGruppo and IDFamiglia and build query like:

there is a best way?

```
$sql = "SELECT * FROM catalogo_prodotti cp, catalogo_prodotti_attributi cpa WHERE cp.IDProdotto = cpa.IDProdotto ";

if($IDGruppo || $IDVarianti){

    $sql .= "AND ";

    foreach($idg as $v)
    {

    if($IDVarianti){
        $i = 1;
        foreach($idv as $c)
        {
        $sql .= "cp.IDGruppo = '". $v ."' AND cp.IDFamiglia = '".$c."' AND cp.Cancellato = '0' AND cp.Acquistabile = '1' ";

        if($IDTaglia)
         $sql .= "AND cpa.IDFiltro_Taglia = '".$IDTaglia."' ";

        if($IDTessuto)
         $sql .= "AND cp.Key_IT LIKE '%".$IDTessuto."%' ";

        if ( count($idv) != $i ){
         $sql .= "OR ";

         }
        $i++;
        }

    } else {

    $sql .= "cp.IDGruppo = '". $v ."' AND cp.Cancellato = '0' AND cp.Acquistabile = '1' ";

    }
     if ( count($idg) != $j )
     $sql .= "OR ";
     $j++;
    }

}

$sql .= "GROUP BY cp.IDProdotto LIMIT $offset, ".$this->ipp." ";

if($orderBY)
$sql .= "ORDER BY '".$orderBY."'";

```