![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 26.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
posiadam stronę coś w rodzaju rezerawcji pokoi.
Mam też formularz a w nim 2 pola teraz jednak potrzebuje po wysłaniu formularza (a jaby się dało sprawdzić to nawet przed) czy pokój w tym czasie jest wolny do bazy zapisuje datę w formie mktime
no i teraz jest problem jak sprawdzić czy ten okres wybrany przez usera nie jest już w bazie? CZekam na sugestie, za które wielkie dzięki |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Pewnie i jest to wystarczające.
Wchodząc w szczegóły: Założyłem, że więcej jest odczytów z tabeli niż operacji zapisu do niej. Tabela rezerwacji przechowuje daty początku i końca, ale istnieją dwie dodatkowe tabele. Kod bookings_calendar: _attributes: { phpName: BookingEntry } id: apartment_id: { type: integer, required: true, foreignTable: apartments, foreignReference: id } order_id: { type: integer, required: true, foreignTable: orders, foreignReference: id } date: { type: date, required: true } state: { type: tinyint, required: true, default: 1 } type: { type: tinyint, required: true, default: 0 } events: { type: integer, default: NULL, foreignTable: bookings_events, foreignReference: id } skip: { type: boolean, default: false } temp_bookings_calendar: _attributes: { phpName: TempBookingEntry } id: apartment_id: { type: integer, required: true, foreignTable: apartments, foreignReference: id } date: { type: date, required: true } state: { type: tinyint, required: true, default: 1 } session_id: { type: varchar, size: 128, required: true } expire_date: { type: timestamp } Służą one do sprawdzania dostępności i do rysowania kalendarza. Tabela temp_booking_calendar przechwuje tylko wstępne rezerwacje - klient zaznacza zakres dat, wypełnia formularz i otrzymuje stronę z prośbą o potwierdzenie. Jeśli potwierdzi (kliknie "tak, jestem pewien") dane sa przenoszone do tabeli bookings_calendar i oznaczane jako "oczekujące" - zazwyczaj chodzi o potwierdzenie wpłaty. W zasadzie wyrysowanie kalendarza to pestka, bo powiedzmy, dla jednego miesiąca wyciągamy maksymalnie 62 rekordy i trzeba na nich tylko raz dokonać jakiejś obróbki, żeby było wiadomo, jaki obrazek podstawić w komórce tabeli. Wada to jak wspomniałem, wyszukiwanie wolnych terminów - nie ma ich w bazie, więc trzeba wyciągnąć wszystkie rekordy z żądanego zakresu, utworzyć dodatkową tablicę ze wszystkimi datami i dopiero wtedy, w pętli zdejmować z niej te dni, które wyciągnęliśmy z bazy. To, co w niej zostanie, to dni wolne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Nie jest to zbyt wydajne, więc chyba spróbuję wykorzystać dane z tabeli zamówień, zgodnie z tym, cp napisałeś Mało wydajne jest też wstawianie rekordów - w Propelu to masakra - nie polecam :/ Z samego efektu jestem jednak zadowolony. http://img56.imageshack.us/img56/8348/cal3nt4.png (dodatkowo uzupełniłem o eventy) Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 20:24 |