mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 12:38 Benutzername: Passwort: Auto-Login

Thema: [PHP] Navigation mit array -- Problem mit aktiven Links vom 22.04.2009


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] Navigation mit array -- Problem mit aktiven Links
Autor Nachricht
Unschuldsengel
Threadersteller

Dabei seit: 22.04.2009
Ort: 97437 Haßfurt
Alter: -
Geschlecht: Männlich
Verfasst Mi 22.04.2009 09:02
Titel

[PHP] Navigation mit array -- Problem mit aktiven Links

Antworten mit Zitat Zum Seitenanfang

Hallo Leute.

So, hier is er - mein erster Post. Grins

Ich bin PHP-Einsteiger und arbeite gerade an einer kleinen Website, bei der einige Bereiche (Headline, Footer, Navigation) mittels PHP-INCLUDE eingebunden werden. Dies klappt soweit auch ganz gut. Auf der linken Seite habe ich die Hauptnavigation, die in einer externen Datei (navigation.php) definiert ist und via INCLUDE geladen wird. Die Navigation selbst besteht aus einem assoziativen array. Ehrlicherweise muß ich sagen, das ich mir das aus einem Fachbuch abgeschaut habe und nicht selbst drauf gekommen bin. Der (allgemeine) Code ist wie folgt:


<? $menue = array(
"Seite1" => "seite1.php",
"Seite2" => "seite2.php",
"Seite3" => "seite3.php");
?>

<table>
<tr>
<? foreach($menue as $eintrag => $datei){
if ($datei == basename($_SERVER['PHP_SELF'])) {
echo "<td align=\"center\" bgcolor=\"#00FF00\">";
echo $eintrag;
echo "<td>!;
} else {
echo "<td align=\"center\" bgcolor=\"#c0c0c0\">";
echo "<a href=\"$datei\">$eintrag</a>;
echo "</td>;
}
}
?>
</tr>
</table>



Zum Code selber hab ich keine Fragen, das leuchtet mir alles ein. Ich hab es auch schon geschafft die Navi-Punkte vertikal anzuordnen (im Code oben sind sie ja horizontal nebeneinander). Das tolle (und auch die Ursache meines Problems) an dem Code ist ja, das aktivierte Links durch Vergleich mit der Systemvariablen $_SERVER deaktiviert werden und einen anderen Hintergrund bekommen, so das man immer sieht, wo man sich befindet.

Mein Problem liegt darin, das es in noch eine zweite Navigations-Hierarchie gibt
, die auf genau die gleiche Weise in den "Unter"Seiten eingebunden ist. Sprich: über das Hauptmenü (siehe oben) springe ich beispielsweise auf Seite 1 (also auf seite1.php). In Seite 1 gibt es eine zweite Navi-Leiste (wieder mittels INCLUDE eingebunden), über die ich auf weitere Unterseiten springen kann, z.B. seite1_topic2.php, seite1_topic3.php etc.

Wenn ich nun in dieser zweiten Navigation auf seite1_topic2.php springe, verliert der aktive Link in der Haupt-Navigation (siehe Code oben) natürlich das "Highlighting" des aktiven Links. Denn der aktuelle Dateiname (über die Systemvariable ausgelesen) stimmt ja nun nicht mehr mit der Varialbe $datei überein.


Ich hoffe, das einigermaßen verständlich ausgedrückt zu haben.

Wie kann ich es realisieren, das die Kennzeichnung der aktiven Links erhalten bleibt, auch wenn ich in anderen Unterseiten bin?

1) Vielleicht mit einer Anpassung des oben angegebenen Codes? Kann ich einer Variablen sagen, das sie nur die z.B. ersten 6 Stellen eines Wertes mit den ersten 6 Stellen einer anderen Variablen vergleichen soll? Meine Unterseiten heissen ja immer ähnlich, also seite1.php , seite1_topic2.php , seite1_topic3.php ...
Mir schwebt etwas der folgenden Art vor:


if (die_ersten_6_Stellen_von$datei == die_ersten_6_Stellen_von$basename($_SERVER['PHP_SELF'])) ...

Macht das Sinn? Mit welcher PHP-Anweisung geht das?

2) Oder irgendwie mit Variablen? z.B. das jede Unterseiten-Kategorie eine Variabe bekommt, und die bei der Navigation abgeglichen wird?


Ich bin für jede Anregung dankbar.
Vielen Dank schonmal,
Grüße
Michel

  View user's profile Private Nachricht senden
Nimroy
Community Manager

Dabei seit: 26.05.2004
Ort: zwischen Köln und D'dorf
Alter: 46
Geschlecht: Männlich
Verfasst Mi 22.04.2009 09:22
Titel

Antworten mit Zitat Zum Seitenanfang

die funktion für das Auslesen von Teil-Strings lautet substring()
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Unschuldsengel
Threadersteller

Dabei seit: 22.04.2009
Ort: 97437 Haßfurt
Alter: -
Geschlecht: Männlich
Verfasst Mi 22.04.2009 11:18
Titel

Antworten mit Zitat Zum Seitenanfang

Nimroy hat geschrieben:
die funktion für das Auslesen von Teil-Strings lautet substring()


Hey Nimroy, Vielen Dank. Das hilft mir doch schonmal weiter.

Ich kann erst heute Abend wieder daran arbeiten, aber mal so schlau gedacht - wäre der Code dann so korrekt:

Code:
<? $menue = array(
"Seite1" => "seite1.php",
"Seite2" => "seite2.php",
"Seite3" => "seite3.php");
?>

<table>
<tr>
<? foreach($menue as $eintrag => $datei){
if (substr($datei,0,5) == substr(basename($_SERVER['PHP_SELF']),0,5)) {
echo "<td align=\"center\" bgcolor=\"#00FF00\">";
echo $eintrag;
echo "<td>!;
} else {
echo "<td align=\"center\" bgcolor=\"#c0c0c0\">";
echo "<a href=\"$datei\">$eintrag</a>;
echo "</td>;
}
}
?>
</tr>
</table>




++++++++++++++++++++


UPDATE:
Hat geklappt, wie oben "vermutet". Also mit substr. Wunderbar, ich beginne PHP zu mögen.
Danke!!!


Zuletzt bearbeitet von Unschuldsengel am Do 23.04.2009 08:31, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
 
Ähnliche Themen Probleme mit den Links in der Navigation
Links aus Flash-Navigation in Div Box öffnen/laden
HTML/CSS - Navigation verschoben - Links kaputt
IE7 Navigation Fehler | zweizeilige links werden verschluckt
Navigation einer Website, Links erscheinen per Klick
Hilfe! Navigation soll sich nach rechts o. links verschieben
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.