Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Sprawdzenie dostępności
adi456
post
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


Witam

Mam problem i ze względu na to że jestem amatorem proszę o jakieś sugestie

chodzi o system rezerwacji samochodu

przypuśćmy że klient złożył zamówienie w terminie od 2011-03-06 do 2011-03-16

teraz następny klient będzie chciał wypożyczyć ten sam samochód w terminie od 2011-03-15 do 2011-03-20

i jak teraz sprawdzić że ten termin jest zajęty?

myślałem żeby wczytać z bazy daty od i do potem za pomocą pętli for wczytać do tablicy po kolei każdą pojedynczą datę która jest zajęta, jest to jakieś rozwiązanie ale dochodzi problem miesięcy, jak nie znajdę innego rozwiązania tak to zrobię ale podejrzewam że MySQL jest do tego przygotowany i można to zrobić w jakimś łatwym zapytaniu do bazy

myśle nad

  1. $sprawdz=mysql_num_rows(mysql_query("SELECT * FROM rezerwacje WHERE car='$car' and data_od BETWEEN '$data_od' AND '$data_zw' OR car='$car' and data_zw BETWEEN '$data_od' AND '$data_zw' "));
  2.  
  3. if ($sprawdz>0) // jesli warunek spełniony znaczy ze samochód zajęty

ale coś nie działa pewnie zła składnia?

bardzo proszę o porady

Ten post edytował adi456 7.03.2011, 13:08:13
Go to the top of the page
+Quote Post
minolone
post
Post #2





Grupa: Zarejestrowani
Postów: 141
Pomógł: 24
Dołączył: 21.06.2008

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


Najlepiej to dodaj sobie do bazy danych jeszcze jedno pole w której będziesz przetrzymywał wartość wypożyczenie samochodu (1- wypożyczony, 0- nie).
i tylko przez to pole będziesz sprawdzał, przecież nie wiesz czy klient odda ci samochód dnia 13.03 o godzinie 10 czy też 20, a inny będzie chciał ten samochód już o 14, a ty go mieć jeszcze nie będziesz chociaż klient który go posiada obiecywał że będzie na 13 ale nie dotarł. Powodów może być wiele korki, stłuczka, awaria. Na miejscu nowego klienta już bym się zdenerwował, co różnie mogłoby wpłynąć na opinie firmy itp. Więc lepiej żeby taki samochód sam się nie pojawiał gdy go jeszcze nie ma.
Jeżeli samochodów jest więcej to najlepiej jest go na czas wypożyczenia w ogóle zlikwidować ze strony, i samemu zmieniać wartość oddania samochodu w ustalonym przez klienta dniu oddania, a jeżeli nie samemu to dopiero następnego dnia przywrócić ten samochód na www.

Ten post edytował minolone 6.03.2011, 22:39:40
Go to the top of the page
+Quote Post
adi456
post
Post #3





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


myślę że to zły pomysł ponieważ jeżeli ustawie wypożyczony 1 to jeżeli ktoś za tydzień będzie chciał go wypożyczyć to też pokaże że jest niedostępny, godziny nie są bardzo ważne, jeżeli ktoś odda o godz 9 to samochód może być już do końca dnia niedostępny
Go to the top of the page
+Quote Post
minolone
post
Post #4





Grupa: Zarejestrowani
Postów: 141
Pomógł: 24
Dołączył: 21.06.2008

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


dlatego napisałem że jeżeli odda samochód w tym dniu co wskazał przy zamówieniu samemu zmienić jego wartość na 0. Nikt o zdrowych zmysłach nie wstawi samochodu do bazy bez jego oglądnięcia czy jest nie uszkodzony, a tym bardziej gdy go jeszcze nie ma. A jeżeli ma być widoczny to sprawdzasz czy jest wypożyczony, jeżeli tak to do kiedy i umożliwiasz wypożyczenie od dnia następnego

Ten post edytował minolone 6.03.2011, 22:54:39
Go to the top of the page
+Quote Post
adi456
post
Post #5





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


he ale głupi byłem

BETWEEN nadaje się idealnie, moim błędem był zapisz do bazy rezerwacje bez poprzedniej walidacji, potem skrypt odczytywał rezerwacje która jest w trakcie składania i pokazywał cały czas że termin jest zajęty, teraz rozumiem że skrypt który napisałem jest zupełnie bezsensu ale już go nie będę poprawiać, w zapytaniu dałem tylko warunek NOT id = '$id_rezerwacja'
i śmiga elegancko.

Ten post edytował adi456 7.03.2011, 23:40:00
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: 16.09.2025 - 15:49