Beh... innanzi tutto, credevo fosse chiaro che se vai a compilarti un menù con un ciclo automatico, è inutile stare a scrivere lo stesso menù anche a mano. Questo per dirti che c'era comunque un errore di base nel tuo script.
Oltretutto, stavo pensando che probabilmente, il confronto pagina visualizzata/link del menù potrebbe non andare a buon fine per un motivo: ho quasi la certezza che la funzione basename(eccetera) vada a pescare la URI dello script dove la funzione è scritta, non di quello dove è richiamata.
Cosa comporta questo? Metti che basename ti torni la URL del file dove è scritta la funzione (pagina_con_le_funzioni.php), e non (esempio) index.php oppure contattaci.php, quando vai a fare l'uguaglianza con i link presenti nell'array, questa sarà sempre FALSE.
Per ovviare questo problema, devi fare come segue.
In ognuna delle pagine che richiama quella dove è contenuta la funzione headers(), devi mettere il seguente codice:
La pagina pagina_con_le_funzioni.php contiene la tua bella funzione headers(), che modificherai come segue.Codice PHP:// supponiamo che la pagina sia index.php
// importi la funzione headers()
include('pagina_con_le_funzioni.php');
// definisci quale sia la pagina corrente
$pagina_corrente = basename($_SERVER['PHP_SELF']);
// in questo caso il risultato è ==> $pagina_corrente == index.php;
// rendi la variabile globale per metterla
// disponibile anche all'interno di una funzione
global $pagina_corrente;
/*
qui metti tutto il resto della pagina
*/
Un'ultima annotazione. Ma sei sicuro ti sia così necessario andare a nidificare tutti quei DIV per arrivare al tuo menù?Codice PHP:<?php
function headers () {
?>
<div id="header">
<h1>TEATRO IN F<span class="emph">O</span>LLE</h1>
<div id="navbar_wrapper">
<div id="navbar">
<ul>
<?php
$array_link = array(
"index.php" => "Home Page",
"chisiamo.php" => "Chi Siamo",
"comenato.php" => "Come è Nato",
"copioni.php" => "Copioni",
"immagini.php" => "Immagini",
"spettacoli.php" => "Spettacoli",
"contattaci.php" => "Contattaci",
);
/*
la variabile $pagina_corrente viene passata
dallo script sotto forma di variabile globale
per cui non serve più ricavarla
*/
foreach($array_link as $link => $label) {
if ($link == $pagina_corrente) {
$selettore_css = " id=\"currentpage\" ";
} else {
$selettore_css = "";
}
$menu .= "[*]<a href=\"$link\" $selettore_css title=\"Vai alla pagina
$label\">$label</a>
";
}
?>[/list]
</div>
</div>
</div>
<?php
};
?>
Secondo me dovresti approfondire tutte le peculiarità dei CSS (vedi l'ereditarietà a cascata), perché si risparmia davvero tanto codice inutile.
![]()

Rispondi quotando