frage zu dem php kalender tutorial

PHP:
<?

require('config.php');

include('./templates/head.php');
?>

<table width="33%">
    <tr align="center">
        <td width="33%"><? include('./templates/Kalender.php'); ?></td>
        </tr>
</table>

Also bei deiner Index.php bindest ja immer den kompletten Kalender ein , also könnte man das mit den Variablen mittels einer for Schleife realisieren. Ich nehm an Du willst einen Jahres Kalender haben.

PHP:
<?php
for($i = 1 ; $i <= 12 ; $i++){

    // das müssten dann die Variablen sein wie sie im Tutorial stehen , da das komplette
    // Kalender Script ja 2 zeilen weiter komplett eingebunden wird gelten auch die    
    //Kalender Variablen für hier

    $monat = $i; 
    $Jahr     = date("Y"); // aktuelles Jahr im Format jjjj     
   
     echo'<tr align="center">
                  <td width="33%">';
     include('./templates/Kalender.php');
     echo '</td></tr>';
}
?>

Ungetestet und käme auf einen Versuch an , das man das komplette Script x mal einbindet macht mich dabei aber irgendwie nervös ;)
 
Joooo,
ne for schleife ist mir auch schon in den sinn gekommen, war aber noch nicht dazu gekommen, das auszuprobieren, aber es funktioniert!!

1000 Dank!
Flugzeugfreund

EDIT:
Hi, zwei kleine problemchen hätt ich da noch, erstmal ein screenshot von dem jetzigen kalender:

kalender8al.gif


1. Ich habe nun in die for-schleife gleich noch die bestimmung der monatsnamen eingebunden, wird auch soweit richtig angezeigt, aber beim januar fehlt oben die beschriftung. Woran kann das liegen?

2. Wie schaff ich es, dass jeweils 3 monate in einer zeile angezeigt werden, sodass dann 4 zeilen enstehen?

Hier noch der code der kalender.php:
PHP:
<?
require('./config.php');

define("EINTAG", (60*60*24));


$start = mktime(0,0,0,$monat,1,$jahr,0);
$ersterTag = getdate($start);
$monate = Array("NULL", "Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
$tage = Array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa");

print "<br><table border=0 cellspacing=2 width=33%><tr><td bgcolor=#cccccc colspan=7 align=center><font face=verdana size=-1>$monatsname</font></td></tr>\n";
foreach ($tage as $tag)
		if ($tag == "So") {
				print "\t<td bgcolor=#FFDDCA><font color=#000000 face=arial size=-1><i>$tag</i></font></span></td>\n";
		 } else{
				print "\t<td bgcolor=#efefef><font face=arial size=-1><b>$tag</b></font></td>\n";
			}

for ($zaehler=0; $zaehler <= (6*7); $zaehler++)
		{
		$tag = getdate($start);
		
if ((($zaehler) % 7) == 0){
			if ($tag[mon] != $monat )
				break;
			print "</tr><tr bgcolor=#efefef>\n";
		}

if ($zaehler < $ersterTag[wday] || $tag[mon] != $monat )
		{
			print "<td></td>";
		}else{
		if ($tag[wday] == "So") {
				print "\t<td bgcolor=#FFDDCA><font face=arial size=-1>$tag[mday]</font></td>\n";
		 }else{
				print "\t<td bgcolor=#efefef><font face=arial size=-1>$tag[mday]</font></td>\n";
			}
		
		$start += EINTAG;
	}
}
print "</table>";

?>
Thx nochmal ^^
Flugzeugfreund
 
Zuletzt bearbeitet:
Naja das ist aber normales HTML dann eigentlich , im Prinzip bildet ja die Tabelle den Platzhalter für den gesammten Kalender.Somit musst Du dieses in der for schleife innerhalb der index.php oder da wo der Kalender eingebunden wird regeln , mittels des Modulo Operators.

PHP:
<?php
echo'<tr align="center">

$Jahr     = date("Y"); // aktuelles Jahr im Format jjjj   

for($i = 1 ; $i <= 12 ; $i++){
  $monat = $i; 
     
    if($i%3 != 0){
        echo '<td width="33%">';
         include('./templates/Kalender.php');
        echo '</td>';
     }else{
         echo '<td width="33%">';
          include('./templates/Kalender.php');
         echo '</td></tr><tr align="center">';
    }
}
echo '</tr>';
?>
 
Zuletzt bearbeitet:
*threadausgrab*

Hallo!

Abgesehen davon, dass ich das Kalender Tutorial großartig finde, bleibt etwas Grundsätzliches noch unklar für mich! (mein Gott, was für ein Satzbau)

Der Wert von EINTAG beträgt ja die Sekunden eines Tages, also: 86.400, und die werden am Ende des Skripts zu $start addiert.

PHP:
define("EINTAG", (60*60*24) );
...
$start += EINTAG;

$start wiederum beinhaltet das Ergebnis aus mktime()

PHP:
$start = mktime ( 0, 0, 0, $monat, 1, $jahr )

Angenommen: $monat=3 und $jahr=2000, dann steht in $start als Ergebnis 0,0,0,3,1,2000.

Meine Frage, woher weiss $start, dass die 86.400 "Sekunden" sind und weiß auch noch wo es sie hinstecken soll?

Ich weiß nicht wie ich es anders erklären soll, hoffentlich versteht ihr mein Problem.

Danke schonmal
 
Öhm $start weiss nicht wirklich das dies Sekunden sind , für $start ist das nen normaler Integer Wert.

$start hat aber auch nicht den Wert von0,0,0,3,1,2000 , sondern hier ebenfalls einen Integer Wert und zwar die Anzahl der Sekunden die seit dem 01.01.1970 bis zum 01.03.2000 vergangen sind.
 
ahhhh...das erklärt einiges. Vielen Dank

Das mktime () die vergangenen Sekunden seit dem 01.01.1970 bis zum eingegebenen Datum ausgibt wusste ich nicht. Danke für die Antwort! :)

Vielleicht hätte ich deinen Tipp aus der Sig berücksichtigen sollen ;)
 
Zurück