Variable nicht definiert - Kleines Problem bei Funktion

PHP:
if(strpos($page, 'aktuelles') !== false){
    //TODO: Mach was, es enthält 'aktuelles'
}

geht auch mit strstr() etc.
 
Guten Morgen zusammen,

das mit PHP ist nicht so einfach und man erkennt erst bei genauem Hinsehen die Probleme.

Ich dachte das wär jetzt die Lösung, aber leider gibt es ein Konflikt, wenn die Dateinamen selbe Wörter enthalten.

Z.B: gibt es auf der Hauptnavigation den Punkt "Fotostudio"
In einer Unternavigation gibt es unter einem anderen Punkt GALERIE die Seite "meine_fotos"

Heißt, ich kann die If-Abfrage:

PHP:
if(strstr($page, $navilink_pruefung) !== false){ 
	echo "class='active' id='{$icon_name_an}'";
}//end if

in dem Fall nicht nehmen, da die Dateinamen "fotostudio.php" und "aktuelle_fotos.php" jeweils das Wort "foto" enthalten und somit beide Links auf der Hauptnavie "Fotostudio" und "Galerie" als aktiv geschalten werden, auch wenn ich im Fall eins auf der Hauptnavigation die Variable $navilink_pruefung auf das Wort "studio" prüfen lasse und in der Unternavigation auf "foto".
Es scheint so, als ob er die gesamte Ordnerstruktur durchscannt.

Gibt es dafür eine gute Lösung:

Eine Idee wäre die page-Variable nur auf den Teil vor dem Untestrich prüfen zu lassen, bis der Unterstrich "_" im Namen erscheint.
Wie man das umsetzt weiß ich leider nicht und dann gäbe es das Problem, dass die meisten Seiten keine Unternavigation haben und somit deren Dateinamen auch keine Unterstriche besitzen.

Danke für eure Tipps.

VG
 
Zuletzt bearbeitet:
Mein Tipp. Bau eine saubere Navigation. Das ganez an Dateinamen aufzuhängen ist mehr als Zweifelhaft
 
Hi,

die Navigation habe ich sauber aufgebaut. Es geht letztendlich nur um den Status "aktiv" oder nicht und demenstprechend bekommt die aktive Seite eine andere Linkfarbe in der Navigation.
Die bisherige Lösung funktioniert auch einwandfrei, leider mit dem obigen Problem, dass jetzt 2 Links als aktiv markiert werden.

In meiner früheren HTML-Version habe ich auf jeder Unterseite diese mit einem class="active" und mit einer anderen icon-URL manuell setzen müssen. Diese Arbeit sollte mir jetzt PHP abnehmen, auch wenn ich die Navi um weitere Links erweitere oder ggf. welche lösche.
 
Zuletzt bearbeitet:
Die muss nicht zwingend über pures PHP laufen. Eine zweite Lösung zur Vollständigkeit wäre dem Body eine Klasse zu geben:

<body class="<?PHP echo $page; ?>">

Das wird zum Beispiel dann zu

<body class="aktuelles">

Als CSS-Regel legst Du dann folgendes an:

body.aktuelles a.aktuelles,
body.impressum a.impressum {
color: #ACDC73;
}

Etwas einfacher Aufgebaut mit dem gleichen Effekt. Noch einfacher geht es natürlich per JavaScript.
http://www.apaddedcell.com/highlight-links-current-page-css
 
alles lieb gemeint, aber ich bin ja kurz vor dem Ziel und es geht ja zu 98%, so dass ich daran festhalten möchte. Ich habe den style-Wechsel mit einer CSS-Regel umgesetzt.

Die muss nicht zwingend über pures PHP laufen. Eine zweite Lösung zur Vollständigkeit wäre dem Body eine Klasse zu geben:

<body class="<?PHP echo $page; ?>">

Das wird zum Beispiel dann zu

<body class="aktuelles">

Als CSS-Regel legst Du dann folgendes an:

body.aktuelles a.aktuelles,
body.impressum a.impressum {
color: #ACDC73;
}

Etwas einfacher Aufgebaut mit dem gleichen Effekt. Noch einfacher geht es natürlich per JavaScript.
http://www.apaddedcell.com/highlight-links-current-page-css
 
auch dir danke für den Tipp, vielleicht nächstes mal.

Ich habe geknobelt und endlich selbst die Lösung gefunden:

PHP:
$dateinamen_teil = preg_split( '[_]', $page );

Dadurch bekomme ich das erste "Wort" über $dateinamen_teil[0] des Dateinamens und kann dieses mit meiner Variablen $navi_pruefung in meiner Funktion vergleichen.

Es funktioniert nun einwandfrei. :)

Wenn du es aber doch über PHP probieren willst, dann speicherst du dir einfach alle Menüpunkte in einen Array und überprüfst beim Ausgeben jedes Menüpunktes, ob die Seite auf der der User gerade ist dem Menüpunkt entspricht.

Hier ein einfaches Beispiel für eine dynamische Navigation nach der Möglichkeit:
http://www.selfphp.info/praxisbuch/praxisbuch.php?group=43
 
Zuletzt bearbeitet:
Zurück