Baba: Automatisch den nächsten Termin einfügen

Beitrag lesen

Coden macht Spass :)

Falls Du die Möglichkeit hast, php zu benutzen, würde ich darauf zurückgreifen. Der Vorteil: Du bist unabhängig von der Zeit, die der Nutzer in seinem Betriebssystem eingestellt hat. Das heisst, auch wenn der Nutzer ein falsches Datum eingestellt hat, funktioniert Deine Anzeige korrekt (wenn Du die Serverzeit richtig bekommst. Ansonsten musst du den code übersetzen.

Mit time(), date() und strtotime() von php könnte man das dann so machen:

Hier kannst du den code schonmal testen!

  
// Test der Serverzeit  
echo "<pre>Server Zeit: ". date("d.m.y H:i:s")."</pre>";  // checken, ob server richtig eingestellt ist  
  
// Einstellungen  
$EventWochentag      = "Wednesday"; // muss auf Englisch angegeben werden  
$EventStunde         = 16;          // Angabe der Stunde des Events als Integer, z.B. 16h  
$EventDauer          = 3;           // soviele Stunden soll nicht auf das nächste Meeting hingewiesen werden  
$EventCanceled       = array("18.07.2012", "15.08.2012");  // Ausschlussdaten mit vierstelliger Jahreszahl!  
$EventNextTemp       = null;        // das Datum des potenziellen kommenden Events (vor der Prüfung)  
$EventNext           = null;        // das Datum des kommenden Events  
  
  
// Ein bisschen Algebra /////////////////////////////////////////////////////////  
  
// 1. Finde Datum für nächstes potenzielles Event  
if((date("l") == $EventWochentag) and (time() < (($EventStunde+$EventDauer)*60*60)+strtotime("today"))){  
  
  // Wenn heute ein Event ist, welches aktuell noch läuft (innerhalb $EventDauer), verweise auf dieses.  
  $EventNextTemp = strtotime("today");  // siehe http://de.php.net/manual/de/function.strtotime.php  
  
} else {  
  
  // Andernfalls verweise auf das nächste Event.  
  $EventNextTemp = strtotime("next $EventWochentag");  
  
}  
  
// 2. Prüfung auf nicht stattfindende Events  
while (is_null($EventNext)){  
  
  // Wenn das Event nicht stattfindet (angegeben in $EventCanceled), verweise auf das Nächste.  
  if(in_array(date("d.m.Y",$EventNextTemp), $EventCanceled)) {  
  
    $EventNextTemp = strtotime("+1 week", $EventNextTemp);  
    continue; // weiter in der Schleife ohne $EventNextTemp zu übernehmen  
  
  }  
  
  // temporäres Event übernehmen  
  $EventNext = $EventNextTemp;  
  
}  
  
// Formatieren des Events  
$EventNext = "am ".date("d.m.y", $EventNext)." um ".$EventStunde." Uhr";  
  
?>  
<h1>Liebe Freunde,</h1>  
<p>das nächste mal Treffen wir uns alle <b><?php echo $EventNext ?></b>. Ich hoffe ihr erscheint zahlreich.</p>

Cheers,
Baba