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

  • adi1
    hat ein Thema erstellt Termine aus Terminplan anzeigen, Begrenzung auf z.B. 4 Wochen.

    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

  • adi1
    antwortet
    Danke für die Antworten!
    Hinter {Liste.Termine} steht diese html-Datei (im Prinzip nur eine Tabelle mit den Datenfeldern):

    <html><head><body><table COLS=3 BORDERr=1 WIDTH=”100%”>
    <tr><th WIDTH=”10%” bgcolor=”#FFFF00”align=”center”><b>Datum</b></th><th WIDTH=”10%”bgcolor=”#FFFF00” align=”center”><b>Uh
    </tr>
    <tr>td WIDTH=10%” align=”center”>18.11.14</td>
    <td WIDTH=”10%” align=”center”> 17:00</td>
    <td WIDTH=”80%” >Bereich: Reparatur</td>
    </tr>
    <tr>td WIDTH=10%” align=”center”>19.11.14</td>
    <td WIDTH=”10%” align=”center”> 17:20</td>
    <td WIDTH=”80%” >Bereich: Reparatur2</td>
    </tr>
    <tr>td WIDTH=10%” align=”center”>26.11.14</td>
    <td WIDTH=”10%” align=”center”> 16:40</td>
    <td WIDTH=”80%” >Bereich: Anmelden</td>
    </tr>
    <tr>td WIDTH=10%” align=”center”>29.11.14</td>
    <td WIDTH=”10%” align=”center”> 17:40</td>
    <td WIDTH=”80%” >Bereich: Abholen</td>
    </tr>
    <tr>td WIDTH=10%” align=”center”>09.03.15</td>
    <td WIDTH=”10%” align=”center”> 16:20</td>
    <td WIDTH=”80%” >Bereich: Kontrolle</td></tr>
    </tr>
    <tr>td WIDTH=10%” align=”center”>12.05.15</td>
    <td WIDTH=”10%” align=”center”> 17:00</td>
    <td WIDTH=”80%” >Bereich: Abholen</td>
    </tr>
    </table></body></html>

    Hierin sind die Termine enthalten und können mit dem von mir geposteten PHP-Code ausgelesen werden. Ich erhalte ja, wie schon beschrieben die Terminliste. Mit echo($result) bzw. im Unix-Code mit $echo ($term) kann ich diese Liste ja ausgeben. Ich kann sie nur nicht auf 4 Wochen begrenzen. Gibt es denn dafür keine Möglichkeit der zeitlichen Begrenzung?

    vielen Dank

    Einen Kommentar schreiben:


  • rkr
    antwortet
    PHP-Code:
    $termine '{Patient.Termine}'
    Naja, wenn da nicht noch von aussen irgendeine Magie im Spiel ist, dann gehst du eben keine Termine durch, sondern nur

    {Patient.Termine}
    was selbstredend weder ein Termin noch eine Liste von Terminen ist. Das kann PHP auch nicht von selbst in irgendwas auflösen. Das ist einfach nur diese Zeichenkette, die da steht. Die steht für nichts:

    https://eval.in/221578

    Bei meinem Codebeispiel gibt es immerhin Daten:

    https://eval.in/221580

    Einen Kommentar schreiben:


  • adi1
    antwortet
    DA ich ein Anfänger bin kann ich es auch nicht richtig erklären. Mit dem genannten script kann ich aber alle Termine für die Kunden raussuchen und bekomme dann ja auch eine entsprechende Liste. Kann man da nicht die Termine für die nächsten 4 Wochen einschränken?

    {liste.termine} ist eine Tabelle in html, in der die Termine stehen und mit dem genannten PHP-Code werden die Termine extrahiert.

    Einen Kommentar schreiben:


  • rkr
    antwortet
    Ich kann hier mit wenig anfangen:

    PHP-Code:
    $termine '{Patient.Termine}'

    Einen Kommentar schreiben:


  • adi1
    antwortet
    Zitat von rkr Beitrag anzeigen
    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);

    Wie kann ich denn diesen PHP-Code in meinen einbinden und damit meine Termine filtern und anzeigen kann? Vielleicht kannst du mir dabei helfen! vielen Dank im voraus!

    Einen Kommentar schreiben:


  • adi1
    antwortet
    Ich hab es versucht (letzte 3 Zeilen) und es geht nicht :
    PHP-Code:
    $trans = array( 'Monday' => 'Montag''Tuesday' => 'Dienstag''Wednesday' => 'Mittwoch''Thursday' => 'Donnerstag''Friday' => 'Freitag''Saturday' => 'Samstag''Sunday' => 'Sonntag''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" ;
    $terminxsubstr($term,0,-2);$datemaxstrtotime("+28 day");$heute=strtotime("now");};
    If(
    $heute<$terminx and $datemax>$terminx
     echo 
    substr($term,0,-2); 
    Ich bekomme alle Termine angezeigt. Was mache ich da falsch?

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    Ok, ein Termin hat nur ein Startdatum.. das heisst für dich:

    WENN Termin >= Jetzt UND Termin <= Jetzt+28 Tage
    DANN hast du einen Treffer

    Code this!

    Deine ganze Stringfummelei vergisst du auch wieder und schaust dir strtotime() an, damit wird das ganze zum 2-Zeiler (4, wenn man es übersichtlich machen will).

    Einen Kommentar schreiben:


  • adi1
    antwortet
    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.)

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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?

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • rkr
    antwortet
    Hast du meinen Beitrag bemerkt?

    Einen Kommentar schreiben:


  • adi1
    antwortet
    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.

    Einen Kommentar schreiben:


  • jspit
    antwortet
    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

    Einen Kommentar schreiben:


  • rkr
    antwortet
    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);

    Einen Kommentar schreiben:

Lädt...
X