Tage zwischen Terminen automatisch generieren
Devian07
- php
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?
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.
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...
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.
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
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;