Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Wyszukiwarka wolnych terminów
HBK
post 10.09.2011, 14:31:00
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 3.08.2008

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


Tabela: katalog

id_kwatery | nazwa | miejscowosc | ilosc_miejsc
1 | Dom | Łódź | 2
2 | Dom | Łódź | 4
3 | Dom | Łódź | 4
4 | Dom | Łódź | 6
5 | Dom | Łódź | 2
6 | Dom | Łódź | 3
7 | Dom | Łódź | 2
8 | Dom | Łódź | 2

Tabela: rezerwacja

id_rez | id_ogloszenia | data_przyjazdu | data_wyjazdu
1 | 1 | 2011-09-15 | 2011-09-22
2 | 1 | 2011-09-23 | 2011-10-10
3 | 3 | 2011-09-10 | 2011-09-17
4 | 5 | 2011-09-19 | 2011-09-28


  1. $wh = array();
  2. IF (!empty($_POST['miejscowosc']))
  3. $wh[] = "miejscowosc = '$_POST[miejscowosc]' ";
  4.  
  5. IF (!empty($_POST['liczba_osob']))
  6. $wh[] = "ilosc_miejsc >= '$_POST[liczba_osob]' ";
  7.  
  8. IF (!empty($_POST['data_przyjazdu']) || !empty($_POST['data_wyjazdu']))
  9. $wh[] = "(data_przyjazdu NOT BETWEEN '$_POST[data_przyjazdu]' AND '$_POST[data_wyjazdu]') AND (data_wyjazdu NOT BETWEEN '$_POST[data_przyjazdu]' AND '$_POST[data_wyjazdu]') ";
  10.  
  11. IF (!empty($wh))
  12. $where = ' WHERE '.implode(' AND ', $wh);
  13. else
  14. $where = '';
  15.  
  16. $sql = 'SELECT * FROM katalog INNER JOIN rezerwacja ON katalog.id_kwatery = rezerwacja.id_ogloszenia '.$where;
  17.  

Wyszukiwarka:

Miejscowość
Liczba osób
Data przyjazdu
Data wyjazdu


Powinno działać tak, że wyszukuje wszystkie wolne kwatery w danym terminie z wyszukiwarki.

Obecnie jak wyszukam tylko po miejscowości to jeden wynik się dubluje a jak wyszukam też po datach to wyświetla rezerwacje zamiast katalogu.

Co takiego źle robię?

Ten post edytował HBK 10.09.2011, 14:32:11
Go to the top of the page
+Quote Post
dmateo
post 10.09.2011, 15:40:33
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 3
Dołączył: 19.05.2009

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


Cytat(HBK @ 10.09.2011, 15:31:00 ) *
  1. SELECT * FROM katalog INNER JOIN rezerwacja ON katalog.id_kwatery = rezerwacja.id_ogloszenia

Co takiego źle robię?

Przede wszystkim jeśli chcesz znaleźć wolne kwatery w danym terminie to raczej Left join zamiast inner.

Ten post edytował dmateo 10.09.2011, 15:40:58
Go to the top of the page
+Quote Post
elektrrrus
post 10.09.2011, 15:54:50
Post #3





Grupa: Zarejestrowani
Postów: 175
Pomógł: 18
Dołączył: 11.06.2007
Skąd: Koszalin/Poznań

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


No i dawanie danych z $_POST bezpośrednio do zapytania to piękne zaproszenie do włamania sie do bazy
Go to the top of the page
+Quote Post
HBK
post 10.09.2011, 16:05:22
Post #4





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 3.08.2008

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


Cytat(dmateo @ 10.09.2011, 16:40:33 ) *
Przede wszystkim jeśli chcesz znaleźć wolne kwatery w danym terminie to raczej Left join zamiast inner.


LEFT JOIN

Sortowanie po miejscowości i liczbie osób działa dobrze ale jak dodam daty to wyświetlają się rezerwacje zamiast listy kwater kwater :/



@elektrrrus

to jest wersja robocza, wpierw zależy mi na działaniu


Ten post edytował HBK 10.09.2011, 20:29:34
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: 22.07.2025 - 09:26