Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> panel rezerwacji, sprawdzanie rekordów w bazie
pantomcio
post 18.10.2014, 08:44:58
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 4.08.2014

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


Witam, na początek chciałem przeprosić że na dzień dobry proszę o pomoc smile.gif

Kodu podawać nie będę, ponieważ mam burdel wink.gif jestem na etapie tworzenia "puzzli" które potem od nowa zbiorę w jedną całość jak już wszystko będzie działać.
Jako, że mam problem z opisaniem problemu podam jedynie niezbędne informację żeby nie mieszać smile.gif

W bazie danych stworzyłem 2 tabele - 'godziny' oraz 'rezerwacje'.
W tabeli godziny są 2 kolumny - 'idgodzina' oraz 'godzina' (w tej drugiej na sztywno wpisałem godziny kolejno od 6 do 22 tj. '6:00-7:00', '7:00-8:00','8:00-9:00' itd.)
Do tabeli rezerwacje będą wpisywane i pobierane informacje o rezerwacji.

uff... kolejnym etapem było stworzenie tablicy z 3 kolumnami: Godzina, Sala 1, Sala 2 (do wybrania wstępnie jest jedna z dwóch sal).
Kolumna 'Godzina' w każdym wierszu wyświetla wspomniane wcześniej na sztywno wpisane godziny, w kolumnach Sala 1 i Sala 2 przy każdej godzinie są przyciski 'Zarezerwuj'. Powyżej jest inputbox pobierający datę rezerwacji. Po kliknięciu w przycisk do bazy, do tabeli rezerwacje dodane są rekordy: $data, $idgodzina, $sala.

I tu zaczynają się schody...

Chciałbym aby przyciski 'Zarezerwuj' zostały wyłączone/zmieniały kolor w momencie kiedy taka rezerwacja juz istnieje.
Reasumując: jak w momencie wyświetlania przycisku sprawdzić czy istnieje już rezerwacja o dokładnie takiej dacie ($data), godzinie($idgodzina) i sali($sala)?

Jako, że dopiero wchodzę w świat programowania i jest to mój pierwszy post liczę na wyrozumiałość smile.gif wszelkie wskazówki są na wagę złota!

Pozdrawiam!
Go to the top of the page
+Quote Post
Micchaleq
post 21.10.2014, 14:51:38
Post #2





Grupa: Zarejestrowani
Postów: 186
Pomógł: 4
Dołączył: 13.10.2009

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


Cześć,

Nie pomogę Ci całośiowo bo zbyt dużo pisania.
W każdym razie uważam, że źle podszedłeś do problemu, który sobie postawiłeś. Nie rozumiem po co Ci tabela z godzinami w osobnej tablicy oraz po co ci pola sala1 i sala2 ?

W tabeli rezerwacje możesz stworzyć kolumne godzina typu int, a pola sala1 oraz sala2 zamienić na sala przechowując wartosć int oznaczającą numer sali ( w przypadku ewetnualngo rozwoju łatwo to przerzucić na 1:N )
Generalnie można to tak skrócić aby posiadac tylko dwa pola data i sala ( id unikalne standardowo )
To po pierwsze.

Po drugie:
Domyslam się, że masz kilka forów jeden przetwarza godziny a drugi sale ( aktualnej daty ).
Masz zatem dwa parametry w pętli godzina i sala. Brakuje jedynie daty.
Datę w przypadku statycznej strony musisz uzyskać od razu. Oznacza to, że każdy dzień będzie miał oddzielną kartę. Klikasz w określony dzień i wyświetlają się sale i godziny ( dla tego dnia ).

Mając takie 3 parametry wystarczy napisać funkcje pomocniczą składającą się z 3 parametrów ( sala, godzina, data ).
Następnie za pomocą selekta sprawdzić czy istnieje rekord w bazie o takich danych.
Funkcje należy użyć oczywiście w trakcie budowania godzin i sal ( data musi być już znana - to oczywiste )
I w ostanim etapie za pomocą if-a można sobie zrobić co się chce.

Pozdrawiam

Ten post edytował Micchaleq 21.10.2014, 14:56:28


--------------------
Go to the top of the page
+Quote Post
pantomcio
post 22.10.2014, 19:40:45
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 4.08.2014

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


Już wyjaśniam, otóż tabela z godzinami w osobnej tablicy ma za zadanie osiągnąć taki efekt: .
Pole sala zrobiłem dokładnie tak jak napisałeś, sala1 i sala2 to sala mała i duża z powyższej tabelki.
ZAREZERWUJ - z powyższej tabeli chciałbym aby były przyciskami, które pobiorą dane o godzinie i sali. Data jak wspomniałeś zostanie pobrana wcześniej, ponieważ wyświetlą się jedynie godziny z konkretnego podanego wcześniej dnia - ale to nie stanowi problemu.

Cytat
Następnie za pomocą selekta sprawdzić czy istnieje rekord w bazie o takich danych
- dokładnie to stanowi problem. Jak wspomniałem chcę wyłączyć przyciski (zarezerwuj), zmienić kolorek - cokolwiek, w momencie gdy ten termin jest już zarezerwowany.
Póki co z powyższą tabelką powiązana jest jedynie tabela 'godziny' aby wyświetlić wszystkie dostępne godziny, zaś przyciski zarezerwuj mają sprawdzać zawartość tabeli 'rezerwacje' i na tej podstawie wyświetlać dostępność danej godziny.

Im dłużej nad tym myślę tym bardziej głupieję, w książkach ani google żadnych rozwiązań - zdaje się, że da się to prościej i praktyczniej rozwiązać...

A gdyby wszystkie godziny wypisać na sztywno w php zamiast jak wspomniałeś osobną tabelę z godzinami w bazie robić?

tj.
<th width=100px bgcolor=#5041AF >7:00 - 7:30</th>
<th width=100px bgcolor=#5041AF >7:30 - 8:00</th>
zamiast:
<th width=100px bgcolor=#5041AF >$row[1]</th>

Pozdrawiam i dzięki za zaangażowanie.

Ten post edytował pantomcio 22.10.2014, 19:41:40
Go to the top of the page
+Quote Post
NickOver
post 28.10.2014, 13:32:00
Post #4





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

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


Generowanie tej tabelki wrzuć do pętli tak aby była generowana po jednym rekordzie (data i godzina).
potem zwykły if który sprawdza czy jest zajęte czy nie:
  1. <tr><td>GODZINA</td>
  2. if ($sala == //nie wiem jakie masz wartości w tabeli
  3. {
  4. <tr //wartości jak ma wyglądać ta komórka
  5. ZAREZERWOWANE
  6. </tr>
  7. }
  8. else
  9. {
  10. <tr>
  11. ZAREZERWUJ
  12. </tr>
  13. }


Ten post edytował NickOver 28.10.2014, 13:32:38
Go to the top of the page
+Quote Post
pantomcio
post 28.10.2014, 15:38:04
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 4.08.2014

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


Cytat
tak aby była generowana po jednym rekordzie (data i godzina).


krok po kroku doszliśmy do sedna smile.gif
row[x] wywala wszystkie rekordy z wybranej kolumny, jak wyświetlić je pojedyńczo? bądź kontrolować to w jakikolwiek sposób?
Go to the top of the page
+Quote Post
NickOver
post 28.10.2014, 20:00:34
Post #6





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

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


Słowo klucz to...
Tum tu ru ru ru ru rum
FOREACH! biggrin.gif

Przepraszam. Pomysł żeby tak to napisać wydał mi się prześmieszny biggrin.gif
Użyj Pętli foreach. Pobierz wszystkie godziny do tablicy i potem po niej literuj (tak to się poprawnie mówi?).
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 3.05.2024 - 03:56