BlaiiND98: Termine in Kalender einfügen

Beitrag lesen

Ich möchte gerne einen eigenen Kalender im Google Kalender Style bauen. Das Kalenderblatt und das styling habe ich bereits umgesetz. Dieses könnt ihr hier sehen.

//Timezone!!
date_default_timezone_set('Europe/Berlin');
  
// Vor und Zurück
if (isset($_GET['ym'])) {
    $ym = $_GET['ym'];
} else {
    // Aktueller Monat
    $ym = date('Y-m');
}
  
$timestamp = strtotime($ym."-01");
if ($timestamp === false) {
    $timestamp = time();
}
  
// Heute ermitteln
$today = date('Y-m-j', time());
  
// H3 Title
$html_title = date('Y / m', $timestamp);
  
// Prev & Next / Monat Link
$prev = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)-1, 1, date('Y', $timestamp)));
$next = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)+1, 1, date('Y', $timestamp)));
  
// Anzahl der Tage ermitteln
$day_count = date('t', $timestamp);
  
// 0:So 1:Mo 2:Di usw...
$str = date('w', mktime(0, 0, 0, date('m', $timestamp), 0, date('Y', $timestamp)));
  
  
// Kalender zusammenbauen!!
$weeks = array();
$week = '';
  
// Leer Zeilen hinzufügen
$week .= str_repeat('<td></td>', $str);
  
for ( $day = 1; $day <= $day_count; $day++, $str++) {
     
    $date = $ym.'-'.$day;
     
    if ($today == $date) {
        $week .= '<td class="today">'.$day;
    } else {
        $week .= '<td>'.$day;
    }
    $week .= '</td>';
     
    // Ende der Woche bzw. Ende des Monats
    if ($str % 7 == 6 || $day == $day_count) {
         
        if($day == $day_count) {
            // Zelle hinzufügen
            $week .= str_repeat('<td></td>', 6 - ($str % 7));
        }
         
        $weeks[] = '<tr>'.$week.'</tr>';
         
        // Neue Woche
        $week = '';
         
    }
  
}
<table class="table table-bordered">
 <tr>
  <th>Mo</th>
  <th>Di</th>
  <th>Mi</th>
  <th>Do</th>
  <th>Fr</th>
  <th>Sa</th>
  <th>So</th>
 </tr>
<?php
foreach ($weeks as $week) {
echo $week;
}   
?>
</table>

Ergebnis aus dem oben ggezeigten Code

Vorlauge aus Google Kalender

Mein Ergebnis kommt doch sehr an den Google Kalender hin, oder? Jetzt kommt mein Problem :/ Wie bekomme ich Termin in den Kalender? Ich möchte Termine, die über mehrere Tage wie im Google Kalender über die ganze Zeit ziehen (Bezeichnung nur einmal).

Termin die nur ein Tag, oder ein paar Stunde sind, sollen als eine Zeile dargestellt werden.

Meine Tabelle

CREATE TABLE `kalender` (
  `id` int(11) NOT NULL,
  `code` varchar(200) NOT NULL,
  `bezeichnung` varchar(200) NOT NULL,
  `auto` varchar(200) NOT NULL,
  `grund` text NOT NULL,
  `datum` date NOT NULL,
  `ganztags` varchar(50) NOT NULL,
  `von` varchar(10) NOT NULL,
  `bis` varchar(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Ich habe das Gefühl die muss optimiert werden? Wenn ein Termin über mehrere Tage geht, dann sollte vielleicht das datum in eine weitere Tabelle ausgelagert werden? In der erten Tabelle die Grunddaten wie Bezeichnung, die Uhrzeit und das Datum in eine extra Tabelle. Habe ich ein Termin, welcher über drei Tage geht, wird dieser in dier Datums-Tabelle dreimal eingetragen mit einer RefID zur den Grunddaten?

Nur es bleibht noch immer die Frage, wie bekomme ich die Termin in meinen Kalender?