• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Kalender dynamisch erstellen

schwerminator

New member
hallo, ich habe mal ein script zum dynamischen erzeugen eines kalenders geschrieben, funktioniert, soweit ich probiert habe, auch problemlos. vielleicht entdeckt ihr ja noch eine nicht so schöne sache ;)
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>Kalender</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</head>
<body>
<?php
//get_weekday() liefert bei $mode=0 Ziffern von 0 (Sonntag) bis 6 (Samstag) zurück
function get_weekday($day, $month, $year, $mode){
  return jddayofweek(gregoriantojd($month, $day, $year), $mode);
}

//definiere Variablen
$day = date("d");
$month = date("m");
$year = date("y");
//$days_in_month gibt die Anzahl der Tage im Monat an
$days_in_month = cal_days_in_month(CAL_GREGORIAN, $month, $year);

//$i definiert den Tag im Monat; $l definiert die Zellennummer
for($i=1, $l=1; $i<=$days_in_month; $i++, $l++){
  //Beim ersten Durchgang wird die Tabelle erzeugt
  if($i == 1){
    echo "<table border='1'>";
    echo "<tr><td>Sunday</td><td>Monday</td><td>Tuesday</td><td>Wednesday</td><td>Thursday</td><td>Friday</td><td>Saturday</td></tr><tr>";
    //Wenn der erste Tag nicht ein Sonntag ist, werden die davor liegenden Zellen erzeugt
    for($j=0; $j<get_weekday($i, $month, $year, 0); $j++, $l++)
      echo "<td></td>";
  }

  //Jeder Sonntag bekommt eine neue Zeile, nicht jedoch wenn $i=1 ist
  if(get_weekday($i, $month, $year, 0) == 0 && $i != 1)
    echo "<tr>";

  //Eigendliche Zelle für Tag $i wird erzeugt
  echo "<td>".$i."</td>";

  //Nach dem Samstag wird die Zeile geschlossen, nicht aber im letzten Durchgang
  if(get_weekday($i, $month, $year, 0) == 6 && $i != $days_in_month)
    echo "</tr>";

  //Die Tabelle wird beendet
  if($i == $days_in_month){
    //Wenn der letzte Tag nicht ein Samstag ist, werden die dahinter liegenden Zellen erzeugt
    for($k=0; $k<(6-get_weekday($i, $month, $year, 0)); $k++)
      echo "<td></td>";
    echo "</tr></table>";
  }
}
?>
</body>
</html>

danke, schwerminator
 
Moin!
schwerminator schrieb:
vielleicht entdeckt ihr ja noch eine nicht so schöne sache
Da Du uns deutschsprachige Menschen mit englischen Wochentagsnamen konfrontierst: the output is a bit ugly (particularly in IE).

Ahoi - Pit
 
falls du die darstellung meinst, ist diese nur auf das nötigste beschränkt (kein design!) die wochentage sind deshalb in englisch, weil ich gerade eine englische seite mache, für die dieses script auch sein soll :)

schwerminator
 
Zurück
Oben