Salve a tutti,

il mio problema è questo.
Estraggo da una query select i valori di una option multipla precedentemente caricati con una insert in questo forma:

campo con nome "compatibilita"
Valore: 1|2|3|4|

Successivamente cerco di estrarre con un "explode" i dati in questo modo:

Codice PHP:
$mod explode('|'$compatibilita);  
$valori=array(); 
foreach (
$mod as $k => $v)  
$valori[]=$k
Successivamente eseguo una query select dalla tabella "macchine" e cerco di settare la option multipla con i valori a selected (selezionati) in questo modo:



Codice PHP:
while ($row1 mysql_fetch_array($sql_result)) {
    

        
$macchine .= "<option value=\"".$row1['id']."\"".$row1['modello_macchina']."";
        if(
in_array($row1['id'],$valori)) {$macchine.= " selected='selected'";}
        
$macchine .= ">" $row1['modello_macchina'] . "</option>";  
        


    


Il problema è che in qualsiasi dei casi mi da sempre i primi in successione, ovvero:

se sono selezionati il 5|9|11|12| mi da sempre selezionati il 1|2|3|4|
se sono selezionati il 12|13| mi da sempre il 1|2|


Che succede, dove sta l'errore??