Partiamo dalla base:
codice:
<select name='Nome' [size='N'] [onchange='gestore(...)']>
<option value = 'X' >Descrizione di X
<option value = 'Y' >Descrizione di Y
</select>
Tu hai fatto:
Codice PHP:
<option value="none" <?if($_REQUEST['categories'] == "none")echo "selected=selected"?> >Tutte</option>
<option value="0" <?if($_REQUEST['categories'] == "0")echo "selected=selected"?> ><?php echo $categories[0]; ?></option>
<option value="1" <?if($_REQUEST['categories'] == "1")echo "selected=selected"?> ><?php echo $categories[1]; ?></option>
<option value="2" <?if($_REQUEST['categories'] == "2")echo "selected=selected"?> ><?php echo $categories[2]; ?></option>
<option value="3" <?if($_REQUEST['categories'] == "3")echo "selected=selected"?> ><?php echo $categories[3]; ?></option>
<option value="4" <?if($_REQUEST['categories'] == "4")echo "selected=selected"?> ><?php echo $categories[4]; ?></option>
<option value="5" <?if($_REQUEST['categories'] == "5")echo "selected=selected"?> ><?php echo $categories[5]; ?></option>
<option value="6" <?if($_REQUEST['categories'] == "6")echo "selected=selected"?> ><?php echo $categories[6]; ?></option>
Partendo dal fatto che è abbastanza prolisso riscrivere tutto e sarebbe meglio la seguente funzione, che è quella che utilizzerò:
Codice PHP:
<select name="categories">
<option value="none" <?if($_REQUEST['categories'] == "none")echo "selected=selected"?>>Tutte</option>
<? for($i=0;$i<=6;$i++){
echo '<option value="'.$i.'" '.($_REQUEST['categories'] == $i?"selected=selected":'').'>'. $categories[$i].'</option>
';
}
?>
Dal precedente codice si capisce nettamente l'errore, che magari in mezzo a decine di righe di opzioni viene tralasciata: il selected è sbagliato, poiché viene scritto 'selected=selected' (prova, prima di fare cambiamenti, a fare tasto destro con il mouse e vedere il codice compilato).
Quindi la struttura giusta sarà:
Codice PHP:
<select name="categories">
<option value="none" <?if($_REQUEST['categories'] == "none")echo 'selected="selected"'?>>Tutte</option>
<? for($i=0;$i<=6;$i++){
echo '<option value="'.$i.'" '.($_REQUEST['categories'] == $i?'selected="selected"':'').'>'. $categories[$i].'</option>
';
}
?>
dove il selected verrà scritto correttamente:
codice:
selected="selected"
e spero che tu abbia creato l'array $categories (lo do per scontato ma non si sa mai
)
N.B. Codice non testato, quindi se ci sono errori potrebbero essere di battitura