Skończyłem robić właśnie mini aplikację internetową, w której w łatwy i przyjemny sposób administrator może dodawać/edytować i usuwać rezerwacje.
Stworzyłem również system wyświetlania rezerwacji - wybieramy rok i interesujący nas miesiąc i pobieramy wszystkie rezerwacje pasujące do zapytania.
Wszystko niestety oparłem o tabelę i wyszło dość sporo zagnieżdżeń tj. :
<table class="kalendarz"> <thead> <tr> <th>Pokój</th> <th>Max. Os.</th> <?php $number = cal_days_in_month(CAL_GREGORIAN, $miesiac, $rok); $x = 0; do{ $x = $x+1; } while($x<$number) ?> </tr> </thead> <tbody> <?php foreach ($pokoje as $pokoje_spec):?> // TR dla każdego pokoju <tr> <?php $number = cal_days_in_month(CAL_GREGORIAN, $miesiac, $rok); $x = 0; do{ // TD dla każdego dnia miesiąca $x = $x+1; $data_text = $rok.'-'.$miesiac.'-'.$x; foreach ($rezerwacje as $rezerwacje_spec) { if($rezerwacje_spec['id_pokoje'] == $pokoje_spec['id_pokoje']){ // Foreach sprawdzający czy dana rezerwacja pasuje do założeń - najpierw jeden IF z samym pokojem, a potem 3 IF mniej ważnych (dla daty początkowej, końcowej i w trakcie rezerwacji) } } } while($x<$number) ?> </tr> <?php endforeach; ?> <tr> <td colspan="2"><a class="admin_section_link" title="Anuluj zmiany" href="<?php echo base_url()?>admin_kalendarz">Powrót</a></td> </tr> </tbody> </table>
I teraz pytanie - można to jakoś uprościć by tych iteracji było znacznie mniej?
Pokoi jest 50. Dni w miesiącu mamy średnio 30. Rezerwacji niech będzie ~400 na miesiąc co daje ok. 600 000 operacji ;(
Foreach dla pokoi - potem do/while dla każdego dnia miesiąca no i potem przy każdym dniu sprawdzenie każdego zamówienia czy pasuje do założeń (dzień i pokój).
Jak na razie wszystko działa, ale chciałbym to rozwiązać nieco bardziej "profesjonalnie"
