Anzeige

dynamischer Kalender

dynamischer Kalender | PSD-Tutorials.de

Erstellt von greenwall, 19.04.2011.

  1. greenwall

    greenwall Noch nicht viel geschrieben

    Dabei seit:
    15.04.2011
    Beiträge:
    1
    Geschlecht:
    männlich
    dynamischer Kalender
    Hallo Leute,

    ich mache hier gerade eine Website und da soll ein Kalender integriert werden. Ich habe schon sehr viel gegoogelt und im Forum gesucht aber nicht das passende gefunden.

    Es ist so: stellt euch vor ihr habt eine Website wo user plätze in Kinos buchen können. Die Plätze sind natürlich begrenzt und im Kalender soll das angezeigt werden. Wenn also an einem bestimmten Tag alle Plätze reserviert sind, soll der Tag im Kalender rot erscheinen, wenn noch Plätze frei sind, dann grün und wenn gar keine reservierung möglich ist weil das Kino geschlossen hat, dann soll es grau hinterlegt sein. Dazu kommt das der User zwischen mehreren Kinos wählen kann. Er soll also aus der SQL Datenbank die möglichen freien plätze und auch die öffnungstage ziehen.

    Das Buchungssystem habe ich schon programmiert und das bis jetzt nur mit einfach dropdown menüs gelöst um das Datum zu wählen. Ich brauche aber diesen Kalender mit den oben genannten funktionen.

    Habt ihr irgend einen Tipp wo ich sowas finden kann? Wie gesagt, ich google bereits seit Tagen und habe nichts gefunden, langsam verzweifel ich :(
     
    #1      
  2. holgermerz

    holgermerz Nicht mehr ganz neu hier

    Dabei seit:
    12.09.2009
    Beiträge:
    64
    Geschlecht:
    männlich
    Software:
    Photoshop CS3, Dreamweaver
    Kameratyp:
    Canon EOS 60D
    dynamischer Kalender
    #2      
  3. Chriss1987

    Chriss1987 me.drinkCoffee();

    Dabei seit:
    26.03.2006
    Beiträge:
    378
    Geschlecht:
    männlich
    Ort:
    Kirchhundem
    Kameratyp:
    Canon EOS 400D
    dynamischer Kalender
    AW: dynamischer Kalender

    Hi,

    ich hatte mal vor ein paar Jahren einen dynamischen Kalender für php geschrieben, für unsere DLRG-Taucher, damit die sehen, wann der nächste Übungstauchgang stattfindet und ob er statt findet usw, da konnten sich die Taucher ein/austragen und sehen, wer alles mittaucht. Ich hab dir mal den Quelltext angehangen, der für das Erstellen des Kalenders verantwortlich ist. Die Termine werden als mehrd. Array übergeben ($termine[$year][$month][$day]) wobei der Value ein DB-Objekt mit entsprechenden Feldern ist. War noch aus einer Zeit, wo ich noch nicht so viel mit OOP am Hut hatte und würde ich heute bestimmt anders machen, aber als Anhaltspunkt hoffentlich zu gebrauchen. Achja, wenn ein Termin vorhanden wäre, dann könnte man auf den entsprechenden Tag klicken und es würde sich eine jQuery-Box (Colorbox) mit weiteren Infos öffnen. Kommentare wurden ein paar eingefügt. Wenn du noch Fragen hast, einfach stellen.

    hier die Funktion:
    PHP:
    1. function createCalender($month, $year, $termine = array(), $small = false, $parent = false)
    2.     {
    3.         global $farben_typ;
    4.         global $terminhelper;
    5.         global $tauchtruppstaerke;
    6.         global $sql;
    7.        
    8.         $return = "";
    9.         if ($month == "13")
    10.             {
    11.                 $month = 1;
    12.                 $year = $year + 1;
    13.             }
    14.         else if ($month == "0")
    15.             {
    16.                 $month = 12;
    17.                 $year = $year - 1;
    18.             }
    19.        
    20.         if ($parent)
    21.             {
    22.                 $return .= "<table align=\"center\">\n";
    23.                 $return .= "    <tr>\n";
    24.                 $return .= "\t<td align=\"center\" onClick=\"window.location.href='?month=" . ($month - 1) . "&year=" . $year . "';\">\n";
    25.                 $return .= "<a href=\"?month=" . ($month - 1) . "&year=" . $year . "\"><img src=\"images/back_alt.png\" alt=\"zur&uuml;ck\" border=\"0\"></a>\n";
    26.                 $return .= "\t</td>\n";
    27.                 $return .= "\t<td align=\"center\">\n";
    28.                 $return .= createCalender($month - 1, $year, $termine, true, false);
    29.                 $return .= "\t</td>\n";
    30.                 $return .= "\t<td align=\"center\">\n";
    31.             }
    32.        
    33.         if($small)
    34.             {
    35.                 $height = "15px";
    36.                 $width = "15px";
    37.                 $h = "3";
    38.                 $font_size = "normal";
    39.             }
    40.         else
    41.             {
    42.                 $height = "50px";
    43.                 $width = "50px";
    44.                 $h = "1";
    45.                 $font_size = "x-large";
    46.             }
    47.        
    48.         // Monat 2-stellig
    49.         $month = str_pad($month, 2, "0", STR_PAD_LEFT);
    50.  
    51.         // Anzahl der Tage des Monats ausgeben
    52.         // $days = cal_days_in_month(CAL_GREGORIAN, $month, $year);
    53.         $days = date("t", mktime(0, 0, 0, $month, 1, $year));
    54.  
    55.         // Wochentage zum Anzeigen
    56.         $wochentage = array ("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa");
    57.        
    58.         // für Anzahl der Tage for-Schleife ausführen
    59.         for ($day = 1; $day <= $days; $day++)
    60.             {
    61.                 // aus dem Datum ein UNIX-Timestamp erstellen
    62.                 $unixtimestamp = mktime(0, 0, 0, $month, $day, $year);
    63.                 // nummerischen Wert des Tages auslesen #0 (für Sonntag) bis 6 (für Samstag)#
    64.                 $wochentag = date('w', $unixtimestamp);
    65.                 // Kalenderwoche auslesen
    66.                 $kalenderwoche = date('W', $unixtimestamp);
    67.                 // Wochentag ausgeben
    68.                 $wochentag = $wochentage[$wochentag];
    69.                 // Tag in ein multidemensionales Array schreiben => KW => Wochentag => Tag
    70.                 $kalender[$kalenderwoche][$wochentag] = $day;
    71.             }
    72.        
    73.         // Wochentage in gewünschter Reihenfolge
    74.         $wochentage = array ("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");
    75.        
    76.         // Monate
    77.         $monate = array ("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
    78.  
    79.         // Monat ausgeben
    80.         $return .= "<h$h onClick=\"$.fn.colorbox({height: '95%', width: '600px', iframe:true, href:'modules/anfrage_neu.php?action=monat&date=" . $month . "-" . $year . "', open:true});\" style=\"cursor:pointer;\">" . $monate[date("n", $unixtimestamp)-1] . " " . $year . "</h$h>\n";
    81.        
    82.         // Kopfzeile ausgeben
    83.         $return .= "<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\" align=\"center\">
    84.    <tr style=\"background-color: #e0e0e0; font-size: $font_size; font-weight:bold; text-align: center;\">
    85.        <td style=\"width: $width;\"><b>KW</b></td>
    86.        <td style=\"width: $width;\"><b>Mo</b></td>
    87.        <td style=\"width: $width;\"><b>Di</b></td>
    88.        <td style=\"width: $width;\"><b>Mi</b></td>
    89.        <td style=\"width: $width;\"><b>Do</b></td>
    90.        <td style=\"width: $width;\"><b>Fr</b></td>
    91.        <td style=\"width: $width;\"><b>Sa</b></td>
    92.        <td style=\"width: $width;\"><b>So</b></td>
    93.    </tr>\n";
    94.        
    95.         // Array durchlaufen und KW-Zeilen ausgeben
    96.         foreach ($kalender AS $KW => $date)
    97.             {
    98.                 $return .= "    <tr style=\"height: $height; vertical-align: middle; text-align: center;\">\n";
    99.                 $return .= "\t<td style=\"background-color: #e0e0e0;\"><b>" . $KW . "</b></td>\n";
    100.                 foreach ($wochentage AS $wochentag)
    101.                     {  
    102.                         if (isset($date[$wochentag]))
    103.                             {
    104.                                 $day = str_pad($date[$wochentag], 2, "0", STR_PAD_LEFT);
    105.                                 if (isset($termine[$year][$month][$day]))
    106.                                     {
    107.                                         $zusagen = $sql->select("SELECT id FROM termine_user WHERE status=0 AND termin='" .  $termine[$year][$month][$day]->id ."'");
    108.                                         if (count($zusagen) < $tauchtruppstaerke AND $termine[$year][$month][$day]->typ != 2 AND $termine[$year][$month][$day]->status == 0)
    109.                                             {
    110.                                                 $termine[$year][$month][$day]->status = 4;
    111.                                             }
    112.                                        
    113.                                         $farbe = $farben_typ[$termine[$year][$month][$day]->typ][$termine[$year][$month][$day]->status][0];
    114.                                         if ($termine[$year][$month][$day]->tbis > 0)
    115.                                             {
    116.                                                 // wenn Termin über einen Zeitraum geht, Folgetage markieren
    117.                                                 for ($i = $termine[$year][$month][$day]->tdatum; $i <= $termine[$year][$month][$day]->tbis; $i = $i + 86400)
    118.                                                     {
    119.                                                         $year_h = date("Y", $i);
    120.                                                         $month_h = date("m", $i);
    121.                                                         $day_h = date("d", $i);
    122.                                                        
    123.                                                         if (isset($terminhelper[$year_h][$month_h][$day_h]))
    124.                                                             {
    125.                                                                 $terminhelper[$year_h][$month_h][$day_h] .= $farbe;
    126.                                                             }
    127.                                                         else
    128.                                                             {
    129.                                                                 $terminhelper[$year_h][$month_h][$day_h] = $farbe;
    130.                                                             }
    131.                                                     }
    132.                                             }
    133.                                                
    134.                                         if (isset($terminhelper[$year][$month][$day]))
    135.                                             {
    136.                                                 $farbe .= ";" . $terminhelper[$year][$month][$day];
    137.                                             }
    138.                                        
    139.                                         $status = $termine[$year][$month][$day]->status;
    140.                                         // $farbe = " style=\"background-color: rgb(" . $farben_status[$status][0] . ", " . $farben_status[$status][1] . ", " . $farben_status[$status][2] . "); color: " . $farben_status[$status][3] . ";\"";
    141.                                         // $farbe = "onClick=\"jQuery.facebox(function(date){jQuery.get('modules/anfrage.php?date=" . $year . "-" . $month . "-" . $date[$wochentag] . "', function(data) {jQuery.facebox(data)})});\" style=\"background-image: url(images/color.php?farben=$farbe); cursor:pointer;\"";
    142.                                         $farbe = "onClick=\"$.fn.colorbox({height: '95%', width: '600px', iframe:true, href:'modules/anfrage_neu.php?date=" . $date[$wochentag] . "-" . $month . "-" . $year . "', open:true});\" style=\"background-image: url(images/color.php?farben=$farbe); cursor:pointer;\"";
    143.                                         $b = "<b>";
    144.                                         $be = "</b>";
    145.                                     }
    146.                                 else
    147.                                     {
    148.                                         if (isset($terminhelper[$year][$month][$day]))
    149.                                             {
    150.                                                 $farbe = $terminhelper[$year][$month][$day];
    151.                                                 $farbe = "style=\"background-image: url(images/color.php?farben=$farbe); cursor:pointer;\" onClick=\"$.fn.colorbox({height: '95%', width: '600px', iframe:true, href:'modules/anfrage_neu.php?date=" . $date[$wochentag] . "-" . $month . "-" . $year . "', open:true});\" style=\"background-image: url(images/color.php?farben=$farbe); cursor:pointer;\"";
    152.                                             }
    153.                                         else
    154.                                             {
    155.                                                 $farbe = "onClick=\"$.fn.colorbox({height: '95%', width: '600px', iframe:true, href:'modules/anfrage_neu.php?date=" . $date[$wochentag] . "-" . $month . "-" . $year . "', open:true});\" style=\"cursor:pointer;\"";
    156.                                             }
    157.                                         $b = $be = "";
    158.                                     }
    159.                             }
    160.                         else
    161.                             {
    162.                                 $farbe = "";
    163.                                 $b = $be = "";
    164.                             }
    165.                        
    166.                         if (isset($date[$wochentag]))
    167.                             {
    168.                                 $return .= "\t<td onmouseout=\"UnTip();abbrechen();\"$farbe>$b" . $date[$wochentag] . "$be</td>\n";
    169.                             }
    170.                         else
    171.                             {
    172.                                 $return .= "\t<td>&nbsp;</td>\n";
    173.                             }
    174.                     }
    175.                 $return .= "    </tr>\n";
    176.             }
    177.         $return .= "</table>\n";
    178.        
    179.         if ($parent)
    180.             {
    181.                 $return .= "\t</td>\n";
    182.                 $return .= "\t<td align=\"center\">\n";
    183.                 $return .= createCalender($month + 1, $year, $termine, true, false);
    184.                 $return .= "\t</td>\n";
    185.                 $return .= "\t<td align=\"center\" onClick=\"window.location.href='?month=" . ($month + 1) . "&year=" . $year . "';\">\n";
    186.                 $return .= "<a href=\"?month=" . ($month + 1) . "&year=" . $year . "\"><img src=\"images/forward_alt.png\" alt=\"zur&uuml;ck\" border=\"0\"></a>\n";
    187.                 $return .= "\t</td>\n";
    188.                 $return .= "    </tr>\n";
    189.                 $return .= "</table>\n";
    190.             }
    191.        
    192.         return $return;
    193.     }
    und ein Beispielaufruf:
    PHP:
    1. if (isset($_GET['month']))
    2.     {
    3.         $month = $_GET['month'];
    4.     }
    5. else
    6.     {
    7.         $month = date("m");
    8.     }
    9.  
    10. if (isset($_GET['year']))
    11.     {
    12.         $year = $_GET['year'];
    13.     }
    14. else
    15.     {
    16.         $year = date("Y");
    17.     }
    18.  
    19. echo createCalender($month, $year, array(), false, true);
    HTH
    Schöne Grüße aus dem Sauerland!
    Chriss
     
    #3      
x
×
×