# Kalender Tutorial  + Termine



## Shooter2k (28. November 2003)

Hallo erstmal Lob an das schöne Kalender Tutorial!

Es funktioniert einwandfrei  . Nun möchte ich, aus einer DB Den Termin zB 28.12.03 vergleichen und es ausgeben lassen. Anlass und Tag aus der Datenbank soll er  ausgelesen. Nur weis ich nicht wie ich es vergleiche. Also bei EINEN  Termin geht es, ich habe es einfach mit if gemacht aber bei vielen Terminen komme ich aus den ganzen iffen nicht mehr raus  

Hier nochmal das Kalender Tut 

Es wäre nett wenn mir jemand ganz kurz sagen könnte, wie ich es mache. 
Er sollte mir den Tag ausgeben mit den "Anlasstext" und einen DetailsLink aus der Datenbank. zB am Kalender : 1,2,3,4, <a href="test">Testtermin</a> 5

Vielen vielen Dank schon mal 

mfg Henry


----------



## bambid (12. Mai 2005)

Hallo du Ich weiss es ist schon lange her als du diesen Text erfasst hasst, aber vieleicht könntest du mir noch schnell sagen was du gemacht hast das er lief. es ist so das ich den auch durchgemacht habe und es kommt nun immer die Fehlermeldung, das es in der line 4 einen { gehler hat! aber leiter ist das noch nicht meine spezialität und desshalb die frage kanst du mir helfen?

mfg bambid


----------



## bambid (12. Mai 2005)

Ich habe es geschaft!

sorry aber es war nur ein dummer kleiner tipfehler!

mfg bambid


----------



## Jeyenne (30. Juli 2005)

*Re: FEHLER IM KALENDER!*

Hallo,

ich habe das Tutorial mal angeschaut und das Kalenderscript erweitern um mit MySQL einen Terminkalender zu erhalten.
Dabei bin ich darauf gestossen, dass es im Algorithums einen Fehler hat. Konnte ihn bis jetzt noch nicht ausbügeln.

Wählt im Kalender mal Oktober 2005. Der 30. kommt 2 mal vor 

Gruss Jeyenne


----------



## melistik (31. August 2005)

Den Fehler kannst du einfach mit der Änderung beheben:

$start = mktime ( 0, 0, 0, $monat, 1, $jahr );

musst du auf ->

$start = mktime ( 10, 10, 0, $monat, 1, $jahr );

weiss zwar nicht genau warum, doch ich denke das mit der Zeitrechnung
im Oktober ein Tag kürzer ist oder so ....

Ich habe das ganz Tutorial noch etwas überarbeitet,
so dass die Tage vom Monat davor und danach die Leeren Felder füllen...
Ich weiss nicht ob das die beste Lösung ist, doch es klappt ...

Außerdem habe ich den Wochenanfang geändert 
Nicht Sonntag, was ich recht komisch finde sondern Montag


```
<?php
define("EINTAG", (60*60*24) );
if ( ! checkdate( $monat, 1, $jahr ) )
    {
     $heuteArr = getdate();
    $monat = $heuteArr[mon];
    $jahr = $heuteArr[year];
    }
$start = mktime ( 10, 10, 0, $monat, 1, $jahr );
$ersterArr = getdate($start);
?> 

<html>
<head>
<title><?php print "Kalendar: $ersterArr[month]
        $ersterArr[year]" ?></title>
<head>
<body>
<form action="<? print $PHP_SELF ?>" method="post">
<select name="monat">
<?php
$monate = Array("January", "February", "March", "April",
                "May", "June", "July", "August", "September",
                "October", "November", "December");
for ( $x=1; $x <= count( $monate ); $x++ )
    {
    print "\t<option value=\"$x\"";
    print ($x == $monat)?" SELECTED":"";
    print ">".$monate[$x-1]."\n";
    }
?>
</select>
<select name="jahr">
<?php
for ( $x=1980; $x<2010; $x++ )
    {
    print "\t<option";
    print ($x == $jahr)?" SELECTED":"";
    print ">$x\n";
    }
?>
</select>
<input type="submit" value="Los geht's!">
</form>

<p>
<?php
$days = Array("Monday", "Tuesday", "Wednesday",
              "Thursday", "Friday", "Saturday", "Sunday");
			  
$monStart = $ersterArr[wday]-1;		
if ($monStart < 0) { $monStart = 6;	}
	
print "<TABLE BORDER = 1 CELLPADDING=5>\n";
foreach ( $days as $day )
    print "\t<td><b>$day</b></td>\n"; 
	
for ( $zaehler=0; $zaehler < (6*7); $zaehler++ )
    {
    $tagArr = getdate( $start ); 
if ( (($zaehler) % 7) == 0 )
        {
        if ( $tagArr[mon] != $monat )
            break;
        print "</tr><tr>\n";
        } 
/*
if ( $zaehler < $monStart || $tagArr[mon] != $monat )
        {
        print "\t<td><br></td>\n";
        }
*/
if ( $zaehler < $monStart)
        {
		$vorMonArr = getdate(mktime ( 0, 0, 0, $monat, 1, $jahr ) - (($monStart-$zaehler)*60*60*24));
        print "\t<td>$vorMonArr[mday]</td>\n";
        } 
elseif ($tagArr[mon] != $monat) 
        {
        print "\t<td>$tagArr[mday]</td>\n";
		$start += EINTAG;
        } 
else
        {
        print "\t<td>$tagArr[mday]</td>\n";
        $start += EINTAG;
        }
    } 
print "</tr></table>";
?>
</body>
</html>
```

Ich hoffe ich kann da welchen mit helfen 
mfg meli


----------



## Irgendjemand_1 (31. August 2005)

Hm diesen Kalender zum EventKalender (oder was ihr machen wollt) zu erweitern würde ich sowieso nicht so empfehlen.

Der scheint mir etwas umständlich zu sein, auch wenn er funktioniert.
So auf den ersten Blick seh ich schon ein paar Sachen, die ich einfacherer machen würde.
Vorallem gefällt mir die Variablenbenennung nicht  

Das Tutorial ist aber an sich ganz nett, da sieht man, wie man sowas überhaupt realisieren soll, dennoch nicht gerade das, was ich  optimierten Programmiercode nenne.


----------

