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

HTML 5 und sonstige HTML Codes mit PHP includieren

Sash

Neues Mitglied
Guten Tag,

erstmal: ich freue mich, hier als neuer User teilhaben zu dürfen. Ich hoffe, ich kann hier mit eurer Unterstützung etwas über HTML, CSS, PHP, MySQL, Java Script und JQuery lernen, da ich in dieser Materie noch relativ unerfahren bin (habe aber schon gewisse theroretische Kenntnisse und versuche mich nun in der Praxis) :)

Als HTML-Editor verwende ich Scriptly.

Ich verwende den neuen HTML 5 Standart und bin relativ "pingelig", wenn es um sauberen bzw. validen Code geht XD

Mein erstes kleines Problem ist folgendes:

Ich möchte jeweils die HTML 5 Tags Header, Nav und Footer von einer externen (separaten) Datei in die HTML Datei per Include-funktion mittels PHP einbinden, damit ich den Code (sofern ich diesen gerne ändern will) direkt in einer einzigen Datei ändern muss und nicht auf jeder HTML Seite einzeln. Wie funktioniert das und was muss ich dabei beachten? Ist es möglich jede Datei per Include einzubinden?



vielen Dank im Vorraus

Liebe Grüße,

Sash
 
Werbung:
Ja, du kannst per include() jede mögliche Datei einbinden. Wichtig ist lediglich, dass im Ergebnis im Browser ein valider HTML-Code ankommt.

Und pingelig bin ich auch manchmal: Standard heißt es ;)
 
ich nehme immer die Funktion include_once "";
Hat den Vorteil, dass jede Datei nur EINMAL eingebunden wird.

& @threadi, EIGENTLICH heißt es ja include ''; und nicht include(), da include ja keine Funktion ist, sondern ein String eingebunden wird.

Aber ich benutze auch häufig include(), es funktioniert ja auch schließlich, und wirft keine Fehler aus!

include ''; PHP: include - Manual
include_once ''; PHP: include_once - Manual
 
Werbung:
Danke für die hilfreichen Antworten.
Mir ist nur gerade eingefallen, dass PHP nur serverbedingt funktionfähig ist.. gilt dies auch für den include befehl?
Sprich: muss ich meine Website auf einem Server hosten, damit dieser Befehl funktioniert?
Da ich noch Anfänger bin und erstmal wissen wollte, ob ich es überhaupt schaffe, mich mit dieser Materie auseinander zu setzen, habe ich natürlich noch nichts ins Netz gestellt.. korregiert mich bitte :)
 
ich nehme immer die Funktion include_once "";
Hat den Vorteil, dass jede Datei nur EINMAL eingebunden wird.....

Das sollte man sich NICHT angewöhnen, das ist ein schwerer Fehler. include und require haben beide ihre Daseinsberechtigung und das Anhängsel _once bewirkt genau definierte Vorgänge.

Du unterscheidest zum Einbinden die beiden Befehle include und require. Beide machen im Wesentlichen das Gleiche, unterscheiden sich aber wensentlich bei der Fehlerbehandlung.

require bricht bei einem Fehler die Bearbeitung ab, include nicht und arbeitet das Script bis zum Ende durch.
Ist das Script, das eingebunden wird also z.B. Sicherheitsrelevant, sollte require verwendet werden, um bei einem Fehler nicht Tür und Tor zu öffnen.

Der Anhang _once bewirkt (wie oben schon erwähnt) dass das Script nur einmal eingebunden wird. Ohne den Zusatz _once kann man Scripte auch zigfach einbinden.

Wird z.B. eine Berchnung mehrfach verwendet, ist ein Aufruf include_once nicht sinnig, da wie schon oben gesagt, sichergestellt wird, dass das Script nur einmal aufgerufen wird, ein include würde einen Mehrfach Aufruf erlauben.
 
Hallo,

muss ich meine Website auf einem Server hosten, damit dieser Befehl funktioniert?

Ja. Wobei ein Server in diesem Zusammenhang ein Programm ist.

Zum Online-Testen kannst du Freeware-Hoster benutzen, z. B. bplaced.net.

Um PHP-Programme komplett am eigenen Rechner auszuprobieren gibt es entsprechende Freeware-Server-Programme. Das bekannteste ist XAMPP. Das ist kostenlos und es gibt jede Menge Anleitungen dazu. Wobei die Grundfunktionen inzwischen keine Hürde mehr darstellen.

Da ich noch Anfänger bin und erstmal wissen wollte

Das solltest du nicht wie ein Schild vor dir hertragen. Wenn du was erreichen willst musst du auch mal mit der Praxis anfangen.

Gruss

MrMurphy
 
Werbung:
Hallo,

vielen Dank für den Tipp mit XAMPP, dieses Programm habe ich auch gerade installiert. Kann mir vielleicht bitte jemand erklären, wie es genau funktioniert, damit ich testen kann, ob dieser include-befehl und weitere PHP-Befehle funktionieren?
Wenn ich die HTML-Datei in Firefox öffne, werden die HTML(5)-Elemente, die ich extern mit include einbinden möchte, nicht angezeigt.

Der PHP Befehl ist: <?php include ("pfad/datei.inc.php"); ?> stimmt das so?

Kann man eigentlich auch die Meta-Tags von einer separaten Datei, in der sich ausschließlich Meta Tags befinden, per include in eine HTML-Datei einbinden? Und macht es für die SEO oder dem Browser einen Unterschied, ob ich die Meta Angaben direkt in die HTML-Datei reinschreibe, oder ob ich sie als externe Datei lediglich in die HTML-Datei rein-includiere? Sprich: ändert sich hier eine Gewichtung, Wert oder relevanz? Oder ist das egal, hauptsache sie sind vorhanden?

Eine kleine frage noch am Rande, bezüglich der Adressierung von Dateien. Ich habe vor, ein großes Projekt zu entwerfen (mit vielen Unterseiten). Wie muss die Ordnerstruktur aussehen und wie adressiere ich richtig (wenn ich zb von vielen Unterverzeichnissen ausgehe)?
Ich würde es so machen:

Hauptordner "Website"
darin weitere Ordner "htm-sites", "design", "include", "bilder", "favicon", usw.
in htm-sites befinden weitere Ordner, die thematisch getrennt sind. Diese beeinhalten alle Seiten.
in design befindet sich die CSS-Datei.
in include befinden sich die Ordner "header", "footer" und "navigation". In diesen Ordnern befinden sich jeweils die zu includierenden Dateien, mit der Endung .inc.php.
in bilder befinden sich die Ordner "logo", "thema1", "thema2", usw.
Oder wie würdet ihr es (eventuell sogar besser) machen?
Und wie bereits gefragt, wie sollte ich am besten adressieren? Mit ../unterorder1/dateiordner/datei.inc.php vielleicht oder wie?

Gruß

Sash
 
Wenn Du XAMPP installiert hast, musst Du den damit installierten Apache starten. Dazu gibt es das XAMPP Kontoll-Panel, wo das eigentlich alles erklärt wird. Sobald der Apache läuft, kannst Du im Browser Webseiten auf deinem Rechner per

Code:
http://localhost

aufrufen. Wo Du Dateien hinlegen musst damit sie über o.g. URL erreichbar sind, erklärt eigentlich XAMPP alleine bereits.

Ich habe vor, ein großes Projekt zu entwerfen (mit vielen Unterseiten). Wie muss die Ordnerstruktur aussehen und wie adressiere ich richtig (wenn ich zb von vielen Unterverzeichnissen ausgehe)?

Ich würde dir raten erstmal klein anzufangen. Offensichtlich bist Du gerade dabei erst PHP zu lernen - wer weiß wie es da mit HTML aussieht. Ein großes Projekt, insbesondere mit PHP geschrieben, erfordert schon einiges PHP-Wissen, und nicht nur das. Es erfordert auch Geduld und Zeit um die "Eigenheiten" des Internets kennen und nutzen zu lernen. Dir ist ja derzeit nicht mal bewusst wozu ein Webserver da ist und wie man diesen (lokal installiert) aufruft. Also solltest Du dir erstmal diese Grundlagen anschauen bevor Du dich an einen Entwurf für eine Ordnerstruktur machst.
 
tut mir Leid, aber ich weiß nicht, wo ich die Dateien ablegen muss, damit ich sie über den localhost aufrufen kann :(
Aber den localhost kann ich über besagten Link aufrufen.
 
Werbung:
Soweit mir bekannt ist, ist es nicht verboten, auf der Xampp-Seite sich mal die ganzen Infos durchzulesen, denn da steht u.a.:
Frage 2: Wo lege ich meine Dokumente hin?

Probleme? Siehe auch:
»FAQ - XAMPP für Windows« Der Ordner für alle Web-Dokumente lautet \xampp\htdocs. Wer dort z.B. eine Datei "test.html" anlegt, kann diese mit der URI "http://localhost/test.html" aufrufen.

Und "test.php"? Dann eben "http://localhost/test.php". Ein einfaches Testskript könnte so aussehen:
<?php
echo 'Hallo Welt';
?>

Ein neuer Unterordner für das Web gefällig? Einfach unter "\xampp\htdocs" einen neuen Ordner mit z.B. dem Namen "neu" (ab besten ohne Leer -und Sonderzeichen) erstellen, Test-Datei dort anlegen und aufrufen mit "http://localhost/neu/test.php".
 
......

Der PHP Befehl ist: <?php include ("pfad/datei.inc.php"); ?> stimmt das so?

Kann man eigentlich auch die Meta-Tags von einer separaten Datei, in der sich ausschließlich Meta Tags befinden, per include in eine HTML-Datei einbinden? Und macht es für die SEO oder dem Browser einen Unterschied, ob ich die Meta Angaben direkt in die HTML-Datei reinschreibe, oder ob ich sie als externe Datei lediglich in die HTML-Datei rein-includiere? Sprich: ändert sich hier eine Gewichtung, Wert oder relevanz? Oder ist das egal, hauptsache sie sind vorhanden?

......
Und wie bereits gefragt, wie sollte ich am besten adressieren? Mit ../unterorder1/dateiordner/datei.inc.php vielleicht oder wie?
....

Hallo

Zu Frage 1
Das include ist vollkommen korrekt, und ja, es ist vollkommen egal in welcher Datei die Metatags stehen.
include() und require() setzten den Code einzelner Scripte zuerst zusammen und senden danach das Ergebnis an den Parser. Sie bauen also quasi erst ein komplettes Script aus Einzelteilen und übergeben das fertige Script an PHP.

Zu Frage 2
Adressierung ist immer ein Thema. Das Verzeichnis, aus dem du die Startdatei (index.php) aufrufst ist immer das roots-Verzeichnis. von dort kannst du in alle Unterverzeichnisse wechseln, PHP/Apache sollte aber verhindern, dass du in ein höher gelegenes Verzeichnis wechseln kannst.

Pfade kann man mit ./verzeichnis1/verzeichnis2 angeben (gehe ins root-Verzeichnis und dann in den Unterordner verzeichnis1 und dort in den Unterordner verzeichnis2), wobei der ./ immer das root-Verzeichnis benennt.
Alternativ kennt PHP z.B. den Befehl chdir(), mit dem man direkt in ein Verzeichnis wechseln kann.
gibt man in Pfaden nun z.B. ../verzeichnis3 (2 Punkte vor dem Slash) an, bedeutet das eine Ebene höher und dort ins Verzeichnis3.

Vermeiden solltest du absolute Pfade (www. http: //blabla)

Im Prinzip ist an ../unterorder1/dateiordner/datei.inc.php nichts auszusetzen, Adressierung hat immer etwas Philosophisches und es gibt eine Vielzahl an Vorlieben.

Generell gillt: Was funktioniert ist richtig! ;)
 
Hallo,

ich habe gerade eine test.php-Datei mit Inhalt: <?php echo "Hallo Welt"; ?> geschrieben und über den localhost aufgerufen. Es hat funktioniert. Aber wenn ich meine HTML-Datei mit dem include-befehl lade, wird dieser Bereich (also die Navigation) nicht angezeigt, es ist ein leerraum an besagter Stelle..
Wenn ich mit Firefox den Seitenquellcode anzeigen lassen, sieht man auch den PHP Befehl, allerdings in roter Schrift. Wenn ich mit dem Cursor auf diesen roten Text gehe, erscheint ein kleines Fenster mit dem Inhalt: ""<?" wurde endeckt. Wahrscheinliche Ursache: Versuch, eine XML-Verarbeitungs-Anweisung in HTML zu verwenden. (XML-Verarbeitungs-Anweisungen werden in HTML nicht unterstützt.)".

Ich versteh einfach nicht, wo der Fehler ist, hab schon alles mögliche ausprobiert, nichts geht. Liegt es an der falschen Adressierung, oder..?

Muss die Datei, die ich includieren will, im PHP-Format sein? Und muss ich, wenn in dieser Datei nur HTML-Tags drinstehen, den gesamten Inhalt (also Anfang und ende) mit <? bzw. ?> kennzeichnen oder nicht?

Vielen Dank :)
 
Werbung:
Du solltest immer <?php als PHP-Tag nehmen und dann muss deine Datei die Extension .php haben und nicht .html oder .htm, denn diese Dateien werden nicht geparst.
 
Xampp arbeitet mit
Code:
short_open_tag=Off
, das auf ON stellen, schon gehts....
Weiters solltest du das error_reporting, max_file_uploads, upload_max_filesize und memory_limit kontrollieren.

Lies dich zu php.ini ein.
 
Xampp arbeitet mit
Code:
short_open_tag=Off
, das auf ON stellen, schon gehts....
Und das wäre genau das dümmste, was man machen kann. Du arbeitest dann immer schön mit Short-Open-Tags, kopierst dann die Scripte auf einen Webserver und der hat dann die Short-Open-Tags auf off stehen. Dann kannst du alles korrigieren, also warum sich dieser Gefahr aussetzen?
 
Werbung:
Hallo, Leider habe ich es immernoch nicht geschafft, dass diese HTML (5) Navigation Datei richtig in die HTML Hauptseite eingebunden wird. PHP funktioniert wie gesagt auf dem Localhost, jedoch stimmt anscheinend (?) irgendetwas mit dem Verweis in Verbindung mit der Adressierung (Ordnerstruktur) der Datei nicht. Ich würde gern an meiner Seite weiterentwickeln, aber ohne dieses "simple" Script, dass eine elementare Rolle hierbei spielt, ist es aus meiner Sicht nicht akzeptabel. Muss ich mich erst mit der ganzen Thematik von Verzeichnisstrukturen und Dateibenennungen befassen, oder? Wenn ich bloß wüsste, wo der Fehler ist, hab schon alles möglich versucht...Könnt ihr mir bitte weiterhelfen? Eventuell mit Anleitug, dankeschön :) Euer verzweifelter Sash
 
Also ich mache es so:

index.php (bzw. jede andere Seite)
PHP:
$title = 'Titel der Seite';
$content = '
hallo<br>
<p>BlaBla</p>
';
include 'site.php';


site.php (hier steht die struktur deiner seite)
PHP:
print '
<html>
<head>
<title>' . $title . '</title>
</head>

<body>
' . $content . '
</body>
</html>
';
 
Hallo,

@activegaming.de.to

Ich habe mir mal eben, diese zwei Beispiel Snipets rauskopiert und in meinem Editor (Scriptly) als .php abgespeichert. Als ich die index.php geladen habe, stande "hallo BlaBla", wie oben angegeben. Meine Frage:
1. Diese php Befehle $title und $content, sind dass fest vorgegebene Befehle, oder kann man sie, wie bei class und id, selbst benennen?
2. Kann man sich dass anhand deines Beispiels so vorstellen, wie bei einer externen css-Datei, dass man in der einer .php-Datei (hier site.php) die "Variablen?" selectiert, und in einer anderen .php-Datei (hier index.php) direkt anspricht (einer funktion zuweist, wie bei CSS)?
3. Bedeutet include "die Datei heranholen" oder "platziere diesen Code in Datei XY"? Also, öffnet dieser Befehl lediglich die zugewiese Datei in exakt dieser Stelle, wo dieser Befehl sich innerhalb des Scriptes befindet, oder wieso hast du den Content nicht in die Struktur der Seite eingebunden, sondern umgekehrt?
4. Muss es zwangsläufig eine .php Dateiendung haben, oder kann man auch eine .htm Dateiendung verwenden? Und muss ich den gesamten Inhalt dieser Datei(en) mit <?php ?> umschließen? Wenn ich dies tue, muss die DOCTYPE Deklaration immernoch an erster Stelle stehn, oder kommt zuerst die Umschliesung mit php?
5. Bei site.php steht an erster Stelle print ' , was heißt das?

Vielen Dank schonmal ;)

Euer fleisiger Web-Lehrling =D

Sash
 
Werbung:
Zurück
Oben