Textfeld als Variable für Links

Hallo

Ich bin ein wenig neu in der PHP Welt, und habe mal eine Frage für meine Homepage, welche ich neu gestallte.

Die alte bekannte Variante von 20 HTML Seiten ist mir echt zu wieder, und da habe ich von einem Kollegen ein wenig über PHP vermittelt bekommen. Nach ein wenig Nachforschungen auf Google habe ich mich entschlossen, das Template mit HTML und CSS zu machen, aber die Seite über PHP laufen zu lassen.
Jetzt hatte ich mir gedacht, dass nicht jedesmal die ganze Seite neu geladen werden muss, wen jemand einen Link anklickt, könnte ich ein Textfeld im HTML-Teil definieren, in dem dann die verschiedenen Texte und Bilder dargestellt werden.
Jetzt ist meine Frage, ob ich dem Textfeld eine Variable zuordnen kann, und dann sobald jemand einen Link anklickt, wird die Variable neu gesetzt, abgefragt, und dementsprechend das Textfeld neu geladen.
Ist das so möglich? und wenn ja, wie kann ich das am einfachsten machen? Denn mitlerweile habe ich noch im HTML-Code selber PHP-Teile integriert(Besucherzähler), noch nicht verlinktes Fotoalbum, welches HTML läuft, Kalender mit PHP…

Ich hoffe, dass meine Frage richtig definiert worden ist, ansonsten nur nachhacken

MFG
P51D

Das, woran Du da denkst, sind Frames. Wenn Du Dich ein wenig auskennst oder googlest, wirst Du wissen/feststellen, dass Frames mit zu vielen Nachteilen behaftet sind, als dass man sie nutzen sollte.

Was Du suchst, ist die Funktion include(), mit der Du Inhalte anderer Dateien in die aktuelle einfügen kannst. Denn Du wirst nicht drumrum kommen, mit jedem Klick auf einen Link eine neue Seite zu laden, das ist die Funktionsweise des WWW.

Gruß,
-Efchen

wenn ich das richtig verstanden habe, MUSS ich für jeden Link eine neue Seite erstellen, die dann laden kann.

den include() Befehl ist wahrscheindlich in jeder Seite vorhanden, womit die anderen Seiten integriert werden? Also für jede Seite einen include() Befehl?

Danke für den hinweis, werde mich mal ein wenig mit google darüber informieren, und wenn ich noch Fragen habe, diese hier stellen.

Kannst du mir noch ein paar Tipps auf den weg geben?

MFG
P51D

Es gibt da zwei Möglichkeiten, das anzugehen.

Entweder Du schreibst für jede Seite eine eigene Datei und bidest alles, was gleich ist, per include() in jede Seite ein, also eine Datei mit dem Menü, eine mit dem HTML-Header usw.

Oder Du machst es andersrum, definierst quasi eine Grund-Seite und machst ein include() für jede Seite, die in diesem Grundgerüst dargestellt werden soll. Dann übergibst Du die Seite der Grund-Seite, damit diese weiß, welche Datei sie includen soll.

wie mache ich denn das mit den verschiedenen Links?

Ich programmiere jetzt schon etwa 1 1/2 Jahre C und dort würde ich es irgendwie mit einer if abfrage machen.

Wie kann ich bei diesem Beispiel sagen, wenn ich auf den Link Fotogalerie klicke, dass nur die Fotogalerie im Grundgerüst geladen wird, und nicht noch der ganze Rest?

Danke nochmals für die Hilfe

MFG
P51D

Du lädst die Grundgerüst-Seite und übergibst den Namen der Seite, die Du im Inhaltsbereich geladen haben willst.

<a href="index.php?page=fotogalerie">Zur Fotogalerie</a>

Und im index.php steht dann sowas wie
[php]

<?php include($_SERVER["DOCUMENT_ROOT"]."/unterseiten/".$_GET["page"].".inc.php"); ?>

[/php]
Sind natürlich nur Beispiele.

Der ganze Rest wird natürlich trotzdem geladen, so läuft das im WWW.

Beim ersten Befehl muss ich für jeden Link hinter der index.php noch folgenden Code anhängen, und anpassen? Das heisst bei einem „Home“-Teil anstelle von fotogalerie home?

?page=fotogalerie

und beim zweiten Befehl komme ich nicht ganz nach: Damit ich alles richtig verstanden habe, dies kommt in das vorgefertigte Textfeld?

<?php include($_SERVER["DOCUMENT_ROOT"]. $_SERVER ist eine Variabel, wo muss ich die noch wie definieren? "/unterseiten/". wofür steht das? $_GET["page"]." page ist dann je nach Link der gedrückt wurde entweder Fotogalerie oder Home geladen wird?? .inc.php" Ist das eine neue Datei, die ich noch machen muss? page dien hier als Übergabe-Variable, muss ich demnach auch noch definieren? einfach $page= was? beim C kann man einfach int page; dann hat man schon ne neue Variable. Dadurch, dass du mir den 2. Befehl etwas erklähren kannst, wird sich sicher dann die Frage "woher weiss das index.php dann welche Datei es jetzt einbinden will?" erübrigen, fals nicht, währe ich froh, wenn du mir das noch erläutern könntest. Nochmals danke für die Hilfe MFG P51D

Das ist ein Tag, kein Befehl. Ja, Du gibst dem Link einen Parameter mit (hinter dem ?, hier mit Namen „page“. Der Wert steht hinter dem „=“ und beinhaltet in der einfachsten Variante den Namen der Datei, die zu includen ist (ohne Dateiendung).

und beim zweiten Befehl komme ich nicht ganz nach: Damit ich alles richtig verstanden habe, dies kommt in das vorgefertigte Textfeld?

Textfeld? Ach so, jein. Das ist ein Befehl, ein PHP-Befehl. Der muss tatsächlich an die Stelle im HTML-Code, wo der Inhalt der zu includenden Datei eingebunden werden soll.

$_SERVER ist eine Variabel, wo muss ich die noch wie definieren?

Wie der Name schon sagt, ist das eine Variable, die der Server definiert und Dir zur Verwendung in einem PHP-Script zur Verfügung stellt. In der Umgebungsvariable DOCUMENT_ROOT steht das Verzeichnis Deines DocumentRoot der Website.

„/unterseiten/“ wofür steht das?

Für ein Unterverzeichnis, in dem Deine einzubindenden Seiten stehen. Du kannst es nutzen, Du kannst auch darauf verzichten und wenn Du es benutzt, kannst Du es nennen wie Du willst.

$_GET[„page“].
page ist dann je nach Link der gedrückt wurde entweder Fotogalerie oder Home geladen wird??

In der Variablen ist der Wert gespeichert, den Du zuvor im Link an das Script übergeben hast. Das soll der Name der Seite (ohne Dateiendung) werden.

„.inc.php“ Ist das eine neue Datei, die ich noch machen muss?

Das ist die Dateiendung zu der Datei, die in $_GET[„page“] übergeben wurde. Das Ergebnis kann dann z.B. sein „fotogalerie.inc.php“. In der Seite steht der Inhalt, der an Stelle des include() in die Seite eingebaut wird.
Die Dateiendung ist dabei egal. Ob .inc.php, .inc, .php, .html oder was immer Du willst. Wenn Du dort allerdings wieder PHP-Code reinschreibst, sollte Dir bewusst sein, dass Dateien mit unbekannten Endungen im Browser in Klartext dargestellt werden können. Wenn die Datei also „datenbank.inc“ heißt und darin zur Verbindung mit einer Datenbank Dein DB-Passwort im Klartext steht, kann das jeder im Klartext lesen, weil „.inc“ vom Browser im Klartext ausgeliefert wird.

page dien hier als Übergabe-Variable, muss ich demnach auch noch definieren?

Nein, eine Variable page gibt es nicht. In PHP gibt es aber ein Array $_GET, in dem alle übergebenen Werte drinstehen. Variablen definieren sich in PHP - anders als in C - bei ihrer ersten Benutzung.

Dadurch, dass du mir den 2. Befehl etwas erklähren kannst, wird sich sicher dann die
Frage „woher weiss das index.php dann welche Datei es jetzt einbinden will?“ erübrigen,
fals nicht, währe ich froh, wenn du mir das noch erläutern könntest.

Das übergibst Du im Link mit „?page=seitediedueinbindensollst“. :slight_smile:

Nochmals danke für die Hilfe

Gerne!

-Efchen

ich bins nochmals.

hab jetzt das ganze mal in meine page kopiert und angepasst.

ein link habe ich so:

[code]

  • Freitag
  • [/code]beim Textfeld siets folgendermasen aus: [code]
    <?php include($_SERVER["DOCUMENT_ROOT"]."/unterseiten/".$_GET["page"].".g_jub_fr.html"); ?>
    [/code]ist das so richtig?

    im Verzeichiss der Seite habe ich folgende sachen:
    index.php
    hhome.php
    counter.php
    counter.txt
    counter/
    images/
    unterseiten/g_jub_fr.html +bilder

    wenn ich das ganze mit xampp (localhost) teste kommt folgender Fehler:

    Warning: include(C:/Daten/…/xampp/htdocs/unterseiten/.g_jub_fr.html) [webhosting24 - Login]: failed to open stream: No such file or directory in C:\Daten.…\xampp\htdocs\Fertig\hhome.php on line 138

    Warning: include() [webhosting24 - Login]: Failed opening ‚C:/Daten/…/xampp/htdocs/unterseiten/.g_jub_fr.html‘ for inclusion (include_path='.;C:\Daten\Harmonie\Webseite\prog\xampp\php\pear') in C:\Daten.…\xampp\htdocs\Fertig\hhome.php on line 138

    sorry, das ich mich so blöd anstelle.

    Hoffe, du kannst mir troztdem nochmals helfen

    P51D

    Das ist eine Möglichkeit. Das setzt voraus, dass die einzubindenden Seiten in einem Unterverzeichnis namens „unterseiten“ liegen, das direkt im DocumentRoot liegt, und dass die Dateien, die eingebunden werden sollen „xxx.g_jub_fr.html“ heißen (mit xxx=der Name, der an die Seite übergeben wurde, bei seite.php?page=foobar muss also eine Datei „/unterseiten/foobar.g_jub_fr.html“ existieren).

    im Verzeichiss der Seite habe ich folgende sachen:
    unterseiten/g_jub_fr.html +bilder

    Da wird er dann wohl nichts finden, weil Du definiert hast, dass die Seiten anders heißen (s.o.). Vor dem „g_“ fehlt mindestens der Punkt und dann noch der übergebene Seitenname.

    Failed opening ‚C:/Daten/…/xampp/htdocs/unterseiten/.g_jub_fr.html‘ for inclusion

    Dein Englisch sollte dafür ausreichen: Er kann die Datei ‚C:/Daten/…/xampp/htdocs/unterseiten/.g_jub_fr.html‘, die er includen soll, nicht öffnen. Gemäß dem, was Du oben geschrieben hast, gibts so eine Datei ja auch nicht.

    sorry, das ich mich so blöd anstelle.

    Wenn alle gleich in jedem Thema Experten wären, wie sähe dann die Welt wohl aus? Jeder hat mal klein angefangen.

    Hoffe, du kannst mir troztdem nochmals helfen

    Klar, nur gibts keinen Grund für das Wort „trotzdem“. Du hast ja bisher nix angestellt :slight_smile:

    Das ganze spielt sich in der Seite hhome.php ab, wenn ich das richtig sehe. Du willst eigentlich eine Seite g_jub_fr aufmachen, oder?
    Dann müsste das so aussehen:

    Aufruf der Seite: hhome.php?page=g_jub_fr
    Der Code für das include:

    include($_SERVER["DOCUMENT_ROOT"]."/unterseiten/".$_GET["page"].".html");

    Und, klappts so?

    Hallo
    Du brauchst eine Hauptdatei die index.php im Root-Verzeichnis.
    In Ihr steht:

    //Dein Header
    //<html> und so
    <ul>//Das Menü
      <li><a href="index.php?page=[COLOR="Red"]fotogalerie">Zur Fotogalerie</a></li>
      <li><a href="index.php?page=[COLOR="Red"]home">Home</a></li>
    //weitere Einträge
    </ul>
    //und dann das "Textfeld" oder Include genannt
    <?php
      include($_SERVER["DOCUMENT_ROOT"]."/unterseiten".$_GET["page"].".inc.php");
    ?>
    // Zuletzt der Footer </html> und so

    Immer nur Das Rote und den Text ändern.
    Jetzt musst du das Verzeichnis unterseiten anlegen, mit den Includedateien: bsp.

    fotogalerie.inc.php home.inc.php
    Sie müssen immer die Endung .inc.php haben.
    Und der Name davor das oben [COLOR=„Red“]rotgeschriebene.
    Den Inhalt der Includierten(also die mit der Endung .inc.php) Dateien kannst du selbst bestimmen z.B.:

    [CODE]


    Dein Text

    [/CODE]

    MFG Speider

    oh, erstmals danke für die beiden posts.

    ich werde das dann nochmals so versuchen, wie ihr beschrieben habt.

    Die page, die ich erstellen möchte, hätte folgenden Aufbau, damit ihr das richtig versteht.

    zuerst wird die index.php Datei geladen, bei der ich auswählen kann, welche der beiden nachfolgenden Seiten ich öffnen will (hhome.php oder jhome.php)
    Dann kommt der ganze Rest für die jeweiligen Seiten.

    Habe heute noch ein wenig auf dem Internet gegoogelt, und bin auf folgendens gestossen:
    ServerSideInclude (SSI) auf unterschiedlichen Webservern
    Was haltet ihr davon? Denn mit dem Prog XAMPP starte ich jeweils einen Apache Server auf meinem Rechner, mit MYSQL integriert.
    Könnte da auch noch ein Fehler sein?

    Werde euch sobald ich zuhause bin das Ergebnis mitteilen, obs geklapt hat oder nicht.

    Mit der normalen include(g_jub_fr.html) geht, und auch wenn ich die Seite g_jub_fr.html noch in den Ortner unterseiten integriere funktioniert alles. Aber sobald ich die Bilder, für das Fotoalbum im Ortner htdocs/unterseiten/bilder/jub_fr habe, und die links angepasst sind, kommt eine ähnliche Fehlermeldung. Wenn die Bilder aber einen Ortner höher sind, geht alles wieder, natürlich mit zurückändern der Links.

    Wird da jemand schlau draus? Ich weiss, dass es PC Programme gibt, die bei zu langem Pfad Probleme haben, aber dass das auch auf dem Internet so sein soll, kann ich mir nicht vorstellen.

    Ok, das wärs vorerst mal. Ihr hört noch heute von mir

    MFG
    P51D

    Ob Du fürs include SSI oder PHP benutzt, ist wurscht. Es funktioniert beides quasi gleich.

    Wenn Du Probleme hast, sobald Du Deine Bilder in ein anderes Verzeichnis legst, dann stimmen Deine Pfadangaben wahrscheinlich nicht. Bei relativen Pfaden kommt es darauf an, wo das Arbeitsverzeichnis ist, und das ist NICHT in dem Verzeichnis, wo die includete Datei steht, sondern das Verzeichnis in dem die INCLUDENDE Datei steht.

    Gruß,
    -Efchen

    Also, habe das ganze nochmals getestet:

    bis jetzt keine besserung.

    Variante 1 mit .html Datei, die einzubinden ist:

    [code]

  • Home
  • <?php include($_SERVER["DOCUMENT_ROOT"]."/unterseiten/".$_GET["page"].".html"); ?>

    [/code]Dann noch Probehalber mit .inc.php:

    [code]

  • Home
  • <?php include($_SERVER["DOCUMENT_ROOT"]."/unterseiten/".$_GET["page"].".inc.php"); ?>

    [/code]Natürlich existierten beide Files, aber nach wie vor gleiche Fehlermeldung Blabla Zeile 139 => ist der include Befehl

    hier noch die Auflistung des Verzeichnisses:
    C:\Daten.…\xampp\htdocs\Fertig
    index.php
    hhome.php
    counter.php

    C:\Daten.…\xampp\htdocs\Fertig\unterseiten
    hhome.html
    hhome.inc.php
    g_jub_fr.html

    Jetzt weiss ich echt nicht mehr weiter.

    Jedesmal, wenn ich einen Link anklicke, ändert der menüpfad, aber egal, was ich mache, es kommt immer die Fehlermeldung.

    MFG
    P51D

    mach mal aus diesem code:
    [php]

    <?php include($_SERVER["DOCUMENT_ROOT"]."/unterseiten/".$_GET["page"].".inc.php"); ?>

    [/php]das hier:
    [php]

    <?php include("unterseiten/".$_GET["page"].".inc.php"); ?>[/php]$_SERVER['DOCUMENT_ROOT'] hängt von deiner php.ini ab. der relative pfad muss funktionieren (bei mir klappt's).

    eventuell muss es auch so heissen:

    [php]<?php include("./unterseiten/".$_GET["page"].".inc.php"); ?>[/php]

    ok, jetzt habe ich den Fehler herausgefunden:

    Ich hatte jeweils auf dem .htdocs von XAMPP einen Ortner „Fertig“, indem ich all die anderen Sachen drin hatte. Der Server durchsuchte jeweils nur localhost, und nicht auch noch den ortner Fertig, indem wiederum der Ortner unterseiten war.

    Jetzt funktioniert „fast“ alles so wie es sollte:
    Wie kann ich definieren, dass er schon am Anfach die Datei hhome.html einbinden soll, befohr ich aber auf den Link Home geklickt habe?

    Nochmals einen riesen Dank für eure Geduld

    MFG
    P51D

    [php]

    if(!isset($_GET[‚page‘]))
    {
    include(„./unterseiten/hhome.html“);
    }

    else
    {
    include(„./unterseiten/“.$_GET[„page“].„.inc.php“);
    }
    [/php]

    jeder fängt mal klein an. du suchts wenigstens selber… :wink:

    ich bin mir eigentlich Fehlersuchen gewohnt, denn nicht jedes C-Programm, welches ich schreibe läuft auf anhieb.

    Ich möchte einfach eine neue Programmiersprache lernen, und das lernen geht am besten, wenn man sich selber mit der Materie beschäftigt und auseinandersetzt. alles andere ist für mich einfach nur abschreiben.

    Ausserdem hätte es wohl noch länger gedauert, wenn ihr für mich den Fehler gesucht hättet, da leider nicht jerder Mensch mit der gabe des Hellsehens beglückt wurde.

    Falls ich noch auf weitere Probleme stosse, werde ich diese hier Posten, da ich den eindruck erhalten habe, dass dieses Forum recht gut ist.

    Danke nochmals für die Hilfen

    MFG
    P51D

    Ich würde sogar soweit gehen, zu sagen, dass wenn meine C-Programme auf Anhieb zu funktionieren scheinen, dass sie noch irgendwo einen unerkannten Fehler enthalten :slight_smile:

    Ich möchte einfach eine neue Programmiersprache lernen, und das lernen geht am besten, wenn man sich selber mit der Materie beschäftigt und auseinandersetzt. alles andere ist für mich einfach nur abschreiben.

    Das ist eine gute Einstellung! Man will ja wissen, warum etwas so und nicht anders funktioniert. Nur so kann man sich auch davor schützen, bei jedem kleinen Problem auf fremde Hilfe angewiesen zu sein.

    Danke nochmals für die Hilfen

    Gerne. Jederzeit wieder. :slight_smile:

    Gruß,
    -Efchen

    Jetzt habe ich doch noch eine Frage zum include Befehl:

    Kann ich anstelle nur eines Ortners, „unterseiten“ auch einen Pfad angeben? zum Beispiel alt/unterseiten?

    wenn ja, wie mache ich das?

    [code]

    <?php include($_SERVER["DOCUMENT_ROOT"]."/alt/unterseiten/".$_GET["page"].".php"); ?>

    [/code]So geht ja nicht, oder?

    MFG
    P51D