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