ho un piccolo problema che mi affligge da ieri pomeriggio. sicuramente sarà una stupidata ma più guardo e riguardo il codice e più non riesco a venirne a capo.

in poche parole, sono partito da un ciclo while per estrarre alcuni contenuti dal database e popolare una form select

Codice PHP:
while ( $row mysql_fetch_array($sql_results) )
{
    
$id   $row["id"];
    
$nome $row["nome"];

    echo 
"<option value='" $id "'>" $nome "</option>\n";
}

// RISULTATO

<option value='1'>Nome 1</option>
<
option value='2'>Nome 2</option>
<
option value='3'>Nome 3</option>
<
option value='4'>Nome 4</option>
<
option value='5'>Nome 5</option
dato che questo codice è inserito in un form per il caricamento di alcuni dati nel database, ho deciso di utilizzare una sessione per memorizzare i dati appena caricati e riportarli nella schermata successiva (questo per risparmiare tempo nel caso in cui voglio aggiungere un articolo simile a quello appena inserito).

all'interno del ciclo while ho aggiunto un ciclo for per estrarre i dati dalla sessione e al suo interno ho aggiunto la condizione che se id e contenuto della sessione sono uguali, allora il campo option deve essere selezionato.

il problema è che, nel caso in cui la sessione contiene più valori, viene selezionato solo l'ultimo, trascurando quelli precedenti.

Codice PHP:
while ( $row mysql_fetch_array($sql_results) )
{
    
$id     $row["id"];
    
$nome $row["nome"];

    
// la $_SESSION['sessione'] contiene i valori 1, 2 e 3
    
for ($i=0$i<count($_SESSION['sessione']); $i++)
    {
        if (
$id == $_SESSION['sessione'][$i])
        {
            
$selected " selected";
        }
        else
        {
            
$selected "";
        }
    }

    echo 
"<option value='" $id "'" $selected ">" $nome "</option>\n";
}

// RISULTATO

<option value='1'>Nome 1</option>
<
option value='2'>Nome 2</option>
<
option value='3' selected>Nome 3</option// seleziona solo l'ultimo dei 3 valori presenti nella sessione
<option value='4'>Nome 4</option>
<
option value='5'>Nome 5</option
ho provato quindi ad includere nel ciclo for anche il risultato ma, se è vero che ho risolto il problema precedente (ogni valore viene selezionato correttamente), ciascuna option viene ripetuta "X" volte, dove "X" corrisponde al numero di valori contenuti nella sessione.

qualcuno può farmi capire dov'è che sbaglio?

Codice PHP:
while ( $row mysql_fetch_array($sql_results) )
{
    
$id     $row["id"];
    
$nome $row["nome"];

    
// la $_SESSION['sessione'] contiene i valori 1, 2 e 3
    
for ($i=0$i<count($_SESSION['sessione']); $i++)
    {
        if (
$id == $_SESSION['sessione'][$i])
        {
            
$selected " selected";
        }
        else
        {
            
$selected "";
        }

        echo 
"<option value='" $id "'" $selected ">" $nome "</option>\n";
    }
}

// RISULTATO
// crea tanti "cloni" quanti sono i valori contenuti nella sessione (quindi non va bene)
// ma nello stesso tempo individua e seleziona quelli corretti

<option value='1' selected>Nome 1</option>
<
option value='1'>Nome 1</option>
<
option value='1'>Nome 1</option>
<
option value='2' selected>Nome 2</option>
<
option value='2'>Nome 2</option>
<
option value='2'>Nome 2</option>
<
option value='3' selected>Nome 3</option>
<
option value='3'>Nome 3</option>
<
option value='3'>Nome 3</option>
<
option value='4'>Nome 4</option>
<
option value='4'>Nome 4</option>
<
option value='4'>Nome 4</option>
<
option value='5'>Nome 5</option>
<
option value='5'>Nome 5</option>
<
option value='5'>Nome 5</option