• Hallo


    Ich weiß nicht genau wo ich bei meinem Problem anfangen soll, deshalb hier meine Frage:
    Ich möchte einen Rahmen erstellen, in dem die Steuerung und gegebenfalls das Logo, etc. integriert werden soll. Innerhalb dieses Rahmens soll dann der Inhalt in Form einer html-Datei (, die gegebenfalls durch CSS im Design verändert werden soll). Dabei möchte ich vermeiden in jeder html-Seite die Steuerung und den ganzen Rest jedesmal neu zu integrieren. Es soll nur einen Verweis zu dem Rahmen geben. Eine Möglichkeit sollen ja Frames darstellen, jedoch werden diese nicht empfohlen. Irgendwo habe ich, glaube ich, auch mal etwas von php gelesen, das bei diesem Problem helfen soll. Deshalb, wie setze ich meine Idee am besten um?


    MfG

  • Ich verstehe zwar nicht genau, was du vorhast.. aber das sollte mir egal sein (=
    Du wirst schon wissen, was du da machst :D


    Die PHP-Funktion die du suchst lautet include(). Alternativ dazu kann man auch noch require() verwenden. *1
    Der Unterschied zu den beiden Funktionen ist ersichtlich, wenn man sie sich übersetzt:
    to include = aufnehmen, einarbeiten, einbinden,..
    to require = anfordern, etw. benötigen,..
    Bei Require wird ein Fehler ausgegeben, falls die Datei, die Eingebunden werden soll nicht vorhanden ist, was dazu führt, dass die Programmausführung beendet wird.
    Include beendet die Programmausführung nicht.


    Egal was du nun verwendest, beides wird recht einfach eingebunden:

    PHP
    [...]
    <body>
    <?php
        include('./header.php');
    ?>
    [...]
    <?php
        require("./include/Navi.html");
    ?>


    Als erstes musst du mit <?php den PHP-Bereich markieren.
    Hier kannst du, wenn du auch sonst noch PHP-Funktionen kennst, andere Sachen reinschreiben., in unserem Fall brauchen wir hier jetzt einfach nur include/require.
    Wir schreiben also nun diese Funktion hin, öffnen die Klammer und schreiben in " (doppelten Anführungszeichen) oder in ' (einfache Anführungszeichen) den relative Pfad zu der Datei, wie bei Bildern,..
    Danach muss diese Funktion noch mit ; (Semikolon) beendet werden und der PHP-Bereich mit ?> geschlossen werden.


    Achtung:
    Sobald du eine PHP-Funktion verwendest, musst du die Datei, die Endung *.php erhalten, da es sonst einfach ausgegeben wird.
    Also musst du z.B. aus deiner Index.html -> index.php machen.


    *1
    (Bevor ich gleich wieder hingerichtet werde: Die anderen beiden Funktionen lasse ich jetzt einfach mal außen vor, da sie die selbe Funktionalität wie diese beiden haben, aber man sie normalerweise nur dann verwendet, wenn es vorkommen könnte, dass man die selbe Sache mehrfach einzubinden droht)

  • Erstmal danke für deine Antwort und deine Mühe. Leider beantwortet mir das noch nicht ganz meine Frage.
    Ich versuche das mal durch eine Skizze zu verdeutlichen:
    [Blockierte Grafik: http://img252.imagevenue.com/loc416/th_18799_Unbenannt_122_416lo.jpg]


    Die schwarz umrandeten Bereiche sollen z.B. meinen Rahmen darstellen. Den Rahmen wollte ich in einer Datei verwirklichen. Ich hatte mir dann gedacht, dass man einzelne HTML-Seiten erstellt, die dann in der Rahmen-Datei angegeben werden und je nach dem, was man in der Steuerung auswählt, geladen werden. So bräuchte man nicht in jeder HTML-Datei die Steuerung zu realisieren. Nun wollte ich wissen wie ich am besten so einen Rahmen erstellen und wie man es hinbekommt HTML-Seiten dann dorthinein zu verlinken. Frames werden ja nicht empfohlen. In andere Methoden müsste ich mich da hineinarbeiten und bräuchte da Hinweise mit welchen Informationen und Verfahren ich mich beschäftigen müsste.

  • Das ist leider, meines wissen nach, nur mit Frames zu verwirklichen.
    Du kannst es dir als Programmierer/Designer halt nur einfach machen, indem du den Header, Navi, Footer, Meta,.. jeweils immer includest, so würde dein Quellcode dann in deinem Editor übersichtlicher aussehen.


    Edit: Momomomomomo! xD
    Öhm, was du auch machen könntest wäre, dass komplett mit php zu machen.
    So würde die Grunddatei die selbe bleiben und dann die Datei mit dem Inhalt z.B. aus dem Content Ordner includet.

  • Ne, das wird eher mit einer if-Abfrage gemacht^^
    Dazu überprüfst du als erstes, ob die Datei existiert, wenn ja soll Sie eingebunden werden, wenn nein soll z.B. Fehler 404 ausgegeben werden.
    Ich habe mir das aus der URL generiert^^ Hatte mal gehört gehabt, dass Seiten, á la ?site=index nicht besonders Suchmaschinenfreundlich seien =/

  • Zitat von &quot;Sarkkan&quot;

    Ne, das wird eher mit einer if-Abfrage gemacht^^
    Dazu überprüfst du als erstes, ob die Datei existiert, wenn ja soll Sie eingebunden werden, wenn nein soll z.B. Fehler 404 ausgegeben werden.
    Ich habe mir das aus der URL generiert^^ Hatte mal gehört gehabt, dass Seiten, á la ?site=index nicht besonders Suchmaschinenfreundlich seien =/


    switch Abfragen / if Abfragen ähneln sich sehr stark, in diesem Falle ist es völlig egal welche Variante genutzt wird :wink:

  • Aber bei einer Switch abfrage müsste ich es doch so machen:

    PHP
    <span class="syntaxdefault">switch </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$seite</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    case </span><span class="syntaxstring">"index"</span><span class="syntaxkeyword">:<br /></span><span class="syntaxdefault">        include</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"index.htm"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">        break</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    case </span><span class="syntaxstring">"impressum"</span><span class="syntaxkeyword">:<br />...<br />}</span><span class="syntaxdefault"> </span>


    Oder wie könnte man so eine switch-Abfrage so wie eine if-Abfrage á la:

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">file_exist</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$seite</span><span class="syntaxkeyword">)){<br /></span><span class="syntaxdefault">    include</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$seite</span><span class="syntaxkeyword">);<br />}</span><span class="syntaxdefault"> else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxstring">'Fehler 404'</span><span class="syntaxkeyword">;<br />}</span><span class="syntaxdefault"> </span>


    gestallten?


    Oder könnte man da auch einfach

    PHP
    <span class="syntaxdefault">switch </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$seite</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    case file_exist</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$seite</span><span class="syntaxkeyword">):<br /></span><span class="syntaxdefault">        include</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$seite</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">        break</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    default</span><span class="syntaxkeyword">:<br /></span><span class="syntaxdefault">        echo </span><span class="syntaxstring">'fehler 404!'</span><span class="syntaxkeyword">;<br />...<br />}<br />-------------- </span><span class="syntaxdefault">Beziehungsweise<br /></span><span class="syntaxkeyword">switch (</span><span class="syntaxdefault">file_exist</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$seite</span><span class="syntaxkeyword">)) {<br />    case </span><span class="syntaxstring">"True"</span><span class="syntaxkeyword">:<br />        include(</span><span class="syntaxdefault">$seite</span><span class="syntaxkeyword">);<br />        break;<br />    default:<br />        echo </span><span class="syntaxstring">'fehler 404!'</span><span class="syntaxkeyword">;<br />...<br />} </span><span class="syntaxdefault"></span>
  • Erst einmal: Vielen Dank für eure Hilfe. Hat mich jetzt weitergebracht.


    Jetzt haben sich aber bei mir neue Fragen aufgetan:
    Hier habe ich erstmal einen ganz einfachen Quelltext zum Test (hab ich mal wieder ausgegraben vom Üben :) )


    Ist der Bereich mit dem php-Code soweit korrekt und findet auch so Verwendung? (Funktioniert hat es jedenfalls) Den Test nach vorhandener Datei mit if oder switch habe ich hier erstmal vernachlässigt.



    Nun der Quelltext der test2.htm Datei:


    Gibt es jetzt Probleme beim Einfügen, wenn in der einzufügenden Datei bereits <html>-, <head>- und <body>-Tag vorhanden sind? Ist ja bestimmt nicht üblich das zweimal in einer Datei zu haben später (nachdem ja eingefügt worden ist). Jedoch habe ich da ja ein Problem, wenn ich ein extra Stylesheet auf die einzufügende Datei wirken lassen will: Den Link muss ich ja im <head>-Bereich angeben, aber den doppelt später zu haben, ist ja bestimmt nicht empfohlen. Wie beurteilt ihr das und wie könnte da eine Lösung aussehen?

  • Vorweg: Ein <style> Bereich gehört auch in den head ;)


    Dann: Du includest nur das, was in der Datei zwischen <body> und </body> steht. Wenn du ein Stylesheet einbinden möchtest, kannst du das im head der Date machen, in die includet wird. Da kannst du den Link entweder direkt reinschreiben oder auch includen lassen.


    Kommt auch drauf an, wie fit du in PHP bist ;)


    Wenn du später mehrere Seiten hast, könnte es z.B. auch besser sein, das ganze Datenbankbasierend zu machen, nur so als Hinweis.


    Gruß
    Laura

  • Zitat

    Wenn du ein Stylesheet einbinden möchtest, kannst du das im head der Date machen, in die includet wird. Da kannst du den Link entweder direkt reinschreiben oder auch includen lassen.


    Ahh ja, gute Idee, das gegebenfalls auch zu includen. Vielen Dank.


    Zitat

    Kommt auch drauf an, wie fit du in PHP bist ;)


    Wohl nicht sehr viel. Grundkenntnisse habe ich aus der Uni nur in C++. Hilft aber teilweise auch schon um erstmal die Logik hinter vielen Sachen zu verstehen.


    Zitat

    Wenn du später mehrere Seiten hast, könnte es z.B. auch besser sein, das ganze Datenbankbasierend zu machen, nur so als Hinweis.


    Werde ich mich später wohl mal mit beschäftigen, danke für den Hinweis.

  • Hallo


    Ich habe jetzt noch ein Problem. Ich möchte die zu ladenden Seite in der Steuerung wie anzuklickende Links machen, d.h. der Nutzer soll auf die Links für die gewünschte Seite drücken und dann soll diese im dafür vorgesehenen Bereich geladen werden. Ich habe mir schon einen Kopf gemacht, aber komme auch keine brauchbare Lösung.


    MfG

  • Zitat von &quot;Linkin&quot;

    Hallo


    Ich habe jetzt noch ein Problem. Ich möchte die zu ladenden Seite in der Steuerung wie anzuklickende Links machen, d.h. der Nutzer soll auf die Links für die gewünschte Seite drücken und dann soll diese im dafür vorgesehenen Bereich geladen werden. Ich habe mir schon einen Kopf gemacht, aber komme auch keine brauchbare Lösung.


    MfG


    Öhm.. 1. Gibt es auch nicht anzuklickende Links? 8|
    Beziehungsweise was meinst du damit Konkret?^^


    Also wie gesagt.. ich würde das vielleicht einfach so machen, dass du den Rahmen includest.. und nur den Inhalt erstellt?


    Ich habe für meine Seite ein recht ähnliches Prinzip verwendet.. Ich habe mit der Indexdatei angefangen.
    Als erstes wird aus dem Dateiname das Generiert, was zwischen <title> und </title> steht. Anschließend werden die Meta- und Style-Dateien eingebunden.
    Dann wird ein kleines Programm eingebunden, was meine Navigation erstellt.
    Anschließend wird der Inhalt aus einem anderen Ordner eingebunden.
    Alle meine anderen Dateien haben keinen anderen Inhalt als

    PHP
    <span class="syntaxdefault"><?php<br /></span><span class="syntaxkeyword">require(</span><span class="syntaxstring">"index.php"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">?></span>
  • Wennn ich das jetzt richtig verstanden habe, hast du den Rahmen und die immer wieder verwendeten Informationen in einzelne Dateien gesplittet, die du dann immer bei den entsprechenden Stellen einer Inhaltsseite includest?


    Vielleicht noch mal meine Idee besser erklärt: Ich wollte den Rahmen erstellen mit allen Informationen (title, meta). In diesem Rahmen soll auch meine Navigation enthalten sein. Nach dem der Nutzer nun irgendeine neue html-Seite über die Navigation auswählt, soll diese html-Seite in meinen Rahmen includet werden. Das Problem ist bloß, dass wenn der Nutzer etwas anklickt, ich die gewünschte Seite ja irgendwie abspeichern müsste (unter einer Variablen wo möglich), damit dann im include-Befehl immer das gewünschte geladen wird.

  • Zitat von &quot;Linkin&quot;

    Wennn ich das jetzt richtig verstanden habe, hast du den Rahmen und die immer wieder verwendeten Informationen in einzelne Dateien gesplittet, die du dann immer bei den entsprechenden Stellen einer Inhaltsseite includest?


    Vielleicht noch mal meine Idee besser erklärt: Ich wollte den Rahmen erstellen mit allen Informationen (title, meta). In diesem Rahmen soll auch meine Navigation enthalten sein. Nach dem der Nutzer nun irgendeine neue html-Seite über die Navigation auswählt, soll diese html-Seite in meinen Rahmen includet werden. Das Problem ist bloß, dass wenn der Nutzer etwas anklickt, ich die gewünschte Seite ja irgendwie abspeichern müsste (unter einer Variablen wo möglich), damit dann im include-Befehl immer das gewünschte geladen wird.


    Dafür könntest du theoretisch die $_GET-Variabel nehmen.. Nachteil: Sie ist nicht Suchmaschinen Freundlich.
    Und so, wie du das meinst ist es ausschließlich mit Frames möglich. Es gibt KEINE Methode, die genauso funktioniert wie Frames.
    Und wie gesagt.. wenn du in der Indexdatei den Rahmen baust und die zu includende Seite dann aus dem Dateinamen generierst, würde das auch gehen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!