Ankündigung

Einklappen
Keine Ankündigung bisher.

Termine aus Terminplan anzeigen, Begrenzung auf z.B. 4 Wochen

Einklappen

Neue Werbung 2019

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

  • Termine aus Terminplan anzeigen, Begrenzung auf z.B. 4 Wochen

    Guten Tag,

    ich möchte aus einem Terminkalender Termine raussuchen und in einer Tabelle schreiben lassen. Das funktioniert auch ganz gut mit folgendem PHP-Script:
    PHP-Code:
    $trans = array( 'Monday' => 'Mo''Tuesday' => 'Di''Wednesday' => 'Mi''Thursday' => 'Do''Friday' => 'Fr''Saturday' => 'Sa''Sunday' => 'So''Mon' => 'Mo''Tue' => 'Di''Wed' => 'Mi''Thu' => 'Do''Fri' => 'Fr''Sat' => 'Sa''Sun' => 'So''January' => 'Januar''February' => 'Februar''March' => 'März''May' => 'Mai''June' => 'Juni''July' => 'Juli''October' => 'Oktober''December' => 'Dezember');
    $termine '{Liste.Termine}'
    $result=""preg_match_all("/[\d]{2}+\.+[\d]{2}+\.+[\d]{2}/",$termine,$datum);
    for (
    $i 0$i count($datum[0]); $i++)
    {
    $tag substr($datum[0][$i],0,2);
    $monat substr($datum[0][$i],3,2);
    $jahr substr($datum[0][$i],6,2);
    $wochentag strtr(date("l"mktime(0,0,0,$monat,$tag,$jahr)), $trans);
    $monatname strtr(date("F"mktime(0,0,0,$monat,$tag,$jahr)), $trans); 
    $result $result.$wochentagdate(", j. "mktime(0,0,0,$monat,$tag,$jahr)). $monatnamedate(" Y"mktime(0,0,0,$monat,$tag,$jahr))."\r\n";} 
    echo 
    substr($result,0,-2); 
    Jetzt möchte ich aber nur Termin in den nächsten 4 Wochen anzeigen lassen. Wie kann ich das machen?
    Durch Einfügen von:
    $term = $term.(mktime(0,0,0,$monat,$tag,$jahr)). "\r\n" ;
    $a= substr($term,0,-2);$b= strtotime("+28 day")

    bekomme ich die Termine ($a) und das Tagesdatum + 28 Tage ($b) im Unix-Format und kann sie dann ja eigentlich vergleichen. Wie muss ich das aber machen. Eine einfache If Verknüpfung, z.B. „if($a < $b) echo substr($result,0,-2)“ funktioniert nicht. Genauso führt auch kein break der for-Schleife „if($a<$b)break“ zum Erfolg. Hiermit kann icg nur die Anzahl der Termine einschränken z.B. „if($i ==2) break“

    Welche Lösung gibt es um nur Termine, die in den nächsten 4 Wochen stattfinden, anzeigen zu lassen?

    vielen Dank


  • #2
    Eckige Klammern, nicht geschweifte... => [php]
    PHP-Code:
    $trans = array( 'Monday' => 'Mo''Tuesday' => 'Di''Wednesday' => 'Mi''Thursday' => 'Do''Friday' => 'Fr''Saturday' => 'Sa''Sunday' => 'So''Mon' => 'Mo''Tue' => 'Di''Wed' => 'Mi''Thu' => 'Do''Fri' => 'Fr''Sat' => 'Sa''Sun' => 'So''January' => 'Januar''February' => 'Februar''March' => 'März''May' => 'Mai''June' => 'Juni''July' => 'Juli''October' => 'Oktober''December' => 'Dezember');
    $termine '{Liste.Termine}'
    $result=""preg_match_all("/[\d]{2}+\.+[\d]{2}+\.+[\d]{2}/",$termine,$datum);
    for (
    $i 0$i count($datum[0]); $i++)
    {
    $tag substr($datum[0][$i],0,2);
    $monat substr($datum[0][$i],3,2);
    $jahr substr($datum[0][$i],6,2);
    $wochentag strtr(date("l"mktime(0,0,0,$monat,$tag,$jahr)), $trans);
    $monatname strtr(date("F"mktime(0,0,0,$monat,$tag,$jahr)), $trans); 
    $result $result.$wochentagdate(", j. "mktime(0,0,0,$monat,$tag,$jahr)). $monatnamedate(" Y"mktime(0,0,0,$monat,$tag,$jahr))."\r\n";} 
    echo 
    substr($result,0,-2); 
    Welche Lösung gibt es um nur Termine, die in den nächsten 4 Wochen stattfinden, anzeigen zu lassen?
    Die "nächsten 4 Wochen" (dein Betrachtungszeitraum) beginnen heute und enden in (heute + 28 Tage)
    Ein Termin besteht aus Start und Ende.

    Jetzt formulier mal mit Worten, wann ein Termin innerhalb des Betrachtungszeitraums liegt - DAS ist deine IF-Bedingung.
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Zitat von lstegelitz Beitrag anzeigen

      Jetzt formulier mal mit Worten, wann ein Termin innerhalb des Betrachtungszeitraums liegt - DAS ist deine IF-Bedingung.
      Ich möchte alle Termine sehen, die in den nächsten 4 Wochen aufgeführt sind, also $a<$b! Oder mache ich da einen Gedankenfehler? Auf jeden Fall funktioniert es so „if($a < $b) echo substr($result,0,-2)“ nicht. Liegt es daran, dass die Termine mit einer "for"-Schleife gesucht werden und dann nicht alle gefundenen Termine mit "heute + 28 Tage" verglichen und ausgegeben werden?

      Kommentar


      • #4
        Du hast VIER Daten (Mehrzahl von Datum... Datumse, Datümer, ...). Es hilft dir nicht, nur einen einzelnen Wert zu betrachten.
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Ich hab die gefundenen Termine (wie viele auch immer) und das Stichdatum (heute +28 Tage). Und wie bekomme ich jetzt nur die Termine, vor dem Stichtag liegen? Hast du da vielleicht einen konkreten Tipp?

          Kommentar


          • #6
            Bitte PHP-Tags benutzen:

            Standards - Best Practices - AwesomePHP - Guideline für WebApps

            Kommentar


            • #7
              Zitat von rkr Beitrag anzeigen
              Bitte PHP-Tags benutzen:

              Ist geändert, Danke!

              Kommentar


              • #8
                Zitat von adi1 Beitrag anzeigen
                Ich hab die gefundenen Termine (wie viele auch immer) und das Stichdatum (heute +28 Tage). Und wie bekomme ich jetzt nur die Termine, vor dem Stichtag liegen? Hast du da vielleicht einen konkreten Tipp?
                Ja - du fragst es falsch ab (konkret? Du hast ja nicht mal Code geliefert...)
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Brauche gerade etwas Pause

                  PHP-Code:
                  <?php
                  /* Ausgangslage */

                  $day 60 60 24;
                  $dates = array();
                  for(
                  $i=0$i++ < 10000;) {
                      
                  $dates[] = date('d.m.Y'time() + rand(-$day 10$day 50));
                  }
                  $datesString join("\n"$dates);


                  /* Programm */


                  $dates explode("\n"$datesString);
                  $dates array_map('trim'$dates);

                  $startDate = new \DateTime(); // NOW
                  $endDate = new \DateTime('+1 month'); // +1 Monat

                  $filterFn = function ($date) use ($startDate$endDate) {
                      
                  $curDate = new \DateTime($date);
                      return 
                  $curDate >= $startDate && $curDate <= $endDate;
                  };

                  $relevantDates array_filter($dates$filterFn);

                  print_r($relevantDates);
                  Standards - Best Practices - AwesomePHP - Guideline für WebApps

                  Kommentar


                  • #10
                    Ich kann nur den Tipp geben, beschäftige dich mit DateTime Klasse. Damit kann du so etwas machen
                    PHP-Code:
                    $myDate date_create('2014-12-01');
                    $next4weeks date_create('today + 4 weeks');
                    if(
                    $myDate $next4weeks) {
                      
                    $tx 'innerhalb';
                    } else {
                      
                    $tx 'außerhalb';
                    }
                    echo 
                    $myDate->format('D, d.m.Y').' liegt '.$tx.' der nächsten 4 Wochen';
                    //Mon, 01.12.2014 liegt innerhalb der nächsten 4 Wochen 
                    Sehe grad, hat sich mit rkr überschnitten. 1 Monat != 4 Wochen
                    PHP-Klassen auf github

                    Kommentar


                    • #11
                      Zitat von jspit Beitrag anzeigen
                      Ich kann nur den Tipp geben, beschäftige dich mit DateTime Klasse. Damit kann du so etwas machen
                      PHP-Code:
                      $myDate date_create('2014-12-01');
                      $next4weeks date_create('today + 4 weeks');
                      if(
                      $myDate $next4weeks) {
                        
                      $tx 'innerhalb';
                      } else {
                        
                      $tx 'außerhalb';
                      }
                      echo 
                      $myDate->format('D, d.m.Y').' liegt '.$tx.' der nächsten 4 Wochen';
                      //Mon, 01.12.2014 liegt innerhalb der nächsten 4 Wochen 
                      Danke, das funktioniert mit einem Datum, aber irgendwie nicht, wenn ich mit dem oben angegebenen PHP-Script mehrere Termine erhalte und die, die in den nächsten 4 Wochen fällig sind, aufgelistet haben möchte.

                      Kommentar


                      • #12
                        Hast du meinen Beitrag bemerkt?
                        Standards - Best Practices - AwesomePHP - Guideline für WebApps

                        Kommentar


                        • #13
                          Zitat von rkr Beitrag anzeigen
                          Hast du meinen Beitrag bemerkt?
                          Ja, Danke! Da weiß ich aber nicht genau meine gefundenen Termine einzubinden

                          Kommentar


                          • #14
                            Bevor wir hier weiter raten, definier doch mal was für dich ein Termin ist... besteht er nun aus Start und Ende oder gibt es nur EINEN Zeitpunkt?
                            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                            Kommentar


                            • #15
                              Ich bekomme aus dem Terminkalender eine Liste von Terminen für bestimmte Kunden in der Form:
                              Di. 18. November 2014
                              Mi. 19. November 2014
                              Mo. 9. März 2015
                              Di. 12. Mai 2015
                              Hierfür führe ich folgendes PHP-Script aus:

                              PHP-Code:
                              $trans = array( 'Monday' => 'Mo''Tuesday' => 'Di''Wednesday' => 'Mi''Thursday' => 'Do''Friday' => 'Fr''Saturday' => 'Sa''Sunday' => 'So''Mon' => 'Mo''Tue' => 'Di''Wed' => 'Mi''Thu' => 'Do''Fri' => 'Fr''Sat' => 'Sa''Sun' => 'So''January' => 'Januar''February' => 'Februar''March' => 'März''May' => 'Mai''June' => 'Juni''July' => 'Juli''October' => 'Oktober''December' => 'Dezember');
                              $termine '{Liste.Termine}'
                              $result=""preg_match_all("/[\d]{2}+\.+[\d]{2}+\.+[\d]{2}/",$termine,$datum);
                              for (
                              $i 0$i count($datum[0]); $i++)
                              {
                              $tag substr($datum[0][$i],0,2);
                              $monat substr($datum[0][$i],3,2);
                              $jahr substr($datum[0][$i],6,2);
                              $wochentag strtr(date("l"mktime(0,0,0,$monat,$tag,$jahr)), $trans);
                              $monatname strtr(date("F"mktime(0,0,0,$monat,$tag,$jahr)), $trans); 
                              $result $result.$wochentagdate(", j. "mktime(0,0,0,$monat,$tag,$jahr)). $monatnamedate(" Y"mktime(0,0,0,$monat,$tag,$jahr))."\r\n";}
                               echo 
                              substr($result,0,-2); 
                              Ich möchte jetzt aber nur die Termine angezeigt bekommen, die in den nächsten 4 Wochen liegen und nicht die anderen, also:
                              Di. 18. November 2014
                              Mi. 19. November 2014


                              (Mit folgendem PHP-Script bekomme ich die Termine im Unix-Format, aber eben auch alle:

                              PHP-Code:
                              $trans = array( 'Monday' => 'Mo''Tuesday' => 'Di''Wednesday' => 'Mi''Thursday' => 'Do''Friday' => 'Fr''Saturday' => 'Sa''Sunday' => 'So''Mon' => 'Mo''Tue' => 'Di''Wed' => 'Mi''Thu' => 'Do''Fri' => 'Fr''Sat' => 'Sa''Sun' => 'So''January' => 'Januar''February' => 'Februar''March' => 'März''May' => 'Mai''June' => 'Juni''July' => 'Juli''October' => 'Oktober''December' => 'Dezember');
                              $termine '{Liste.Termine}';
                               
                              $result=""$term="";preg_match_all("/[\d]{2}+\.+[\d]{2}+\.+[\d]{2}/",$termine,$datum);
                              for (
                              $i 0$i count($datum[0]); $i++)
                              {
                              $tag substr($datum[0][$i],0,2);
                              $monat substr($datum[0][$i],3,2);
                              $jahr substr($datum[0][$i],6,2);
                              $wochentag strtr(date("l"mktime(0,0,0,$monat,$tag,$jahr)), $trans);
                              $monatname strtr(date("F"mktime(0,0,0,$monat,$tag,$jahr)), $trans); 
                              $term $term.(mktime(0,0,0,$monat,$tag,$jahr)). "\r\n" ;};
                               echo 
                              substr($term,0,-2); 
                              also:
                              1416265200
                              1416351600
                              1425855600
                              usw.)

                              Kommentar

                              Lädt...
                              X