phpbar.de logo

Mailinglisten-Archive

[php] Kalenderabfrage

[php] Kalenderabfrage

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Die Feb 8 10:13:42 CET 2005


Hi Stephan,

Stephan schrieb:
> Momentan programmiere ich einen Belegungskalender für ein kleines
> Hotel.
> Dieser Kalender greift auf Buchungsdatensätze in einer Tabelle
> 'zimmerbelegung' zurück.
> Die Tabelle 'zimmerbelegung' ist wie folgt aufgebaut.
>
> ---------------------------------
> | id | zimmernummer | von | bis |
> ---------------------------------
>
> Die Felder 'id' und 'zimmernummer' sind integer.
> Die Felder 'von' und 'bis' beinhalten einen Unix - Zeitstempel.
>
> Folgendes Problem habe ich.
> Um festzustellen, wie ein Zimmer im betreffenden Kalendermonat belegt
> ist habe ich folgende Abfrage.
>
> // folgende Zimmer stehen zur Verfügung
> $zimmer[0] = 101;
> $zimmer[1] = 102;
> $zimmer[2] = 103;
>
> ...
>
> // Anzahl der Tage im Monat
> $anzahl = date("t", mktime(0, 0, 0, 2, 1, 2005));
>
> // Abfrage der Zimmerbelegung
> for($i = 0; $i < count($zimmer); $i++){
>   for($j = 1; $j <= $anzahl; $j++ ){
>     $jetzt = mktime(0,0,0,2,$j,2005);
>     $sql = "select count(id) as treffer from zimmerbelegung where von
> < '".$jetzt."' and bis > '".$jetzt."' and zimmernummer '".$zimmer[$i]."'";
>   }
> }
>
> Die Abfrage bezieht sich in diesem Beispiel nur auf den laufenden
> Monat. Das Problem besteht darin das für jedes Zimmer und jeder Tag
> des Monats eine Abfrage an die Datenbank generiert wird.
> Also bei 30 Zimmern und 30 Kalendertagen des Monats immerhin 900
> Abfragen.
> Gibt es eine elegantere Möglichkeit um diese Abfrage zu realisieren.

Ja. Hole alle Daten auf einmal und verlagere diese Ausleselogik von SQL
weg, ganz hin zu PHP.

Bei "von" und "bis" fragst Du dann nicht auf den Tag ab, sondern auf den
Monat bzw. auf einen 30-Tage-Zeitraum. Und bei "zimmernummer" übergibst Du
der Datenbank einen Array mit den gesuchten Zimmernummern.

Damit bekommst Du alle benötigten Daten mit einer SQL-Abfrage. Den Rest
erledigst Du alleine mit PHP.


Viele Grüße

Lutz


php::bar PHP Wiki   -   Listenarchive