[PHP] Include Menü

Amroc

Stammgast
Damit ich das Menü meiner Homepage bei einer Änderung nicht auf allen Seiten nachtragen muss, möchte ich es per include auf allen Seiten einfügen.
Ich bin folgendermassen vorgegangen.

Die Datei, die das Menü beinhaltet (menu.htm im Ordner '/pages/'):
PHP:
<ul>
    <li id="navi01"><a href="index.html" target="_self" title="Zur Startseite">Startseite</a></li>
    <li id="navi02"><a href="kontakt.html" target="_self" title="Zum Kontaktformular">Kontakt</a></li>
</ul>

Auf der Seite, wo das Menü eingefügt werden soll (index.htm im Ordner '/'):
PHP:
<div id="navibereich">
	<?php include('/pages/menu.htm'); ?>
</div>
Wenn ich die Seite nun über XAMPP im Browser anschaue, wird sie angezeigt, allerdings ist das Menü nicht vorhanden. Es erscheint auch keine Fehlermeldung...
 
Zuletzt bearbeitet:

Dragonlord

PCtipp-Moderation
Teammitglied
Änderungen

Damit ein "include" funktioniert muss Deine Datei index.php heissen. Sonst kann der PHP-Interpreter die Datei gar nciht einbinden.

Datei: menu.php
Code:
<?php
[COLOR=SeaGreen]echo [/COLOR]'[COLOR=#000000][COLOR=#007700]<[/COLOR][COLOR=#0000bb]ul[/COLOR][COLOR=#007700]>';
    echo '<[/COLOR][COLOR=#0000bb]li id[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"navi01"[/COLOR][COLOR=#007700]><[/COLOR][COLOR=#0000bb]a href[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"index.html" [/COLOR][COLOR=#0000bb]target[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"_self" [/COLOR][COLOR=#0000bb]title[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"Zur Startseite"[/COLOR][COLOR=#007700]>[/COLOR][COLOR=#0000bb]Startseite[/COLOR][COLOR=#007700]</[/COLOR][COLOR=#0000bb]a[/COLOR][COLOR=#007700]></[/COLOR][COLOR=#0000bb]li[/COLOR][COLOR=#007700]>';
    echo '<[/COLOR][COLOR=#0000bb]li id[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"navi02"[/COLOR][COLOR=#007700]><[/COLOR][COLOR=#0000bb]a href[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"kontakt.html" [/COLOR][COLOR=#0000bb]target[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"_self" [/COLOR][COLOR=#0000bb]title[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"Zum Kontaktformular"[/COLOR][COLOR=#007700]>[/COLOR][COLOR=#0000bb]Kontakt[/COLOR][COLOR=#007700]</[/COLOR][COLOR=#0000bb]a[/COLOR][COLOR=#007700]></[/COLOR][COLOR=#0000bb]li[/COLOR][COLOR=#007700]>';
echo '</[/COLOR][COLOR=#0000bb]ul[/COLOR][COLOR=#007700]>';[/COLOR][/COLOR]
?>
Datei: index.php
Code:
[COLOR=#000000]<div id="navibereich">
    [COLOR=#0000bb]<?php [/COLOR][COLOR=#007700]include [/COLOR][COLOR=#dd0000]'/pages/menu.php'[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000bb]?>
[/COLOR]</div>[/COLOR]
lg Roger
 
Zuletzt bearbeitet:

Amroc

Stammgast
Ah super! Ich dachte es reicht, wenn ich include mit den php tags aufrufe.
Musste bei der menu.php Datei noch die folgende Änderung machen, sonst wurde "echo" und die ";" auch ausgegeben

PHP:
<ul>
    <li id="navi01"><a href="index.html" target="_self" title="Zur Startseite">Startseite</a></li>
    <li id="navi02"><a href="kontakt.html" target="_self" title="Zum Kontaktformular">Kontakt</a></li>
</ul>

Besten Dank für deine schnelle Hilfe, dann kann's jetzt endlich weiter gehn mit meiner Homepage. War sicher nicht die letzte Frage hier ;)
 

Dragonlord

PCtipp-Moderation
Teammitglied
Richtig

Ich habe die PHP-Einleitung/-Abschluss vergessen und habe dies nun korrigiert.

Ich selber würde es mit den PHP-Tags machen, weil meistens die Navigation nachher auch dynamisch aus der Datenbank geholt wird.

lg Roger
 

Amroc

Stammgast
Ah ja, mit den php tags funktionierts jetzt.

Bin mir gerade am überlegen, ob ich nicht auch den content Bereich auch includen soll, also nicht, dass er die ganze seite wechselt, wo dann das menü und auch das drumherum immer neu geladen wird.
Wie hast du das jeweils gelöst?
 

Dragonlord

PCtipp-Moderation
Teammitglied
Inlcude

Ich habe es meistens mit inlcude gelöst. Es gibt mir heute eine bessere Übersicht über die vorhanden Dateien und Pfade. So bleibt auch der Code übersichtlicher und lesbarer.

Meine Ordnerstruktur sieht heute folgendermassen aus:

  • bilder
  • content
  • css
  • template
Innerhalb des Templates befinden sich die Navigation, Titel/Logo, Fusszeile, etc.

lg Roger
 
Oben