Avatar billede public2 Nybegynder
24. april 2009 - 09:46 Der er 5 kommentarer og
1 løsning

Menu: Vælge en CSS Class med PHP

Hej alle,

jeg sidder og er i gang med et PHP projekt, men har nået til et irriterende lille problem med min menu - navigationsbar.

I mit layout har jeg en php fil der bliver inkluderet som hedder menu.php

I den er der simpelt CSS og HTML som viser navigationsbaren og de links.
Nu er det sådan at jeg gerne vil have, at det menupunkt man vælger får class "Selected" så den står som "aktiveret" når man er inden på den og de andre ingen class har.

Mit problem er så, at jeg ikke ved hvordan jeg dynamisk får sat den class til det aktiveret link.

Jeg tænker selv at det er noget med at give hver menupunkt i <a href en xxx.php?menu=2 xxx.php?menu=3 osv.

Og så et stykke PHP kode som kigger efter hvilken query der bliver sendt afsted og så sætter css klassen til "selected" alt efter om det er 2, 3 eller hvad det er.

ved godt det er lidt forvirrende at forklare, men på simpelt dansk går det ud på, at min menu.php ved hvilket link der er trykket på og derved "aktiveret" og derved sætter den rigtige klasse til "selected".

Min menu.php ser lige nu sådan her ud:


<ul>
<li class="selected"><a href="index.php">Front page</a></li>
<li><a href="login.php?menu=2">login</a></li>
<li><a href="register.php?menu=3">register</a></li>
<li><a href="about.php?menu=4">about</a></li>
<li><a href="contact.php?menu=5">contact</a></li>
<li><a href="links.php?menu=6">ressources</a></li>
</ul>


Jeg håber I forstår hvad det er jeg mener, ellers så sig til og jeg vil prøve at forklare det lidt mere enkelt.

På forhånd tak for jeres hjælp

Mvh
Emil
Avatar billede lakridserne Nybegynder
24. april 2009 - 09:58 #1
Kan du ikke bare bruge a's indbyggede funktioner? (simpelt html/css)

/lakridserne
Avatar billede jakobdo Ekspert
24. april 2009 - 10:45 #2
Hvad med noget i stil med:

$selected_menu = basename($_SERVER['SCRIPT_NAME']);
$menu = array(
    'index.php' => 'Frontpage',
    'login.php' => 'Login',
    'register.php' => 'Register',
    'about.php' => 'About',
    'contact.php' => 'Contact',
    'links.php' => 'Ressources'
);

echo '<ul>';
foreach($menu AS $url => $title){
    echo '<li '.(($url == $selected_menu)?'class="selected" ':'').'><a href="'.$url.'">'.$title.'</a></li>';
}
echo '</ul>';
Avatar billede public2 Nybegynder
24. april 2009 - 11:01 #3
Hej Jakobdo,

for søren, det virker bare og er jo så skide enkelt. Jeg har vist meget at lære om PHP endnu (er mest i ASP og .NET, så skal lige ind i PHP verden).

Men du har da mere end fortjent de point, så smid et svar og de skal blive dine :-)

Og god weekend

Mvh
Emil
Avatar billede jakobdo Ekspert
24. april 2009 - 11:09 #4
Svar!
Avatar billede jakobdo Ekspert
24. april 2009 - 11:17 #5
Takker for point.
Avatar billede public2 Nybegynder
24. april 2009 - 11:46 #6
Ingen årsag, det er mig der takker :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester