ďťż

php i MySQL jak skonstruowac zapytanie ;)

       

Podstrony


telcocafe

hello. :) zrobilam sobie baze dla hotelu. jedna z tabel jakie zawiera jest tabele rezerwacje , a w niej id_osoby id_pokoju, data_od i data_do . teraz na stronce umieszczam pola w ktorym klient podaje daty, w trakcie ktorych chcialbaby wynajac pokoj. w jak skonstruowac zapytanie do bazy, by pobralo wolne pokoje i wyswietlilo je na liscie ? zakladajac,ze do rezerwacje londuja pokoje zajete i data od kiedy do kiedy , bez dat pomiedzy :>? ktos ma jakis pomysl? :blink:



Poczytaj tu http://www.promat.co.../SQL/SGMSQL.htm i http://www.phpsolmag....php?storyid=12 Następnym razem użyj google.

czemu wszyscy zawsze uwazaja,ze piszac tu, czlowiek w ogole do zrodel nie zajrzy :/ troszku sie juz manuali naczytalam i jakos nie udalo mi sie sensownego zapytania skonstruowac...

patrzcie co mi google zaproponowało, ale najpierw masz tutaj coś co Cię nakieruje:
http://www.google.pl...sy+%2BMySQL&lr=

a teraz - co robo GOOGLEze zrobnieniami wyrazów:
http://www.google.pl...ka+%2BMySQL&lr=

popatrzcie cna co proponuje zmienić :)



forum jest do pomagania innym,
jeśli nie jesteście tutaj żeby pomagać ludziom tylko wysałecie ich na gogle to się wyrejestrujcie.
pozatym skoro to pytanie jest taki proste to dlaczego sami mu nie odpiszecie tylko wysyłacie go na google?

zapytania = INSERT, SELECT, UPDATE.
//musisz jeszcze tylko ustalic czy akorat w tych dniach pokoj jest zajety robisz to w //tablicy for sprawdzajac czy w tablicy w ktoryms rekordzie jest taka data jak wpisal user sprawdzasz czy wybrany pokoj jest zajety. $query = "SELECT * FROM rezerwacje WHERE id_pokoju=".id_pobrane_z_pola_input."; $wynik = mysql_query($query); if(!$wiersz = $mysql_fetch_array($wynik)) { echo 'mozna wynajac'; } else { echo 'pokoj zajety'; }
Użytkownik Sinus edytował ten post 14 wrzesień 2005, 13:46
Możesz też zrobić tak, że klient ma wyświetloną liste pokoi które są puste i przy nich wpisać daty. Aby wyświetlić z bazy wszystkie puste pokoje możesz zrobić coś takiego:
$zapytanie = "SELECT * FROM rezerwacje WHERE id_pokoju IS NULL"; $wynik = mysql_query($zapytanie); echo $wynik;
chyba dobrze :P Tylko, że wtedy w tablicy wszystkie puste pokoje muszą mieć wartość domyślną NULL

ps. jak coś pomieszałem to dajcie znać

do tabeli z pokojami dodac pole status 1=zajety 0=wolny. Pozniej tylko skonstruowacx mechanizm

troche kultury narodzie polski
Użytkownik fallschirmjager edytował ten post 14 wrzesień 2005, 14:49

forum jest do pomagania innym ,
dzieki za wsparcie :)
a wracajac do kody, nie bardzo wiem jak ta tablice zrobic?? klient podaje date rozpoczecia rezrwacji i date do kiedy chce pokoj wynajac. Klient nie ma do wyboru nr pokoju, poniewaz wszytskie pokoje sa takie same :) wiec nie ma potrzeby ;) chce by wyswietlila sie informacja o tym,ze w danym terminie sa wolne pokoje (i moze ile tych pokoi jest wolnych) lub informacja o braku miejsc (no i moze zaproponowanie najblizeszj wolnej daty;)) tak wiec dalej jestem w kropce :)

No zakładam, że w twojej tablicy jest (a przynajmniej powinien być) spis wszystkich pokojów. Możesz jak kolega wyżej zrobić, że pokój zajęty to 1 a pokój wolny to 0 wtedy zapytanie będzie wyglądało tak:
$query = "SELECT * FROM rezerwacja WHERE id_pokoju = '0'"; $wynik = mysql_query($query); echo $wynik;

albo możesz ustawić, że jeżeli pokój jest wolny to ma wartość domyślną NULL i wtedy możesz wykorzystać kod który pisałem wcześniej. Tak mi się wydaje


No zakładam, że w twojej tablicy jest (a przynajmniej powinien być) spis wszystkich pokojów. Możesz jak kolega wyżej zrobić, że pokój zajęty to 1 a pokój wolny to 0 wtedy zapytanie będzie wyglądało tak:
tak mam spis pokoi, jest taka tablica, ale prawde powiedziawszy nie bardzo rozumiem wasze zalozenie z tym by zrobic 1 dla wolnego 0 dla zajetego. przeciez te pokoje sa zajete w jakims terminie, a kiedy 0 mam wpisac, gdy jest zajete konkretnego dnia?? i jaki mechanizm mialaby odpowiadac, za sprawdzenie biezacej daty i ustawienie 0 lub 1?? poza tym, kilent moze sprawdzic rezerwacje duzo wprzod (co na ogol sie dzieje ;)) i jak wtedy ta 1 i 0 sie ma ?? Chyba nie bardzo zrozumialam ten pomysl ;)

Zakładając, że w twojej tablicy jest każdy pokój i data rezerwacji możesz zrobić tak, że jeżeli klient rezerwuje ci jakiś pokój ty na okres tych dni (najlepiej każdy dzień z osobno) ustawiasz mu 1 (jeżeli dalej idziemy kodem 0 1). Wtedy w twoim zapytaniu musi być troszke rozszerzone klauzula sprawdzenia warunków. Sądze, że może być coś takiego:
$zapytanie = "SELECT * FROM rezerwacje WHERE (stan_pokoju = '1' AND data_rezerwacji = 'jakas_data') "; $wynik = mysql_query($zapytanie); echo $wynik;
chyba dobrze


Zakładając, że w twojej tablicy jest każdy pokój i data rezerwacji możesz zrobić tak, że jeżeli klient rezerwuje ci jakiś pokój ty na okres tych dni (najlepiej każdy dzień z osobno) ustawiasz mu 1 (jeżeli dalej idziemy kodem 0 1).
Ale czy w ten oto sposb moja baza nie osiagnie gigantycznych rozmiarow?? 356dni razy ilosc pokoi?? ja mam tabele osoba, pokoje (z danymi o pokojach) i rezerwacje,, gdzie wedruje data_od i data_do , nie ma dat "pomiedzy" id pokoju i id osoby i ni jak mi to rozwiazanie z 1,0 pasuje ;) Jezeli sie myle, z tym rozrosnieciem sie bazy to poprawcie, ale czy przy obecnej strukturze nie da sie czegos wymyslic ;)

Spróbuj może tak ale nie wiem czy to będzie działać
$zapytanie = "SELECT * FROM rezerwacje WHERE (stan_pokoju = '1' AND data_od = 'jakas_data_od' OR data_do = 'jakas_data_do) "; $wynik = mysql_query($zapytanie); echo $wynik;
Powinno zadziałać ale głowy nie dam. A faktycznie mój błąd...tabela rozrosłaby ci się i to bardzi. Może ten skrypcik pozwoli ci jakoś tego uniknąć

zeby baza sie nie rozrosla proponuje "posprzatac" po kazdym kliencie ]:->


forum jest do pomagania innym,
jeśli nie jesteście tutaj żeby pomagać ludziom tylko wysałecie ich na gogle to się wyrejestrujcie.
pozatym skoro to pytanie jest taki proste to dlaczego sami mu nie odpiszecie tylko wysyłacie go na google?


I tutaj jest pies pogrzebany :)

REGULAMiN DZIAŁU, którego przestrzam: http://forum.ks-eksp...showtopic=47603

ale nadal pozostajemy przy 0 i 1? ale przez to nie ukniniemy powiekszenia bazy ? nadal te 0 i 1 trzeba wstawiac do kazdego pokoju i kazdej daty osobno...
chyba sie pogubilam juz w tym :blink:

No więc słuchaj. Aby skrypt mógł rozrużnić czy pokój w danym terminie jest zajęty czy nie musisz go jakoś oznaczyć. A czy to będzie wartość 0 dla pustego i 1 dla zajętego czy "wartość" NULL dla pustego i NOT NULL dla zajętego to już jak kto lubi. ALe operujmy narazie na 01. Tak więc każdy pokój ma domyślną wartość 0. Jeżeli klient wyznaczy sobie jakąś date to w tym przedziale ustawione jest 1. To na tym polega. Bo potem w klauzuli WHERE konkretyzujesz date żeby mógł sprawdzić czy jest 1 czy 0.

mimo waszych szczerych chęci skrypcik nadal nie dziala :( ma ktos jakies inne pomysly niz wyzwalacze? pojawia sie pomysl z tablicami... ktos ma jakis prosty pomysl :> :blink:

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.