• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

CSS Klasse dynamisch zuweisen

freakXHTML

Mitglied
Hallo zusammen,
ich habe eine Navigationsleiste, die so aussieht:

HTML:
<ul>
    <li class="selected" ><a id="sel" href="#">Home</a></li>
    <li><a href="index.php?navi=Home">Blog</a></li>
    <li><a href="index.php?navi=Home">Fotos</a></li>
    <li><a href="index.php?navi=Home">News</a></li>
    <li><a href="index.php?navi=Home">Impressum</a></li>
   </ul>

Wenn ich im Home Verzeichnis bin, dann soll das entsprechende Listenelement die Klasse "selected" und die ID "sel" erhalten. Wenn ich im Verzeichnis Blog bin, soll nun das zweite Listenelement die Klasse "selelcted" und die ID "sel" haben. Hier bin ich also im Home Verzeichnis.

Nun könnte ich pro Listenelement eine html Datei erstellen, auf die jeweilg verlinkt wird und wenn ich dann beispielsweise auf "Blog" drücke, dann wird die html Datei aufgerufen, in der das entsprechende Listenelement die Klasse und die ID hat. Das finde ich aber sehr umständlich und wollte fragen, ob man das auch elegant mit einer Datei und mit PHP lösen kann.

Ich hatte folgende Idee, die wahrscheinlich vällig falsch ist, aber vielleicht versteht ihr dann, was ich meine:

PHP:
<li <?php if ($_GET['navi']=='Home')
      echo 'class=\"selected\"';?> >
      <a id="sel" href="index.php?navi=Home" >Home</a>
</li>

Sobald auf einen Link gedrückt wurde, soll in das $_GET Array ein Wert geschrieben werden. Dieser wird dann mit PHP ausgelesen und entsprechend die Klasse (und später auch die ID) zugewiesen. Folgende Probleme treten auf:

1.) Hier wird nicht in das GET Array geschrieben. Sowas wie method="get" fehlt.
2.) Ich glaube, dass in in einem Tag kein PHP plazieren kann.

Kann man mein Problem lösen, sodass ich nur eine html/php Datei brauche und die Klasse/ID automatisch dem aktuellen Listenelement zugewiesen wird?

Vielen Dank
lg, freakXHTML
 
Werbung:
HAHAHAHA...ich habe das Problem nach zwei Sekunden gelöst. Ich muss nur die einzelnen Hochkommatas durch doppelte ersetzen. Wahnsinn. Das hätte ich nie gedacht!!!! Es heißt also:

HTML:
<li <?php if ($_GET['navi']=='Home')
      echo "class=\"selected\"";?> >
      <a id="sel" href="index.php?navi=Home" >Home</a>
</li>

Da habe ich mich ausnahmsweise mal selbst übertroffen! Ich bin gerade stolz, obwohl es nichts Tolles ist. Ich bin nur sehr überrascht!!

HAHA.
lg, freakXHTML
 
Sorry, aber das ist Unsinn! Es sieht eher so aus, als hättest du den Code aus deinem Script nicht per copy&paste gepostet sondern hier im Forum nachprogrammiert. Ob ' oder " macht absolut keinen Unterschied, wenn du richtig escapsed und keine Escapesequenzen verwendest.
 
Werbung:
Ich habe nichts anderes geändert. Ich schätze mal, dass bei einfachen Anführungsstrichen der Inhalt nicht interpretiert wird. Nimm dieses Beispiel:
PHP:
 $foo = 4;
 echo 'Eine Zahl: $foo';
 echo "Eine Zahl: $foo";

Ich habe wirklich nicht mehr geändert.

lg, freakXHTML
 
Das Stimmt! In deinem Code ist von einer Variablen ziwschen Single-Quotes aber nichts zu sehen. Daher bitte immer echten Code posten (via copy&paste) und nicht irgendwas in der Textbox des Forums Zusammengeschustertes.
 
Ich habe nichts verändert. Wirklich. Was sollte mir das bringen???

Ich habe aber keine Lust mich zu streiten. Glaub was Du willst.

Danke trotzdem
lg, freakXHTML
 
Werbung:
Normalerweise macht man es so:

PHP:
<li<?php if ($_GET['navi']=='Home')
      echo ' class="selected"'; ?>>
      <a id="sel" href="index.php?navi=Home" >Home</a>
</li>

Dokuseite zum Thema Strings:

- PHP: Strings - Manual

Dort heißt es unter anderem:

Handbuch schrieb:
Note: Unlike the three other syntaxes, variables and escape sequences for special characters will not be expanded when they occur in single quoted string s.

Damit ist sowas wie "\n" gemeint, was nur innerhalb von doppelten Anführungszeichen zu einem Zeilenumbruch erweitert wird.
 
Zurück
Oben