[url]http://link=sektion[/url]

  • Hallo, auf manchen Seiten sehe ich, das wenn man auf einen Link klickt, nicht eine komplett neue Seite geladen wird, sondern es wird: der link=sektion und dann xyz dahintergehangen.
    Koennt ihr mir da evtl genaueres zu erklaeren, wie das Funktioniert und so??
    Waere fuer jegliche hilfe sehr geniert.

    Julian

  • Hi,

    ich glaub du meinst die Switch/Case Funktion mit PHP um Seiteninhalte zu includen... beispiel: http://www.domain.de/index.php?action=kontakt ?!?

    Das geht ist so, du hast eine HTML Seite mit deinem Design etc., normal müsste man jetzt um andere Seiteninhalte einzufügen das Design für jede Seite kopieren und überall einfügen und auf die einzelnen Seiten verlinken, oder man arbeitet mit Frames. Aber das hier ist eine elegantere Variante mit PHP.

    Du hat deine HTML Seite, schreibst dann in die Zelle wo der Inhalt angezeigt werden soll:

    Dieser code nimmt die Befele aus der URL und cased die Inhalte wo se hinsollen, beispiel du hast ...http://domain.de/index.phpaction=kontakt dann sucht das Script nach "Kontakt" findet Case kontakt und führt den Befehl bis Break aus, da steht halt dass die kontakt.php included werden soll, so wird der Inhalt aus der Datei "kontakt.php" in die akutelle Zelle eingefügt.

    Diese Methode ist sehr nützlich, man brauch nur einmal das CSS Stylesheet in dei HTML Seite im head einzufügen. Die zu includenden Seiten brauchen keine HTML Einleitung, also ohne Html, Head oder Body. Purer Text, der dann im Hauptdokument durchs CSS formatiert wird. Natürlich nur wenn ein CSS angegeben ist.

    Ich mach es immer so, schreibe meine Switch/Case Funktion in eine seperate PHP Datei und nenn diese case.php, dann schreib ich nur noch in meine index.php:

    PHP
    <?php
    include("case.php");
    ?>

    Das ist nur die leichte Variante.
    Man kann die ganzen INhalte auch über eine Datenbank auslesen lassen, u nd die URL angabe sagt dann welche Inhalte über den Query abgefragt werden sollen.
    Genau wie CMS (z.B. Typo3) arbeiten so, um die Inhalt einzufügen.

    Ich kann mir keine Seite mehr ohne diese Art von verlinkung vorstellen :)

    Ein Beispiel für über DB abfragen findest du hier:
    http://www.malberg-united.de/page/
    da auf Profile und auf spieler, guck in die URL, das sind angaben für die Abfrage.

    Ein Beispiel für normale Seiteinhalte findest du hier:
    http://www.rettet-stromberg.de

    hoffe ich konnte helfen!

    greetz

  • Mh ja, also danke, jetzt weiß ich sehr gut, wofuer es ist! :)
    Aber ich versteh noch nicht ganz, wie ich dafuer die Links mache.
    Also, wie ich die Speziale Seite dann aufrufen kann...
    Oder ich habs "ueberlesen"...
    Ich hab das so verstanden, man includet in der index.php
    das hier:


    Und dann wird home.php includet, wenn es die Seite gibt, wenn nciht, includet er kontakt.php.
    Aber das ist sicherlich falsch...
    Ich woltle dieses System auch nutzen, da ich auch mit CSS arbeite, und keine Lust habe, immer ne neue Seite fuer jeden Link anzulegen..
    Da waere das ja nahezu Perfekt

    Zitat

    normal müsste man jetzt um andere Seiteninhalte einzufügen das Design für jede Seite kopieren und überall einfügen und auf die einzelnen Seiten verlinken, oder man arbeitet mit Frames. Aber das hier ist eine elegantere Variante mit PHP.

    Danach habe ich naemlcih schon sehr lange gesucht.. :)

    Evtl koenntest du mich ein bisschen mehr aufklaeren! :)

    Viele dank vorab

  • Hi,

    ja, so falsch haste das ja nicht verstanden.
    Das "default" gibt an wenn ichts in der URL angegeben ist, also wenn du nur die index.php aufrufst.

    Die Switch funktion muss in der Datei stehen wo die Inhalte included werden soll.

    die Links schreibst du ganz eifnach selbst, du kannst die Datei endlos erweitern.
    leg dir am besten eine seperate Case.php an und include nur die case.php, das ist übersichtlicher, als wenn du in deiner index.php diesen (evtl. endlosen) PHP code hast.

    Du kannst die Funktion endlos erweitern:

    Du kannst die einzelnen Cases immer wiederholen, dazu noch bedingungen aufstellen, wenn du z. B. ein Gästebuch hast, gibst ein "index.php?action=gb" wir das Gästbuch aufgerufen, hast du im Gästebuch ein Link zur Seite eintragen.php um Einträge zu schreiben, schreibste in diesen Link index.php?action=gb&value=eintragen dann wird die Seite eintragen.php included (oben die If Bedingung).

    Die Links musst du halt alle manuell angeben, hast du Home, kontakt und Impressum auf deiner Page, musste in deiner index.php angeben, wohin gelinkt wird, also bei
    home => index.php?action=home
    kontakt => index.php?action=kontakt
    impressum => index.php?action=impressum

    natürlich sind die Namen frei wählbar, man kann da auch Nummern für nehmen, wobei ich klartext Bezeichnungen besser finde.

    Was dumm ist, wenn du viele Seiten hast, die müssen (fast) alle manuell included werden, man kann unterhalb der Seiten mit PHP diverse Bedingungen aufbauen wo die Seiteninhalte variieren, aber das kommt drauf an welche Inhalte du hast. Das ist leider viel Arbeit, aber das zu automatisieren ist sehr viel mehr aufwand.
    Habe z. B. auf einer Seite eine suche integriert, die über index.php?komp_id=search aufgerufen wird, das Suchformular verweis ich ganz einfach auf die Adresse index.php?komp_id=search&result=$result, result ist hier die Variable die eine URL zurück gibt, das Such Script fasst da auf und included den Link derg esucht wurde, alles in einer Datei, einfach vorne dran eine IF Bedingung,w enn Such Knopf nicht gedrückt, zeig das Formular, sonst zeig das ergbnis.
    Das kann man alles schön integrieren.

    Wenn man es aber ganz einfach will, dann nimmt man ein CMS.

    Was du natürlich auch machen kannst ist mehrere Cases einbauen, d.h. du legst z.B. eine case2.php und case.php an, dann legste die eine z.B. in die Mitte der Page und die case2 in eine spalte rechts daneben, dann könnte der Link heißen index.php?action_middle=content&action_right=content_right hierbeir gilt "action_middle" für die case.php und "action_right" für die case2.php.

    hm, hoffe ich habs dir verständlich rüber bringen können :)

    gruß

  • Jau, danke, das hast du, meiner Meinung nach! :)
    Also, ich fass nochmal zusammen.


    Den code in die case.php
    Der wird in der Index includet.
    In der Navigationslieste ein link mit
    link.php?action=news
    Dann sucht er, stoeßt auf case "news" include("news.php")
    und dann wird da, wo cih das case.php include, news.php includet, richtig?

  • Du hast es erfasst :) ...

    Ein tipp noch, du musst in deine Dateien mit dem Seiteninhalt keine zwingendend HTML Tags wie <html><body> oder <head> einbauen, wenn dus machst gehts auch, aber du hast mitten im Quelltext nochmal head etc. stehen, damit da keine Konflikte oder so gibt, machs lieber ohne diese. Nur reiner Text, als würdest du die per Hand in die Index.php schreiben, natürlich hast du beim schreiben keine formatierung, die kommt aber dann beim includen automatisch.

    viel spaß damit!

    greetz

  • Dankeschoen, das klappt ja wunderbar!!
    Erst dachte ich es geht nich, hatte schon ein Bombentext hier geschrieben.
    Aber der bleibt euch erspart, ich hab den Fehler rausgefunden.. :P

    Also vielen dank, ich Denke mal so werde ich meine Seiten jetzt nur noch gestalten..
    dann werde ich mal fleißig coden! :)
    Vielen dank fuer diesen sehr Hilfreichen tipp


    MFG

  • Hehe, Frames habe ich immer schon gehasst, der eine Frame veraendert sich, dann wird es wieder in dem einen Frame geoeffnet..
    Mit frames habe ich nie gearbeitet, ich hab immer fuer jeden Link eine neue Seite erstellt...
    Aber jetzt ist es total super!!!!! :)
    Ich freu mich irgendwie grade etwas.. naja ;)
    Aber eine kleine Fehlermeldung zeugt er mir an, hier der Grund fuer die Meldung:

    Code
    <? switch ($_GET['action']) {


    Das ist halt bei meiner Switchabfrage, und hier der Fehler

    Zitat

    Notice: Undefined index: action in C:\Programme\xampp\htdocs\self\dreispalten\include\case.php on line 1

    Das ist halt auch line 1 :)
    Soweit ich das verstanden habe, versteht er das 'action' nicht, aber das weißt du warscheinlich besser als ich! :P
    Irgendeine Moeglichkeit das wegzubekommen?! :)

    Dann waere mein Leben rund! ;)

    MFG

  • hm, normal ist das richtig, das action ist ne variable, kann genaus gut "link" oder "id" heißen, ist nur die variable die hinter der index.php steht (index.php?link= ... index.php?id= etc.)

    Hm, was hast du in deiner Index datei stehen? Dass der action nicht definieren kann ist eigentlich wruscht, ich sehe du hast die case.php in einem unterordner liegen, wenn du die includest musste dran denken, dass sich die case.php dann auf oberster ebene befindet und alle verweise von da ausgehen müssen. Leg die mal auf gleicher ebene wie die index.php, bin grad etwas ratlos, der code ist richtig..

  • mh, aber dann muss ich quasi alle links umstellen.. Weil ich hab die ganzen Included dateien halt alle in einen Ordner gepackt, der uebersichtlichkeitshalber.. Aber ich glaube, es ist sowieso besser, alles in einen Ordner zu packen, weil nacher muss ich ja acuh aus dem "Include" ordner wieder in den Stammordner "rausincluden"..
    Okay rafft keiner! ;)
    naja.. ich werde wohl alle verweise umschreiben, und alles in einen Ordner packen.. :)

  • ich hab das schon gerafft... das ist dabei halt immer so ne überlegungssasche, wenn du eine datei im ordner images hast, und eine php datei im gleichenordner, und verweist auf das Bild, musst du dran denken, dass das bild mit images/bild.jpg verweist, und nicht nur /bild.jpg (für gleiche ebene), da die datei aus dem ordner in die oberste ebene gezogen wird.

  • hier mal meine vereinfachte version von includes^^ :


    damit kannst du verhindern, dass jemand versucht sowas wie http://www.domain.de/bösedatei.bla zu includen.
    in diesem beispiel liegen alle dateien, die es zu includen gibt in dem ordner includes/
    sie sind so benannt, wie sie auch mit post übergeben werden, also zB ?page=index, ?page=gbook oder ?page=fotos
    wenn es die seite nicht gibt, soll automatisch die standartseite aufgerufen werden, hier: includes/index.php
    mfg

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Hm, also ich glaub nach dem oben von mir geposteten Script kann man keine Bösen seiten includen, wenn jemand etwas verkehrtes in die URL eingibt wird automatisch case default ausgegeben, also können nur seiten included werden die auch angegeben sind...

  • ja is aber ne menge schreibarbeit, da man für jede neue seite dort einen neuen case einbauen muss...
    mfg

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!