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.