Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]porównywanie wielu dat
Darkstorm
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


Witam. Kolejny problem znalazłem w swoim projekcie i muszę się poradzić w sprawie stworzenia w miarę inteligentnego sposobu rozwiązania go. Zacznijmy od początku.

Wyobraźmy sobie dzień w takiej postaci:

Godzina / seans/ początek lub koniec.

1
2
3
4 seans1 start
5
6 seans1 koniec
7
8
9
10
11
12
13
14 seans2 start
15
16 seans2 koniec
17
18
19
20
21
22
23
24



czyli mamy dwa seanse:

pierwszy od godziny 4.00 do 6.00
drugi od godziny 14.00 do 16.00


Teraz dodajemy nowy seans. dane o początku i końcu przypisane to dwóch zmiennych, np. $datap (data rozpoczęcia) oraz $datak(data końca).

Zanim dodam nowy seans do bazy trzeba sprawdzić czy data rozpoczęcia i końca dodawanego seansu nie pokryje się z już istniejącymi seansami. Pytanie jak?

Wyciągam z bazy danych seanse na konkretnej sali i konkretnej dacie. Jeśli obliczę ile rekordów zwróciło zapytanie przy użyciu mysql_num_rows mogę sprawdzić jedną rzecz - czy w danym dniu już jest jakiś seans. Jeśli wynik będzie 0 - znaczy że seansów nie ma i można dodać seans o dowolnej godzinie i nie ma problemu.
Ale jeśli są już inne seanse to pojawia się problem. Myślałem żeby porównać datę rozpoczęcia nowego seansu ($datap) z datą zakończenia seansu z bazy (koniec). Niby ok ale gdy wpiszę (odnoszę się teraz to przykładów powyżej) - godzinę rozpoczęcia seansu 10.00 to warunek się sprawdzi dla pierwszego seansu (seans się kończy o 6.00 więc datap> od koniec seans1) ale dla drugiego już nie. Brakuje mi koncepcji jak podejść do tego problemu. Czy ktoś ma jakiś pomysł na rozwiązanie problemu? Wolałbym uniknąć ręcznego sprawdzania w bazie danych wolnych terminów. Wolałbym żeby serwer "myślał" za mnie.
Go to the top of the page
+Quote Post
bastard13
post
Post #2





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


coś takiego:
  1. SELECT * FROM twoja_tabel WHERE dzien='dzien' AND seans IS NULL AND godzina BETWEEN 'godz_start' AND 'godz_koniec'

i jeżeli num_rows będzie równe godz_koniec-godz_start, to znaczy, że żaden seans w tym czasie się nie zaczyna ani nie kończy.
Go to the top of the page
+Quote Post
Kasat
post
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 2
Dołączył: 22.08.2008

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


Zanim dodam nowy seans do bazy trzeba sprawdzić czy data rozpoczęcia i końca dodawanego seansu nie pokryje się z już istniejącymi seansami. Pytanie jak?
- Robisz zapytanie które odczyta dane where `godzina_poczatek` = '".$_POST['godzina_poczatek']."'

  1. //przyjmijmy, że zmienna do tego zapytania to $seans
  2. if($seans) {
  3. echo "O tej godzinie jest już seans".
  4. die();
  5. }

podobnie z końcem seansu.

Ten post edytował Kasat 24.08.2010, 17:12:37
Go to the top of the page
+Quote Post
Darkstorm
post
Post #4





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


no proszę (IMG:style_emoticons/default/winksmiley.jpg) co 3 głowy to nie jedna. Dzięki za wskazanie drogi. sprawdzę wieczorem bo zaraz znikam i pochwale się czy i jak udało się rozwiązać problem. jeśli ktoś ma jakieś propozycje i pomysły to nie wstydzić się (IMG:style_emoticons/default/biggrin.gif) chętnie przeczytam (IMG:style_emoticons/default/smile.gif)



///edit

użyłem rozwiązania które zaproponował bastard13. Dziękuję za okazaną pomoc (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował Darkstorm 25.08.2010, 11:57:16
Go to the top of the page
+Quote Post

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: 19.09.2025 - 20:04