Grazie per la risposta
Il $_GET['s'] serve perché la prima sezione da cui deve partire lo script è quella corrente, settata nell'indirizzo URL. (Es: http://www.mioindirizzo.it/pagina.php?s=3)
Questo infatti succede solo la prima volta, quando l'array è stato inizializzato.

La funzione crea e si passa un array $sezioni_storiche che deve stabilire al rovescio la struttura delle sottosezioni partendo da quella corrente e finendo a quella principale.
Nell'esempio del primo post, se io mi trovo nella sezione "Spaghetti", voglio che l'array in uscita da questa funzione abbia al suo interno gli ID della sezione corrente, di quella da cui essa dipende (in questo caso "Pasta Lunga"), e di quella da cui quest'ultima dipende (in questo caso "Prodotti") e così via.. (in questo caso si ferma al terzo passaggio)

Comunque, ero venuto a dire che alla fine ho risolto così:

Codice PHP:
function sezioni_recupero_principale($sezioni_storiche=array()) {
    
    if(
count($sezioni_storiche)==0$sezioni_storiche[]=$_GET['s'];

    
$result_sezione=mysql_query("SELECT madre FROM sezioni WHERE idsezione=".$sezioni_storiche[(count($sezioni_storiche)-1)]);
    
$row_sezione=mysql_fetch_array($result_sezione);

    
// Se non è una sezione principale, continua la ricerca
    
if($row_sezione['madre']!=0) {
        
$sezioni_storiche[]=$row_sezione['madre'];
        
$sezioni_storiche=sezioni_recupero_principale($sezioni_storiche);
    }
    return 
$sezioni_storiche;