Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Datei abhängig vom Datum am Wochentag anzeigen außer Sa/So

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Datei abhängig vom Datum am Wochentag anzeigen außer Sa/So

    Hallo,
    ich möchte folgendes umsetzen. Eine Datei plan_17_12_2014.html, plan_18_12_2014.html usw. soll am entsprechenen Tag angezeigt werden. Am Monitor soll mittels Frames (2!) links der Plan mit heutigem, rechts der Plan mit morgigem Datum angezeigt werden. So weit funktioniert es. Wie muss ich nun vorgehen um den Plan an einem Freitag (Script unten läuft also im rechten Frame) nicht den Plan vom Samstag sondern bereits vom Montag anzeigen zu lassen? Ich weiß, dass die Lösung bis jetzt mit time()+ 86400 nicht ideal ist aber es funktioniert

    PHP-Code:
    //Dateiname enthält Datum Tag_Monat_Jahr (jeweils zweistellig; Jahreszahl 4stellig)
    //Sonntag = 0, Samstag = 6 

    $defaultdatei "plan.html"//Standarddatei wenn kein Termin
    $datum date("d-m-Y"time() + 86400);
    $anzeigendatei "plan_".$datum.".html";
    if(
    file_exists($anzeigendatei)){@readfile($anzeigendatei);}else{@readfile($defaultdatei);} 
    Was ich nun bräuchte wäre eine Möglichkeit die 86400 durch 259200 (=3x86400) zu ersetzen. Also sinngemäß vielleicht so was wie wenn echo date ("w") = 5 dann time() +259200

    Besten Dank im Voraus für alle Infos

    hansm


  • #2
    Verwende am einfachsten DateTime:
    PHP-Code:
    $today = new DateTime();
    $nextDay = new DateTime("+1 Weekday");
    $fileName $nextDay->format('d-m-Y').'.html'

    Kommentar


    • #3
      elgenater Code aber Problem noch vorhanden

      hallo,
      vielen Dank für die rasche Antwort. Entscheidend wäre aber für mich, dass an einem Freitag bereits der Montag angezeigt wird. Es müsste also sinngemäß

      wenn date ("w") = 5 dann + 3 Weekday noch eingebaut werden. Vielen Dank fürs Mitdenken

      PHP-Code:
      $today = new DateTime();
      $nextDay = new DateTime("+1 Weekday");
      $fileName $nextDay->format('d-m-Y').'.html'

      Kommentar


      • #4
        Du hast die Wirkung von "+1 Weekday" noch nicht verstanden.
        Probier das hier mal Online
        PHP-Code:
        <?PHP
        $thisDay 
        date_create('Today');
        $thisDay date_create('2014-12-19');  //Freitag zum Test
        $nextDay $thisDay->modify("+1 Weekday"); 
        var_dump($nextDay);
        mit diversen Daten!
        Der Code mach das gleiche wie der von Tropi. Wenn du dies ausgetestet hast, nimm die Zeile mit den fixen Datum raus.
        PHP-Klassen auf github

        Kommentar


        • #5
          sollte gehen

          Kann es zwar gerade nicht ganz durchtesten (nur kurze Pause) aber ich glaube ich habe es verstanden. Es hängt damit zusammen - stimmts?

          ...
          If the end day is Saturday or Sunday, add five, otherwise add the weekday number.
          ...

          WOW - da muss man erst mal drauf kommen - werde es später zuhause noch mal durchtesten. Vielen Dank schon einmal!

          Kommentar


          • #6
            PHPs "Weekday" ist quasi das Äquivalent zum deutschen Arbeitstag (exkl. Feiertage). (Möglicherweise aber auch Werktag - probier das sicherheitshalber aus.)

            So gesehen bist du von jeglicher Denkarbeit schon befreit, weil du quasi deine Anforderung "den nächsten Werktag/Arbeitstag" anzuzeigen damit direkt formulieren kannst.

            Kommentar


            • #7
              funktioniert bis auf Kleinigkeit

              Das Script tut was es soll so lange der Dateiname z.B. "18_12_2014.html" ist. Die HTML-Datein heißen aber "plan_von_18_12_2014.html". Bei meinem ersten Code (der ja dafür das Samstag-Problem hat) ging das noch. Ich habe es jetzt mal analog dazu so porbiert:

              PHP-Code:

              $defaultdatei 
              "keinplan.html"//Standarddatei wenn kein Termin
              $today = new DateTime();
              $nextDay = new DateTime("+1 Weekday");
              $fileName $nextDay->format('plan_vom_'.'d-m-Y').'.html';  
              if (
              file_exists ($fileName)){@readfile ($fileName);}else {readfile($defaultdatei);} 
              Was muss ich also tun um plan_von_18_12_2014.html ausgelesen zu bekommen?

              Wie immer vielen Dank im voraus

              Kommentar


              • #8
                Du musst das 'plan_vom' vor dem format() hinzufügen. Das ist ja konstant und Bedarf keiner Formatierung.
                Also kurz, so: 'plan_vom'.$nextDay->format(...).'.html';

                Kommentar


                • #9
                  Funktioniert

                  Danke Tropi & jspit - ihr seid meine Helden des Tages.

                  @ Tropi: ich hatte so ziemlich alle Variationen durch bis auf deine .
                  @@ beide: ihr scheint das schon eine Zeit lang zu machen - ich hoffe dass ich mal ansatzweise so weit komme - wenn es funktioniert macht es ja schon Spaß

                  Für alle die so was ähnliches mal nachbauen möchten hier noch mal der komplette Code:
                  PHP-Code:
                  $defaultdatei "keinplanvorhanden.html"//Standarddatei wenn kein Termin
                  $today = new DateTime();
                  $nextDay = new DateTime("+1 Weekday");
                  $fileName 'plan_vom_'.$nextDay->format('d-m-Y').'.html';  
                  if (
                  file_exists ($fileName)){@readfile ($fileName);}else {readfile($defaultdatei);} 
                  Endlich kann ich mich neuen Problemen widmen

                  Danke!!!

                  Kommentar

                  Lädt...
                  X