Tage in Kalender markieren

Breuker

Erfahrenes Mitglied
Hi!

Folgendes Problem: Ich habe einen Kalendercode (siehe ganz unten) mit dem ich einen Kalender fürs Jahr 2007 darstellen kann (auch für 2008 usw.).
Nun habe ich aber den Wunsch, bestimmte Daten zu makieren, z.B. den 15. Mai.
Ich habe leider keine Ahnung, wie ich das realisieren kann :S

Könnt ihr mir einen Hinweis oder einen Tipp geben, wie ich anfangen muss?

Breuker


Kalendercode:
PHP:
<?
function kalender_monat($date_month, $date_year)	{

$monate = array(	
1=>"Januar", 	
2=>"Februar", 	
3=>"März.", 	
4=>"April",	
5=>"Mai", 		
6=>"Juni",     	
7=>"Juli", 		
8=>"August", 				
9=>"September",	
10=>"Oktober",	
11=>"November",	
12=>"Dezember");
					
$theday = date(w, mktime(0, 0, 0, $date_month, 1, $date_year));
$daysinmonth = date("t", mktime(0, 0, 0, $date_month, 1, $date_year));
echo "<table border=1>";
echo "<tr>";
echo "<tr><td colspan='7'>".$monate[$date_month]."</td></tr>";
echo "<td>So</td>";
echo "<td>Mo</td>";
echo "<td>Di</td>";
echo "<td>Mi</td>";
echo "<td>Do</td>";
echo "<td>Fr</td>";
echo "<td>Sa</td>";
echo "</tr>";
echo "<tr>";
for ($i=0;$i<$theday;$i++)
{
   echo "<td>&nbsp;</td>";
}
for ($list_day=1;$list_day<=$daysinmonth;$list_day++)
{

   echo "<td>" . $list_day . "</td>";

   if ($theday == 6)
   {
       echo "</tr>";
       echo "<tr>";
       $theday = -1;
   }
   $theday++;
}
echo "</tr>";
echo "</table>";
}



?>
<table width="100%" border="0">
  <tr>
    <td><? echo kalender_monat(1,date(Y)); ?></td>
    <td><? echo kalender_monat(2,date(Y)); ?></td>
    <td><? echo kalender_monat(3,date(Y)); ?></td>
    <td><? echo kalender_monat(4,date(Y)); ?></td>
  </tr>
  <tr>
    <td><? echo kalender_monat(5,date(Y)); ?></td>
    <td><? echo kalender_monat(6,date(Y)); ?></td>
    <td><? echo kalender_monat(7,date(Y)); ?></td>
    <td><? echo kalender_monat(8,date(Y)); ?></td>
  </tr>
  <tr>
    <td><? echo kalender_monat(9,date(Y)); ?></td>
    <td><? echo kalender_monat(10,date(Y)); ?></td>
    <td><? echo kalender_monat(11,date(Y)); ?></td>
    <td><? echo kalender_monat(12,date(Y)); ?></td>
  </tr>
</table>
 
Du müsstest jeweils das aktuell verarbeitete Datum mit den zu markierenden Daten vergleichen, also prüfen ob es Element der Menge der zu markierenden Daten ist.
 
Danke, das hat mir bereits geholfen!
Jedoch habe ich es bis jetzt nur geschafft einen Termin zu makieren. (10.12.2007).
Wie kann ich das schaffen, das ich einen zweiten Termin hinzufügen kann, jedoch nicht immer $makieren hinzufügen muss :confused:
ich habs bereits mit schleifen versucht, doch das ging in die hose :(

Kalendercode:
PHP:
<?

function kalender_monat($date_month, $date_year)	{

$tag1 	= 10;
$monat1 = 12;
$jahr1 	= 2007;
$makieren1 = mktime(0,0,0,$monat1,$tag1,$jahr1);

$monate = array(	
1=>"Januar", 	
2=>"Februar", 	
3=>"März.", 	
4=>"April",	
5=>"Mai", 		
6=>"Juni",     	
7=>"Juli", 		
8=>"August",
9=>"September",	
10=>"Oktober",	
11=>"November",	
12=>"Dezember");
					
$theday = date(w, mktime(0, 0, 0, $date_month, 1, $date_year));
$daysinmonth = date("t", mktime(0, 0, 0, $date_month, 1, $date_year));
echo "<table border=1>";
echo "<tr>";
echo "<tr><td colspan='7'>".$monate[$date_month]."</td></tr>";
echo "<td>So</td>";
echo "<td>Mo</td>";
echo "<td>Di</td>";
echo "<td>Mi</td>";
echo "<td>Do</td>";
echo "<td>Fr</td>";
echo "<td>Sa</td>";
echo "</tr>";
echo "<tr>";
for ($i=0;$i<$theday;$i++)
{
   echo "<td>&nbsp;</td>";
}
for ($list_day=1;$list_day<=$daysinmonth;$list_day++)
{
	if(mktime(0,0,0,$date_month,$list_day,$date_year) == $makieren1)	{ // neue Kalenderzeile
		echo "<td><strong>" . $list_day . "</strong></td>";
	}	else	{
		echo "<td>" . $list_day . "</td>";
	}

   if ($theday == 6)
   {
       echo "</tr>";
       echo "<tr>";
       $theday = -1;
   }
   $theday++;
}
echo "</tr>";
echo "</table>";
}



?>
<table width="100%" border="0">
  <tr valign="top">
    <td><? echo kalender_monat(1,date(Y)); ?></td>
    <td><? echo kalender_monat(2,date(Y)); ?></td>
    <td><? echo kalender_monat(3,date(Y)); ?></td>
    <td><? echo kalender_monat(4,date(Y)); ?></td>
  </tr>
  <tr valign="top">
    <td><? echo kalender_monat(5,date(Y)); ?></td>
    <td><? echo kalender_monat(6,date(Y)); ?></td>
    <td><? echo kalender_monat(7,date(Y)); ?></td>
    <td><? echo kalender_monat(8,date(Y)); ?></td>
  </tr>
  <tr valign="top">
    <td><? echo kalender_monat(9,date(Y)); ?></td>
    <td><? echo kalender_monat(10,date(Y)); ?></td>
    <td><? echo kalender_monat(11,date(Y)); ?></td>
    <td><? echo kalender_monat(12,date(Y)); ?></td>
  </tr>
</table>
<? echo $makieren1; ?>
 
Servus!

Du könntest doch die Termine in einem Array speichern und dann nach dem Schlüssel suchen.

PHP:
$termine = array ( "28.7.2007", "10.12.2007", "10.5.2007" );

und anstatt diesem Vergleich
PHP:
if(mktime(0,0,0,$date_month,$list_day,$date_year) == $makieren1)    { // neue Kalenderzeile

denn hier nehmen
PHP:
$aktDatum = $list_day.".".$date_month.".".$date_year;
$ergebnis = array_search( $aktDatum, $termine );
if( $ergebnis !== FALSE )    { // neue Kalenderzeile

Alles über arraysearch() oder Arrays findest Du in der Doku... hier
vg Clemens
 
Zuletzt bearbeitet:
Zurück