Asmodis: Datei erst nach If-Anweisung einbinden

Moin zusammen, wie kann man das hinbekommen, das eine externe PHP-Datei erst nachdem die If-Anweisung ausgeführt wurde eingebunden wird? Mit include und require wird die ja dirket eingebunden, jedoch bekomme ich dann den Fehler, dass der Ordner nicht existiert, weil der vorher noch nicht erstellt wurde und das die Variablen leer sind, weil die noch nicht mit Post übergeben wurden.

Hat jemand eine Idee wie ich das hinbekomme? Oder besteht keine andere möglichkeit als das ich das Script von artikel.php dort einfüge?

Vielen Dank schonmal Asmodis

$year = date('Y'); 
if(file_exists('../news/' . $year)){ 
    $month = date('m'); 
    if(file_exists('../news/' . $year . '/' . $month)){ 
        include 'artikel.php'; 
    } else{ 
        $month = date('m'); 
        mkdir('../news/' . $year . '/' . $month, 0777, true); 
        include 'artikel.php'; 
    } 
} else{ 
    $year = date('Y'); 
    $month = date('m'); 
    mkdir('../news/' . $year . '/' . $month, 0777, true); 
    include 'artikel.php'; 
}

akzeptierte Antworten

  1. Moin,

    wie kann man das hinbekommen, das eine externe PHP-Datei erst nachdem die If-Anweisung ausgeführt wurde eingebunden wird? Mit include und require wird die ja dirket eingebunden, jedoch bekomme ich dann den Fehler, dass der Ordner nicht existiert, weil der vorher noch nicht erstellt wurde und das die Variablen leer sind, weil die noch nicht mit Post übergeben wurden.

    Hat jemand eine Idee wie ich das hinbekomme? Oder besteht keine andere möglichkeit als das ich das Script von artikel.php dort einfüge?

    Wie wäre es den Inhalt von der artikel.php in eine Funktion zu packen und diese aufzurufen, an entsprechender Stelle?

    Gruß
    jo

    1. Danke für die schnelle Antwort!! Ja das mit der Funktion hat funktioniert :>

      Danke!!! Asmodis

      1. Danke für die schnelle Antwort!! Ja das mit der Funktion hat funktioniert :>

        Danke!!!

        Gern!

        Gruß
        Jo

  2. Tach!

    wie kann man das hinbekommen, das eine externe PHP-Datei erst nachdem die If-Anweisung ausgeführt wurde eingebunden wird?

    Einfach so hinschreiben.

    Mit include und require wird die ja dirket eingebunden, jedoch bekomme ich dann den Fehler, dass der Ordner nicht existiert, weil der vorher noch nicht erstellt wurde

    if (false) {
      require 'nichtexistent.php';
    }
    

    erzeugt bei mir keinerlei Fehlermeldung. Die Gegenprobe mit true hingegen ergibt wie erwartet eine.

    und das die Variablen leer sind, weil die noch nicht mit Post übergeben wurden.

    Du hast wohl ein Ablaufproblem? Vielleicht solltest du lieber testen, ob es überhaupt ein POST-Request ist oder nicht, wenn du auf dessen Werte angewiesen bist. Alternativ geht auch ein Test auf die übergebenene Werten, denn selbst wenn der Post-Request kommt, heißt das nicht, dass die Werte gesetzt sein müssen.

    $year = date('Y'); 
    if(file_exists('../news/' . $year)){ 
        $month = date('m'); 
        if(file_exists('../news/' . $year . '/' . $month)){ 
            include 'artikel.php'; 
        } else{ 
            $month = date('m'); 
            mkdir('../news/' . $year . '/' . $month, 0777, true); 
            include 'artikel.php'; 
        } 
    } else{ 
        $year = date('Y'); 
        $month = date('m'); 
        mkdir('../news/' . $year . '/' . $month, 0777, true); 
        include 'artikel.php'; 
    }
    

    Du hast unnötig viele Zuweisungen desselben Wertes an $year und bis auf das letzte else ist das auch für $month so. Das Script wird wohl kaum über Monats- oder Jahreswechsel laufen, dass sich die Rückgabe von date() ändert.

    dedlfix.

    1. Dachte eigentlich auch, dass ein include in dem Moment eingebunden wird, zu dem die Code-Ausführung den Ort des Include erreicht.

      Mit der recursive-Option von mkdir, die Du ja eh schon entdeckt hast, solltest Du Deinen Code deutlich kompakter formulieren können:

      $path = '../news/' . date('Y') . '/' . date('m');
      
      if (!file_exists($path)){ 
         mkdir($path, 0777, true); 
      
      include 'artikel.php'; 
      

      ALLERDINGS frage ich mich, warum Du die Existenz des Jahr/Monat Pfades sicherstellen musst, bevor Du artikel.php einbindest. Wenn artikel.php diesen Pfad voraussetzt - ist es dann nicht die Pflicht dieses Scripts, sich um seinen eigenen Kram zu kümmern?

      Rolf