Devian07: Tage zwischen Terminen automatisch generieren

Hallo alle zusammen,
ich habe folgendes vor und benötige dabei ein wenig hilfe.
Ich habe in meiner Datenbank mehrere Termine im Format YYYYY-MM-DD gespeichert. Nun liste ich die Termine mit einer Datenbankabfrage auf. Ich nehme mal als Beispiel den 20.April.2010, den 24.April.2010 und den 5.Mai.2010.

Nun würde ich gerne die Tage die zwischen den Terminen liegen in meinem Terminkalender auch anzeigen lassen.
Also sollte es wie folgt aussehen:

20.April.2010 Termin 1
21.April.2010
22.April.2010
23.April.2010
24.April.2010 Termin 2
25.April.2010
26.April.2010
27.April.2010
28.April.2010
29.April.2010
30.April.2010
1.Mai.2010
2.Mai.2010
3.Mai.2010
4.Mai.2010
5.Mai.2010 Termin 3

Bisher arbeite ich mit folgendem Code:

$result = $db->query("SELECT DISTINCT(datum) FROM bb".$n."_termine  ORDER BY datum $order");
while($termine = $db->fetch_array($result)) {

eval ("$spruchbit .= " ".$tpl->get("termine_terminebit")."";");
}

Ist mein Vorhaben realisierbar, wenn ja, wie?

  1. n'abend,

    Hallo alle zusammen,
    ich habe folgendes vor und benötige dabei ein wenig hilfe.
    Ich habe in meiner Datenbank mehrere Termine im Format YYYYY-MM-DD gespeichert. Nun liste ich die Termine mit einer Datenbankabfrage auf. Ich nehme mal als Beispiel den 20.April.2010, den 24.April.2010 und den 5.Mai.2010.

    Kennst du das Start- und Enddatum bereits, oder musst du das noch aus der Datenbank holen?

    Nun würde ich gerne die Tage die zwischen den Terminen liegen in meinem Terminkalender auch anzeigen lassen.

    Du könntest deine Termine aus der Datenbank holen. Bei der Schleife zur Ausgabe merkst du dir einfach immer das aktuelle Datum, um es im nächsten Durchlauf gegen das kommende Datum prüfen zu können. Wenn die Beiden Datümser™ mehr als einen Tag auseinander liegen, kannst du das dann auffüllen.

    1. Hole Datümser™ aus Datenbank
    2. Initialisiere Variable $last mit null
    3. Für jedes Datum in Datenkbankabfrage mache
      3-1) hole Datum aus Abfrage in Variable $now
      3-2) wenn $last nicht null und Differenz zwischen $last und $now größer 1 Tag mache (3-2-1), sonst (3-2-2)
      3-2-1) für jeden Tag Differenz zwischen $last und $now berechne Datum und gib aus
      3-2-2) gib $now aus

    Das in Code umzusetzen, überlasse ich erstmal dir.

    eval ("$spruchbit .= " ".$tpl->get("termine_terminebit")."";");

    wozu (ge)brauchst du hier ein eval()? Weisst du was du hier tust, oder hast du das einfach irgendwo kopiert und nicht weiter hinterfragt?

    weiterhin schönen abend...

    --
    #selfhtml hat ein Forum?
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    1. Vielen Dank für deine Hilfe!
      Das Start- und Enddatum resultiert aus den zeitlich gesehen ersten und den letzten Termin, der in der Datenbank gespeichert ist.

      Dein Vorschlag kann ich soweit nachvollziehen. Ich habe nun das jeweils zuletzt in der While schleife verwendete Datum in der Variable $last gespeichert. Kann sie auch ohne Probleme vergleichen. Wenn ich das gedanklich weiter entwickle würde es für mich glaube ich schwierig werden (3-2-1) auszuführen. Angenommen ich habe die Different von $last und $now ermittelt. Wie gebe ich das Datum genau $Differenz mal aus? Und wie schaffe ich es, dass der Tag dabei immer um +1 anwächst?

      Ein weiteres Problem wird es sein, wenn die zu vergleichenden Termine in zwei unterschiedlichen Monaten liegen. Dafür müsste ich die Anzahl der Tage in einem Monat wissen. Wie erreiche ich dies mit Berücksichtigung auf ein evtl. Schaltjahr?

      mfg devian
      PS: ich arbeite mit
      eval ("$spruchbit .= " ".$tpl->get("termine_terminebit")."";");
      weil die Termine in einem Template eingebettet aufgelistet werden sollen.

      1. Hi,

        Angenommen ich habe die Different von $last und $now ermittelt. Wie gebe ich das Datum genau $Differenz mal aus?

        Mit einer Schleife.

        Und wie schaffe ich es, dass der Tag dabei immer um +1 anwächst?

        Mit den Datumsfunktionen von PHP - nachdem du dir deine Datümer in ein Format gewandelt hast, mit denen diese etwas anfangen können.

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. Hi,

          Angenommen ich habe die Different von $last und $now ermittelt. Wie gebe ich das Datum genau $Differenz mal aus?

          Mit einer Schleife.

          Und wie schaffe ich es, dass der Tag dabei immer um +1 anwächst?

          Mit den Datumsfunktionen von PHP - nachdem du dir deine Datümer in ein Format gewandelt hast, mit denen diese etwas anfangen können.

          MfG ChrisB

          Danke habe nun alles hinbekommen. War gar nicht so schwer wie ich dachte.
          Habe folgenden Code einfach in die While schleife eingebettet:
          if(isset($timestampy)) {
          $timestampdiferenz=((($timestampx-$timestampy)/86400)-1);
          $count="1";
          while($count <= $timestampdiferenz)
          {
          $fehlendesdatum = ($timestampy + ($count*86400));
          $fehlendesdatum_tag = date("d",$fehlendesdatum);
          $fehlendesdatum_jahr = date("Y",$fehlendesdatum);
          $fehlendesdatum_weekday = date("w", $fehlendesdatum);
          $fehlendesdatum_monat = date("n",$fehlendesdatum);
             $fehlendesdatum_monatename = $monate[$fehlendesdatum_monat];
          $fehlendesdatum_weekdayname = $weekdays[$fehlendesdatum_weekday];
          $datum2 = "$fehlendesdatum_weekdayname, $fehlendesdatum_tag $fehlendesdatum_monatename $fehlendesdatum_jahr";
          eval ("$spruchbit .= " ".$tpl->get("termine_fehlendeterminebit")."";");
          ++$count;
          }
          }
          $timestampy = $timestampx;