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

Problem bei interner Verlinkung

ale200sx

Neues Mitglied
von Unterordner auf Hauptordner zugreifen

Schönen guten Abend.
Bin neu hier und lese schön des öfteren hier.
Ich nutze mal den Thread und verbinde es mit meinem Problem.
Ich sitze grad an meiner ersten Internet Seite daher bin ich noch ein ziemlicher neuling was die ganze programmierung angeht. Hab mich die letzte Zeit etwas mit php beschäftigt.
Also zu meinem Problem:
Alle Seiten auf Alex Haala | Home bestehen hauptsächlich aus 4 php dateien, Header/navi/content/footer.
So, wenn ich jetzt zB meine Gallery nehme die im Hauptverzeichnis liegt brauch ich ja keinen langen link nur zB <a href="/gallery.php"> oder in php halt <? include("/gallery.php") ?> aber wie sieht es aus wenn eine php oder html seite in 4 unterordner liegt.
Das ich dann ../../../../ davor schreiben muss ist klar. Das eigentliche Problem an der Sache ist aber die links im header/navi und footer. Denn da ist egal auf welcher Seite ja der inhalt gleich. Nur wenn ich auf einer Seite die in 4 unterordner die header.php verlinke dann zeigt er mir keine Bilder und und und da die links dann in der header.php ja falsch sind. Wenn ich das /... vor mache gehts wieder. Kann ja aber nicht sein das wenn ich ein neuen unterornder anlege ich jedes mal links in der header und footer.php ändern muss, oder?
Meine frage ist jetzt:
Kann ich irgendwie auf den Hauptordner zugreifen von jedem unterordner. Also ich dachte immer es wäre das einfache / was direkt auf das hauptverzeichnis weist. Klappt aber irgendwie nicht.

Ich hoffe ihr versteht jetzt mein Problem und mir kann jemand helfen.
 
hättest ein eigenes thema eröfnnen können, sonst kommt der OP da oben zu kurz und übersicht geht verloren. hier im forum nicht mit themen sparen, dafür gibts die funktion ;-).

wenn eine seite über mehrere instanzen hinweg in unterordnern liegt, muss nur auf den inhalt verlinkt werden, kopf und fuß können doch gleich bleiben...

PHP:
<?php
/* untergeordnet.php */
include('koph.php');

//vier ordner weiter unten:
include('folder1/folder2/folder3/folder4/file.ext');

include('fuss.php');
?>

"untergeordnet.php" kann durchaus im root-verzeichnis liegen, da wo auch kopf und fuß bereitstehen, lediglich muss auf den inhalt verlinkt, bzw. gezeigt werden. das ist doch das schöne an PHP: ordner und hierarchische verschachtelungen werden fr den programmierer zur nebensache und können mit einem klick geändert werden.

du befindest dich immernoch im hauptverzeichnis, es wird nur auf den inhalt vier ordner weiter unten verwiesen, was aber der benutzer, der deine sturktur nicht kennt, auch nicht mitbekommt.

Nils aka XraYSoLo
 
Also ich mach jetzt nochmal ein neues Thema dafür auf.
Die vorherige problemstellung kann man hier nachlesen

Vorheriger thread.

@XraYSoLo
Danke für die antwort aber soweit verstehe ich das schon. Um es nochmal ein wenig zu verdeutlichen was bei mir nicht funktioniert.

Das verzeichnis der php wo die header.php eingefügt werden soll sieht wie folgt aus:

Alex Haala | Skyline Shooting
Code:
www.alex-haala.de/2009/05/gallery/skyline.php

die header liegt im verzeichnis

www.alex-haala.de/header.php
Code:
www.alex-haala.de/header.php

soweit einfach.

Jetzt hab ich ja ganz einfach in der skyline.php ein

<? include("/header.php") ?> probiert. Geht nicht also hab ich die ganzen mist mit den /.. probiert.
Also sah der link so aus:

<? include("../../../header.php") ?>

So geht es auch aber das Problem ist, dass die Bilder in der header.php nicht angezeigt werden da diese aus dem root verzeichnis aus verlinkt sind. Normaler weise müsste ich jetzt in jedem Link der header.php ein /../../../.. davor einfügen. Das würde auch gehen, aber ich möchte nicht, dass ich bei jedem neu angelegten unterverzeichnis alle links wieder ändern muss.
Hoffe jeder kann damit was anfangen.
 
Nimmste eben absolute Pfade. Liest die ServerURL aus, damit das weiterhin dynamisch bleibt, falls sich mal was ändern sollte in Sachen Domains und haust die anstelle der "../../../" dort hin.
 
Ich sitze grad an meiner ersten Internet Seite daher bin ich noch ein ziemlicher neuling was die ganze programmierung angeht.
Für statische Websites braucht man keine Programmierung. HTML und CSS sind keine Programmiersprachen, aber schon mit den beiden kann man anständige Websites machen.

So, wenn ich jetzt zB meine Gallery nehme die im Hauptverzeichnis liegt brauch ich ja keinen langen link nur zB <a href="/gallery.php"> oder in php halt <? include("/gallery.php") ?> aber wie sieht es aus wenn eine php oder html seite in 4 unterordner liegt.
Die Länge einer URL hat nichts zu sagen :-)
Die URL beginnt aber immer beim Document-Root des Webservers und nicht beim Root des Filesystems.
Dein Link oben ist richtig, weil dort eine URL angegeben wird, das include() wird aber nicht klappen, denn dort wird keine URL angegeben, sondern eine Datei, und die muss man im Filesystem angeben.
So ein Filesystem kannst Du Dir als Baum vorstellen. Ganz oben ist das Root-Verzeichnis (/). Um eine Ebene tiefer zu gelangen, gibt man den Namen des Verzeichnisses an (z.B. /htdocs). Um eine Ebene höher zu gehen, gibt man ".." an. "." steht für das aktuelle Verzeichnis.
So ist ./ also das selbe wie / oder /htdocs/../

Bei Angabe einer relativen URL (die also nicht im Root beginnt), ist es immer wichtig, welches das aktuelle Arbeitsverzeichnis ist. In der Regel ist das das Verzeichnis, in dem das Script/die Seite steht, die gerade bearbeitet wird. Steht Dein Stylesheet in einem anderen Verzeichnis als Deine HTML-Seite, hast Du zwei unterschiedliche Ausgangsverzeichnisse für den HTML- und den CSS-Teil.

Kann ich irgendwie auf den Hauptordner zugreifen von jedem unterordner. Also ich dachte immer es wäre das einfache / was direkt auf das hauptverzeichnis weist. Klappt aber irgendwie nicht.
Das ist richtig so. Aber vielleicht liegt Dein Problem im Unterschied des include(). Wenn Du auf Dateien verweist, musst Du den absoluten Pfad im Filesystem angeben, das / vom Document-Root des Webservers wird dann z.B. zu /usr/local/httpd/htdocs.
Hier bietet sich auch an, $_SERVER["DOCUMENT_ROOT"] zu benutzen, was Dir den Pfad im Filesystem zum Document-Root des Web-Servers gibt. include() mit absoluten Pfaden könnte also so aussehen:
Code:
include($_SERVER["DOCUMENT_ROOT"]."/scripts/menu.inc.php");

Gruß,
-Efchen
 
Zurück
Oben