Probabilmente sono gli spazi a dare noie, prova così.
Codice PHP:
for ($i 0$i count($product_list); $i++) {
    echo 
"<li <a href=action.php?id=".str_replace(" ","_",$product_list[$i]).">".strtoupper($product_list[$i])."</a>" ;

Poi nella pagina su cui si arriva dal link ritogli gli underscore con
Codice PHP:
$id str_replace("_"," ",$_GET['id']);