PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kennt hier jemand etwas über html, php und co



Reisebär
24.09.2021, 22:52
Ich habe ein Problem.
Baue gerade eine Webseite.
Dafür habe ich beispielsweise für header und footer jeweils eine eigene Datei, die ich mittels `include´ in alle Unterseiten einbinde.
Die Grundseiten liegen direkt im Stammverzeichnis.
Der Code ist:
<?php include('header.php'); ?>
Wenn ich hier bei den Seiten den Header und Footer mit include einbinde, klappt alles einwandfrei.
Es werden auch die Buttons und Bilder angezeigt, die im Unterordner /img niedergelegt sind.
Die sind in der header.php eingebunden wie im folgenden Muster
<a href="index.php"><img src="img/aktuelles.png" width="121" height="26" alt="aktuelles" /></a>
das klappt also

Nun muss ich wegen der Übersichtlichkeit aber auch etliche Dateien in diverse Unterodner einordnen.
Und dort natürlich auch den Header mittels include einbinden.
Das Einbinden des headers klappt zwar, aber statt der Buttons und Bilder kommen dann nur noch Platzhalter
ich habe auch schon versucht, den Code entsprechend zu ändert in
<?php include('../header.php'); ?>
Aber der Header greift im Unterordner einfach nicht auf die Bilder und Buttons zu.
Kann sich jemand erklären, warum nicht?

felin
25.09.2021, 09:35
Etwas schwierig mit einer Ferndiagnose...
stimmt denn der Pfad zu den Bildern/Buttons noch wenn Du auf einer der Unterseiten bist?
Befindet sich Deine index.php auf der selben Ebene wie der Rest der Webdateien? Die Index ist meist eine Ebene höher.
Deine Daten die im Header sind, hast Du im Ordner "includes" abgelegt?

Reisebär
25.09.2021, 11:33
Nein, einen extra Ordner include habe ich (noch) nicht.

Wenn ich das richtig verstehe, müsste ich die header.php, footer.php und die entsprechenden Grafiken im Ordner include ablegen und dann die Pfade entsprechen anpassen?

Das wäre dann bei der index.php im Stammverzeichnis z.B. der Code
<?php include('include/header.php'); ?>

und bei Dateien im Unterodner der Code
<?php include('../include/header.php'); ?>

Habe ich das in etwas richtig verstanden?
Werde mal versuchen.

felin
25.09.2021, 12:21
Bin mir gerade nicht sicher, ob die Header und Footer in den Ordner include muss. Die dazu gehörigen Dateien aber ja.

Reisebär
25.09.2021, 12:27
Bin mir gerade nicht sicher, ob die Header und Footer in den Ordner include muss. Die dazu gehörigen Dateien aber ja.

Ich glaube, wir sind auf dem richtigen Weg.

slowman
25.09.2021, 13:02
Ich denke mal, Du musst auch den Pfad in <img src="img/aktuelles.png" ...> entsprechend anpassen. Also "/img/...", "../img/..." oder so etwas.

Reisebär
25.09.2021, 13:38
Ich denke mal, Du musst auch den Pfad in <img src="img/aktuelles.png" ...> entsprechend anpassen. Also "/img/...", "../img/..." oder so etwas.

Also intern imm Header mit ../ auch zurück ins Hauptverzeichnis verweisen.

felin
25.09.2021, 14:10
Header und Footer haben auf den Unterseiten immer den gleichen Inhalt.
Wenn Header und Footer.php als solches einwandfrei funktionieren, auf den Seiten wo Du sie haben willst so einbinden:
<?php
include 'header.php';
?>
Inhalt der Seite
<?php
include 'footer.php';
?>
In diesem Bsp. muss die Index, Header und Footer auf der selben Ebene sein.

Reisebär
25.09.2021, 14:57
Header und Footer haben auf den Unterseiten immer den gleichen Inhalt.
Wenn Header und Footer.php als solches einwandfrei funktionieren, auf den Seiten wo Du sie haben willst so einbinden:
<?php
include 'header.php';
?>
Inhalt der Seite
<?php
include 'footer.php';
?>
In diesem Bsp. muss die Index, Header und Footer auf der selben Ebene sein.

Danke, das war wohl der Knackpunkt.
Weil ich immer versucht habe, header und footer im Stammverzeichnis aus dem Unterordner, also anderer Ebene anzusprechen.

felin
25.09.2021, 15:40
Das Einbinden des headers klappt zwar, aber statt der Buttons und Bilder kommen dann nur noch Platzhalter
ich habe auch schon versucht, den Code entsprechend zu ändert in
<?php include('../header.php'); ?>
Aber der Header greift im Unterordner einfach nicht auf die Bilder und Buttons zu.
Kann sich jemand erklären, warum nicht?

Wie gesagt, ich kenne ja die Verzeichnisstruktur von Dir nicht....
Lag mehr als eine Ebene zwischen Index und Header/Footer?
Dann müsstest Du für jede Ebene "../" angeben, also z.B. bei 2 Ebenen <?php include('../../ header.php'); ?>

Reisebär
25.09.2021, 19:23
@felin
Lass uns erst ein paar Begrifflichkeiten klären, das wir nicht aneinander vorbei reden.
Ich spreche vom Stammverzeichnis.
Das ist ja das Grundverzeichnis auf das zugegriffen wird, mit z.B. der URL
https://example.com/
Dadurch wird automatisch nach einer index-Datei gesucht, die dann aufgrufen wird

Ich habe noch ein sehr flache Verzeichnisstruktur
Bislang nur auf zwei Ebenen.
Im Stammverzeichnis befinden sich die
index.php
header.php
foorter.php
in der nächsten Ebene befinden sich dann die Ordner
/img
/includes
/thema1
/thema2
(aber noch ohne Unterordner, also ohne weitere Ebene)

Das Einbinden von header und footer inkl. der Buttons und Bilder in die index.php klappt einwandfrei.

Es geht darum wenn ich eine andere Datei in die Ebene höher einsetze.
also z.b. /thema1/test.php

Dann muss ich in diesen Ordner /thema1 auch die haeder.php speichern, nicht nur im Stammverzeichnis?
In der header.php aber die Zugriffe auf die Bilddateien modifizieren z.B. so:
<a href="../reise.php"><img src="../img/button-reise.png" width="121" height="26" alt="Reise" /></a>

Aber ich werde es später selber mal so probieren.
Jetzt ist erst mal Bier Uhr
Schönen Samtag Abend wünsche ich euch.

felin
25.09.2021, 21:59
Du bringst mich gerade ins Schleudern :sad:
Frage 1: im Ordner /thema1 befindet sich die reise.php ?
Frage 2: in der reise.php möchtest Du den Header und Footer ?

Wenn ja binde in der reise.php den header aus dem Stammverzeichniss so ein:
<?php include('../header.php'); ?>
ohne ihn auch im Ordner /thema1 gespeichert zu haben
Da die header.php ja alle nötigen Daten besitzt, ist dort keine Modifikation des Pfades für Bilder und Button nötig.

Reisebär
25.09.2021, 22:33
Du bringst mich gerade ins Schleudern :sad:
Frage 1: im Ordner /thema1 befindet sich die reise.php ?
Frage 2: in der reise.php möchtest Du den Header und Footer ?

Wenn ja binde in der reise.php den header aus dem Stammverzeichniss so ein:
<?php include('../header.php'); ?>
ohne ihn auch im Ordner /thema1 gespeichert zu haben
Da die header.php ja alle nötigen Daten besitzt, ist dort keine Modifikation des Pfades für Bilder und Button nötig.

Zu Frage 1: JA
Zu Frage 2: JA

ABER:
wenn ich in der reise.php den header einibinde mit:
<?php include('../header.php'); ?>
erscheint zwar der header, aber eben ohne die Bilder.
Da liegt das Problem.

slowman
27.09.2021, 22:33
So wie ich es jetzt verstehe, liegen die Bilder alle im Verzeichnis /img, unabhängig davon, wo z. B. die header.php liegt. Dann muss es also statt
<img src="img/aktuelles.png" ...>
wie folgt heißen:
<img src="/img/aktuelles.png" ...>

Reisebär
27.09.2021, 22:43
So wie ich es jetzt verstehe, liegen die Bilder alle im Verzeichnis /img, unabhängig davon, wo z. B. die header.php liegt. Dann muss es also statt
<img src="img/aktuelles.png" ...>
wie folgt heißen:
<img src="/img/aktuelles.png" ...>

Danke Slowmann.
Du hast das richtig verstanden.
Die Bilder sind alle im Ordner /img im Stammverzeichnis.
Das Problem ist aber das rückadressieren, wenn eine Datei in einem anderen Unterverzeichnis liegt.
mit der indes.php, die im Stammverzeichnis ist, adressiere ich mit
adressiere ich mit
<img src="img/aktuelles.png" ...>

Was ich wollte, für jeden Tehembereich ein eigenes Verzeichnis, in dem dann auch die jeweilige ....php liegt.
Die header.php aber weiterhin im Stammverzeichnis.
Nach meiner Logik hätte es da reichen müssen, wenn ich dann adressiere als
<img src="../img/aktuelles.png" ...>
weil meines Wissens nach das ../ den befehl erzeugt, zunächst ins vorherige Verzeichnis (also in meinem das Stammverzeicnis) zurück, dort das Verzeichnins /img aufrufen und das jeweilige Bild.

Aber nichts klappt. Ich weiß nicht mehr warum
Aber ich strukturiere jetzt komplett wieder um.
Ich werden nun alle php-Dateien zu den einzelnen Themen im Stammverzeichnis plazieren, und nur noch Bilder und Dokumente in andere Verzeicnisse auslagern.

Reisebär
28.09.2021, 09:45
So Thema durch.
So wie ich es geplant habe geht es nicht.
Ist ja auch logisch.
Wenn ich den header im Stammverzeichnis habe und ihn dann mit include in einem Unterodner in die Datei einbaue, passen ja die Linkpfade garnicht mehr.
Daher muss ich einfach im Header alle Bilder und Buttons mit der kompletten URL eingeben, dann klappts auch.
Also als:
<img src="https://meineseite/img/aktuelles.png" ...>
Dann klappts auch mit den Bildern.

slowman
28.09.2021, 16:59
Nein, es genügt, wenn Du schreibst:
<img src="/img/aktuelles.png" ...>
Wichtig ist der erste Schrägstrich.
Dann wird immer auf die Grafik im Ordner /img zugegriffen, egal aus welchem Ordner heraus der Zugriff erfolgt.