Un esempio per farti capire la logica:
tu hai:
$sql="select * from accessori WHERE ";
$sql.=" codiceprodotto like '%$codiceprodotto%' ";
se vuoi condizionare altri parametri nel SELECT devi usare 'AND' come da esempio:
if($descrizioneprodotto !="") $sql.=" AND Nome_Campo_nel_DB like '%$descrizioneprodotto%' ";
if($apartireda !="") $sql.=" AND Nome_Campo_nel_DB like '%$apartireda%' ";
ect...
Solo dopo tutte le condizioni chiami:
$fd = mysql_query($sql) OR DIE(mysql_error());
Inoltre toglierei il primo IF del tuo codice:
if($codiceprodotto !="") $sql.= .....
perchè nella stringa sql hai già incluso la condizione su questo parametro.
Siccome la variabile $codiceprodotto è fondamentale per l'estrapolazione dei dati richiesti, a monte dovresti fare un controllo su questa e nel caso fosse nulla o errata valorizzarla con un codice di default.
Potresti migliorare di molto il codice utilizzando un ciclo sulle condizioni o costruirti una funziona ad hoc ma questo è un'altro discorso.