switch-case inhalt changen

  • Hallo Leute,


    ich bin mal wieder unterwegs...


    und zwar will ich den inhalt meiner website über die switch-case funktion ändern.


    das läuft bis zu dem Punkt, andem es keine datei mit dem entsprechenden namen gibt.
    Hier sollte er dann die error404.php aufrufen, was er aber nicht tut...


    Vllt hat ja jemand ne idee:



    Im body.php soll der content ausgelesen werden:



    Danke schonmal im vorraus :)

  • also ganz einfach:
    ich erwarte an letzter stelle, dass wenn keiner dieser cases vorkommt, der inhalt der error404.php ausgelesen wird, weil entweder der link zu nichts führt, oder weil höchstwahrscheinlich die Seite nicht vorhanden ist, oder der benutzer eine falsche Internetadresse eingegeben hat, welche auf ein Ziel führt, welches es gar nicht gibt.


    Danke für die information, ich glaub das hatte ich übersehen. Klar brauche ich kein break mehr weil der default selbst der Abbruch der schleife ist... :D




    Ich hab mal den script im localhost gerunt und der localhost spuckt mir folgendes aus:




    Warning: include(land.php): failed to open stream: No such file or directory in C:\xampp\htdocs\dashboard\content.php on line 2


    Warning: include(): Failed opening 'land.php' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\dashboard\content.php on line 2


    Notice: Undefined variable: r in C:\xampp\htdocs\dashboard\content.php on line 43
    NULL
    Notice: Undefined variable: p in C:\xampp\htdocs\dashboard\content.php on line 44
    NULL



    Klar dass er land.php nicht includen kann, da es sie schlichtweg (noch) nicht gibt.


    Was bedeuten jetzt die anderen beiden genau?

  • Ohne den Code dazu kann man da jetzt wieder nichts sagen.


    Wo werden die Fehler ausgespuckt? Du bist doch nicht zum ersten mal im Forum :|



    Mal schauen ob ich die überhaupt richtig eingebaut hab die var_dumps...




    Ich habe sie nun an das ende der content.php gesetzt...


    im grunde würde die zusammengesetzte datei so aussehen:



    wenn jemand (m)ein Fehler entdeckt wäre das super...



    Gruß
    Flo

  • Du gibst $p nicht aus der Funktion zurück.
    Und den zurückgegebenen Wert $r setzt Du ausserhalb der Func nicht, sondern nutzt den Wert direkt um die Seite einzubinden:

    PHP
    1. include pageFilenames();


    Eine Möglickeit wäre:


    Oder per Ref:


    Oder aber auch:

  • bei der ersten methode sagt er mir das:


    Notice: Array to string conversion in C:\xampp\htdocs\dashboard\content.php on line 2


    Warning: include(Array): failed to open stream: No such file or directory in C:\xampp\htdocs\dashboard\content.php on line 2


    Warning: include(): Failed opening 'Array' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\dashboard\content.php on line 2


    Warning: include(guest.php): failed to open stream: No such file or directory in C:\xampp\htdocs\dashboard\content.php on line 44


    Warning: include(): Failed opening 'guest.php' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\dashboard\content.php on line 44
    string(9) "guest.php" string(5) "guest"



    bei der zweiten methode das:


    Warning: include(): Filename cannot be empty in C:\xampp\htdocs\dashboard\content.php on line 43


    Warning: include(): Failed opening '' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\dashboard\content.php on line 43
    string(0) "" string(0) ""



    bei der dritten sagt er mir folgendes:



    Fatal error: Call to undefined function getFilenames() in C:\xampp\htdocs\dashboard\content.php on line 44


    Also irgendwie haben die Vorschläge zwar gut ausgesehen, aber gebracht hatten sie leider nichts :/

  • Zitat

    aber gebracht hatten sie leider nichts


    Genau so wenig wie deine Fehlermeldungen ohne deinen Code um überhaupt zu wissen was du da machst..


    Und zwar so, dass die Zeilennummern mit den Fehlermeldungen übereinstimmen.


    Warum nicht einfach:



    Nach wie vor bin ich der Meinung, der Fehler liegt nicht in deinem Code.


    Code
    1. Warning: include(land.php): failed to open stream: No such file or directory


    Sagt doch eigentlich alles und ist selbsterklärend.


    Das widerspricht dann wiederrum deiner Aussage, alles funktioniere, bis "error404.php" aufgerufen werden soll.

  • Basi :


    wenn du der Meinung bist, dass es nicht an dem Code liegt, woran könnte es dann liegen?


    könnten sich die .htaccess und diese Code gegenseitig abschießen?


    in meiner .htaccess steht nämlich das drin:


    Code
    1. ErrorDocument 404 /error404.php


    Ist das vllt der Fehler?

  • So hier nocheinmal ein Versuch mich zu erklären:


    Ich habe basiert auf eine index.php eine Seite geschrieben, welche sich über eine switch-case-Funktion den angefragten Inhalt holt.
    Ist dieser nicht da, soll er die Error404 ausspucken welche ich gemacht habe...


    Die Funktionen dazu ist diese hier:


    Die zugehörige Navigation beläuft sich hierauf:



    Wenn ich nun auf meinem Test-Webspace die Testdomaine aufrufe, kommt der gewünschte Inhalt der home.php.


    Wenn ich nun einen Link öfnnen möchte der hier gelistet ist, bei dem ich weiß, dass es diese Datei nicht gibt, bringt er nichts heraus als das blanke Layout.


    Wenn ich aber nun in die Adressleiste gehe und dort statt index.php?page=guest dort eingebe index.php?page=lol (diese Seite gibt es sicherlich nicht) spuckt er mir die error404 raus, welche ich auch wollte.


    woran liegt es jetzt, dass er eine angefragte datei welche es nicht gibt auf dem Webspace einmal per Link nicht auf die error404 weiterleitet, aber die angefragte Datei aus der Adressleiste welche ich per hand eingegeben habe auf die error404 weiterleitet?




    Ich habe eine kleine Vermutung aber bin mir dabei nicht sicher:


    Es liegt um genau zu sein doch an meinem Script, er ist zwar an sich nicht falsch, aber er will eine Datei einbinden die es nicht gibt. Für diesen Fall dass er sie nicht einbinden kann, gibt es keine Exit-Bedingung, welche quasi den default aufruft.


    Ich bedanke mich für jegliche Hilfe :)



    EDIT:


    Wenn ich das richtig sehe bzw. denke, müsste ich eine kleine Funktion schreiben, welche prüft, ob die z.B. im Fall Gästebuch angefragte Datei included werden kann, falls ja die datei auslesen, falls nein auf die error404 weiterleiten

  • Jetzt verstehe ich was du meinst. Natürlich bekommst du nichts angezeigt wenn die Datei zwar nicht vorhanden ist, die Switch Abfrage aber greift. Das ist so logisch (und die Fehlermeldungen weisen noch mal expliziter darauf hin), dass ich es nicht mal in Betracht gezogen habe :)


    Was du brauchst ist eine Prüfung ob die Datei existiert:



    Der Fehler lag also nicht im Code oder im Dateisystem, sondern in deiner Logik.


    Nach wie vor ist jedoch das hier zwecks Dynamik und verringertem Änderungsaufwand die bessere Lösung.

  • Genau ^^


    Die Funktion an sich hatte gestimmt ^^


    Dann bin ich auch erst beim verfassen des Beitrags auf die Idee gekommen dass es vllt daran liegen könnte ^^


    Danke für die Hilfe :D


    Ich werde es direkt ausprobieren xD



    EDIT:



    Danke es funktioniert :)