Belegungskalender mit PHP

_Alex_

Mitglied
Huhu Leute

Brauche nochmal eure Hilfe... Diesmal geht es um einen Belegungskalender für meinen Verein. Ist wirkliche ein sehr einfacher Kalender, jeder Tag des Jahres hat eine eigene ID, und wenn diese ID in der DB eingetragen, also reserviert ist, soll dieser Tag ein rotes Feld haben, sonst grün ;) So sieht das Ganze aus:

Unbenannt.JPG

Die dazugehörige Tabelle in der DB mit den Einträgen habe ich noch nicht erstellt, ist aber auch das kleinste Problem. Habe folgendermassen die Auslesung der reservierten Daten "simuliert":

PHP:
<?php
      $reserviert_db = "1|4|6|8|12|99";

      $reserviert_einzeln = explode('|', $reserviert_db);
      foreach ($reserviert_einzeln as $reserviert) 
      {
            echo $reserviert."<br/>";
      }	
?>

Das echo gibt dann auch schön aus:
1
4
6
8
12
99

Nun erzeuge ich die Tabelle wie folgt:

PHP:
<?php																					
     for ($n=1;$n<32;$n++)										
     {
           echo "<td class=\"oben_rechts\">",$n,"</td>";
           for ($f=0;$f<12;$f++)
          {
                $id_tag = $f * 31 + $n;                       //ID des Tages generieren, 1-372
                echo "<td><a href=\"?id=$id_tag\"><img src='"; 
                if ($reserviert==$id_tag)
                {
                     echo "red";
                }
                else
                {
                     echo "grn";
                }
                echo ".gif' width=\"35px\"></a></td>";
           }
           echo "<td>",$n,"</td></tr>";
      }
							
?>

Das Problem: Es wird nur der Tag 99, also der 6. April, rot angezeigt. Dabei sollten andere Tage wie der 1. Januar oder der 8. Januar auch rot sein... was mache ich falsch?

Gruss

P.s. wenn jemand noch den Rest des Codes (HTML) für die Rekonstruktion will, einfach melden.
 
Hallo!

Ich nehme an, dass du den zweiten Codeblock nicht innerhalb der Schleife (des ersten Codeblocks) hast, oder?

Denn dann ist die Erklärung ganz einfach: die Schleife im ersten Block iteriert über alle Arrayelemente und speichert die Werte in der Variablen $reserviert. Nach der Schleife besitzt diese Variable schließlich den letzten Wert - 99 in deinem Fall.
 
Hey ComFreek

Nein, habe ich nicht ;)

Okay, das ist mir nun auch klar :D Nur sehe ich noch nicht, wie ich es am Besten umsetze... kannst du mir vielleicht noch einen Hinweis geben?

Gruss
 
Ich würde es so umschreiben:
PHP:
if (in_array($id_tag, $reserviert_einzeln) !== false) {
  // belegt
}
else {
  // frei
}
 
Zurück