Include macht Probleme (CSS & Kopf)

Guten Abend,

ich habe in meine Seite den Befehl include eingebaut. Es war übrigens der erste Befehl, den ich flächendeckend für meine Seite von php benutzte, da ich darin noch keine Erfahrung habe.
Leider funktioniert das include ab der zweiten Ordnerebene nicht mehr vollständig. Damit meine ich, wenn ich eine php-Datei in einem Unterordner aufrufe, wird diese nicht mehr richtig dargestellt.

Hier mal der Link zur Seite:http://volner-reisel.bplaced.net/index.php

Beispielseite im Unterordner (galerie/fotografie.php)

[code]

<?php include ("../_bausteine/head.php"); ?> Volner Reisel - Fotografie
<?php include ("../_bausteine/kopf.php"); ?> <?php include ("../_bausteine/menue.php"); ?>

Fotografie


Hier kann man meine selbstgeschossenen Fotos betrachten.

Galerie 1
Diverses
Galerie 2
Türkei 2008
Galerie 3
Naturwildpark
[/code]

head.php

[code]

[/code]

kopf.php

[code]


[/code]

Kann mir jemand verraten, wo der Fehler liegt? Denn das Menü wir auf allen Seiten dargestellt, auch wenn die Links dann nicht mehr funktionieren.

Schon mal vielen Dank im Voraus.

Gruß Elsner

Entschuldigt bitte. Durch herumexperimentieren habe ich es gelöst. Anscheinend müssen bei den Links, welche durch include eingefügt werden, an Anfang noch ein Schrägstrich stehe.

Beispiel:
html=…/design.css
php=/…/design.css

Wenn ich widererwartend falsch liegen sollte, könnt ihr euch trotzdem gerne dazu äußern. Aber momentan scheint es zu funktionieren.

Ich kann dein Problem nicht erkennen …

… und auch hier wieder mal nur anmerken, dass “funzt nich” keine brauchbare Problembeschreibung ist.

href="/…/design/favicon.ico"

sieht mir für (X)HTML, welches per HTTP ausgeliefert wird, sehr
merkwürdig aus. In der Regel kann/darf der server auf solche
Verzeichnisse gar nicht zugreifen…

Jedenfalls sind relative Pfade innerhalb von href und
ähnlichen Attributen immer von der aufgerufenen/ausgegebenen
Datei aus anzugeben, nicht von der per include eingebetteten.
Das ist bei relativen Pfaden in PHP ähnlich. Bei den
(X)HTML-Pfadangaben muß zudem die Zieldatei auch noch in
einem für HTTP zugänglichen Verzeichnis liegen.

Vielen Dank hoffmann, für die Rückmeldung. Leider muss ich zugeben, dass ich deinem Text nicht ganz folgen kann. Wahrscheinlich fehlt mir dafür noch das Verständnis.

Wie würde das in meinem Fall den konkret aussehen?
Schon mal danke.

Gruß Elsner

PS: Mag sein, das es etwas verkehrt ist. Aber deshalb habe ich in meinem vorherigen Beitrag auch gegebenenfalls um eine Rückmeldung gebeten. Gestern war ich erst mal froh, dass es für meine Zwecke funktioniert hat.

Unter der oben angegebenen URI sehe ich jetzt kein Problem
oder eine Fehlermeldung von PHP.

Du solltest also exakt eine URI angeben, bei der ein Fehler oder
ein Problem auftritt und dieses präzise beschreiben.

Sowas wie
href="/…/kontakt.php"
scheint zumindest mein browser automatisch zu korrigieren,
zu “…/kontakt.php” und dann schließlich als absoluter Pfad
volner-reisel.bplaced.net/kontakt.php

Ich glaube allerdings nicht, daß der browser die erste Korrektur
machen muß, sieht mir eher so aus, als täte er nach Feststellung
der Sinnlosigkeit der Angabe raten, was gemeint sein könnte.

Danke hoffmann. Die fehlerhafte Seite kannst du nicht mehr sehen, da ich es gestern noch irgendwie hinbekommen habe.

Ich habe jetzt nochmal etwas herum gespielt mit den Pfadangaben und PHP verwirrt mich immer mehr.
Kann es sein, dass die Pfade bei PHP vom Root-Verzeichnis aus angegeben werden müssen?
Weiterhin funktionieren alle Pfade (Links) nur, wenn ich zusätzlich einen Schrägstrich voran stelle. Ist das normal bei PHP?
Beispiel CSS:<link rel="stylesheet" href="/_bausteine/design/design.css" type="text/css">

Ich hoffe, das ist keine zu dumme Frage. Aber das sind nunmal meine erste Schritte bei PHP und hoffe, ihr verzeiht mir das.

Gruß Elsner

Das angegebene Element link gehört ja vermutlich zu (X)HTML,
hat aber sicherlich nichts oder wenig mit PHP zu tun.

Wenn du relative Pfade angibst, kommt es eben darauf an,
was der Bezugspunkt ist. Wenn nichts anderes angegeben ist
(ginge mit xml:base bzw base), ist das aktuelle Dokument der
Bezugspunkt.
Wenn das in einem Unterverzeichnis liegt, ist
href="/_bausteine/design/design.css"
(im Hauptverzeichnis gibt es das Unterverzeichnis _bausteine/ etc)
natürlich was anderes als
href="_bausteine/design/design.css"
(im gleichen Verzeichnis gibt es das Unterverzeichnis …)
und eventuell auch als
href="…/_bausteine/design/design.css"
(im übergeordneten Verzeichnis gibt es das Unterverzeichnis…)

Das kann etwas verwirrend sein, wenn man das Dokument per
PHP include aus Fragmenten zusammensetzt, die in
verschiedenen Unterverzeichnissen liegen oder noch ärger, wenn
die einbindenden Dateien in verschiedenen Unterverzeichnissen
(auf verschiedenen Ebenen liegen). Maßgeblich für den Verweis
in (X)HTML ist nicht, woher PHP die Datei bekommt, sondern
nur die Ausgabe, nachdem PHP abgearbeitet ist, denn der browser
sieht nur das Endergebnis und wertet das aus.

Da href="/_bausteine/design/design.css" vom Hauptverzeichnis
(der subdomain) aus gesehen ist, wird das jedenfalls immer
funktionieren, egal in welchen Unterverzeichnissen die
eingebundenen und einbindenden Dokumente liegen. Das ist
gegebenenfalls nur unnötig lang, wenn der Pfad so etwa
in “/_bausteine/design/beispiel.html” steht.

Wenn da was bei (X)HTML-Verweisen nicht geht, mußt du
eigentlich nur mit dem browser in die ausgegebene Datei gucken.
Wie die erzeugt wurde, ist dabei völlig belanglos.

Nein. Auch PHP kann relative Pfadangaben nutzen.

Das, was du gezeigt hast, ist nicht mal PHP …
Mach dir erst mal den Unterschied zwischen einem Zugriff auf Dateien über das lokale Dateisystem des Servers, und dem Zugriff auf Ressourcen über HTTP klar.

Und dann lies de.selfhtml.org/html/allgemein/referenzieren.htm aufmerksam durch.

Nochmals vielen Dank hoffmann. Da muss ich mir wahrscheinlich noch einiges aneignen, wenn ich mir deinen Beitrag so ansehe. Ich gelobe Besserung und durch meine Fehler habe ich ja jetzt schon dazu gelernt. Danke.

wenn du gerade am PHP lernen bist empfehle ich dir, sowohl die offizielle PHP-Dokumentation (http://www.php.net/manual/de/) nebenher zu nutzen, als auch das Tutorial von Quake-Net (http://tut.php-quake.net/de/).

Da findest du z.B. auch Informationen über das Einbinden von Dateien per include():

Das dürfte Probleme mit Pfadangaben in PHP eigentlich generell lösen.

Greetz
:sun:
Kaytir

Danke für die Hilfe! Die Tipps konnte ich gut gebrauchen… !haue