Scusate se intervengo, ma credo che piuttosto che ciclare con il FOR sia più utile e meno dispendioso usare il WHILE.

Codice PHP:
$query "SELECT descr FROM menu";   
$result mysql_query($query);     
while (
$voce mysql_fetch_array($result)) {

   
$sottopagina urlencode($voce['nome campo database']);
   echo 
"<a href=menu2.php?link=$sottopagina>".$voce['nome campo database']."</a>";
}
mysql_free_result($result); 
La pagina menu2.php ti conviene impostarla come segue, invece.

Codice PHP:
// recupero la variabile dalla URL, ammesso che ci sia
// altrimenti imposto un valore nullo alla stringa
(!isset($_GET['link']) ? $link "" $link $_GET['link'];

$link urldecode($link);

switch(
$link) {
  case 
'xxx' :
     
// codice
  
break;
  case 
'yyy' :
     
// codice
  
break;
  case 
'zzz' :
     
// codice
  
break;
  default:
     
// codice
  
break;

Il problema di questo metodo è che, non sapendo in anticipo quanti e quali CASI dello switch puoi prevedere (suppongo che se usi un DB è perché il numero di menù e sottomenu sia dinamico), rischi che non ti funzioni tutto e che ti manchino dei pezzi dello switch.