Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP]Kalendarz - system rezerwacji - udoskonalenie, Kalendarz z rezerwacjami oparty o tabelę - za dużo iteracji.
maxslawek
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.02.2013

Ostrzeżenie: (0%)
-----


Witam,
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. :
  1. <table class="kalendarz">
  2. <thead>
  3. <tr>
  4. <th>Pokój</th>
  5. <th>Max. Os.</th>
  6. <?php
  7. $number = cal_days_in_month(CAL_GREGORIAN, $miesiac, $rok);
  8. $x = 0;
  9. do{
  10.  
  11. $x = $x+1;
  12.  
  13. echo '<th>'.$x.'</th>';
  14. }
  15. while($x<$number)
  16. ?>
  17. </tr>
  18. </thead>
  19. <tbody>
  20. <?php foreach ($pokoje as $pokoje_spec):?>
  21. // TR dla każdego pokoju
  22. <tr>
  23. <td><?php if(isset($pokoje_spec['nazwa_pokoje']) and $pokoje_spec['nazwa_pokoje'] != NULL) {echo $pokoje_spec['nazwa_pokoje'];};?></td>
  24. <td ><?php if(isset($pokoje_spec['ilosc_osob_pokoje']) and $pokoje_spec['ilosc_osob_pokoje'] != NULL) {echo $pokoje_spec['ilosc_osob_pokoje'];};?></td>
  25. <?php
  26. $number = cal_days_in_month(CAL_GREGORIAN, $miesiac, $rok);
  27. $x = 0;
  28. do{
  29. // TD dla każdego dnia miesiąca
  30. $x = $x+1;
  31. $data_text = $rok.'-'.$miesiac.'-'.$x;
  32. $aktualna_data = date("Y-m-d", strtotime($data_text));
  33.  
  34. echo '<td>';
  35. foreach ($rezerwacje as $rezerwacje_spec) {
  36. if($rezerwacje_spec['id_pokoje'] == $pokoje_spec['id_pokoje']){
  37. // 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)
  38. }
  39.  
  40. }
  41. echo '</td>';
  42. }
  43. while($x<$number)
  44. ?>
  45. </tr>
  46. <?php endforeach; ?>
  47.  
  48. <tr>
  49. <td colspan="2"><a class="admin_section_link" title="Anuluj zmiany" href="<?php echo base_url()?>admin_kalendarz">Powrót</a></td>
  50. </tr>
  51. </tbody>
  52. </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" (IMG:style_emoticons/default/wink.gif)
Powód edycji: [Kshyhoo]: bb-code
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.08.2025 - 00:47