Lefoglaló oldal keszitése
Üdv mindenkinek!
Kissebb problémába ütköztem, egy online panzió-hotel szobalefoglaló oldalt kell elkészitenem.
Php tudással nincs probléma, a gond az, hogy hogyan tudnám felépíteni az adatbázist úgy, hogy minden szobát adott dátum intervallumra le lehessen foglalni, és le lehessen azt ellenőrizni php-val hogy az adott szoba lefoglalható-e bizonyos dátumon és nincs véletlenül már lefoglalva. Az dátumintervallumot egy felugró naptárból kellene kiválasztani külön-külön a bejelentkezési időpontot és a távozási időpontot.
Izgatottan várom a tippeket - segitségeket és előre köszönöm!
■ Kissebb problémába ütköztem, egy online panzió-hotel szobalefoglaló oldalt kell elkészitenem.
Php tudással nincs probléma, a gond az, hogy hogyan tudnám felépíteni az adatbázist úgy, hogy minden szobát adott dátum intervallumra le lehessen foglalni, és le lehessen azt ellenőrizni php-val hogy az adott szoba lefoglalható-e bizonyos dátumon és nincs véletlenül már lefoglalva. Az dátumintervallumot egy felugró naptárból kellene kiválasztani külön-külön a bejelentkezési időpontot és a távozási időpontot.
Izgatottan várom a tippeket - segitségeket és előre köszönöm!
Javaslat
Letárolod a szobaszámt, foglalás kezdetét, foglalás végét (pluszba még amiket akarsz v kell). Ha valaki elküld egy foglalást, akkor megkeresed a vendég által elküldött foglalás végéhez képest legközelebbi, de annál korábbi foglalás kezdetet. Megnézed, hogy a talált foglaláshoz tartozó vég dátum kisebb-e, mint a felhasználó által elküldött foglalás kezdete, ha igen, akkor szabad a szoba, ha nem, akkor foglalt. A legközelebbi időpont megkeresésében szerintem az ORDER BY lesz a segítségedre.
Remélem érthető voltam és működik is, amit kitaláltam, mert ki nem próbáltam a dolgot :)
ellenőrzés
Köszönöm!
Én is átböngésztem a netet kicsit még, találtam egy php lehetőséget arra, hogy egy függvénnyel vektorba helyezzem a ket dátum közötti dátumokat, ez arra jó, hogyha például beteszem az adatbázisba a kezdeti dátumot és a távozási dátumot az adott szobának, majd mikor lekerdezem a táblákat tudni fogom mikor van a kezdeti és a távozási időpont, azt ezzel a függvénnyel feldolgozom, visszakapok egy tömböt, majd egy dupla for-al összehasonlitom ezt a tömböt az igényelt lefoglalási dátumok tömbjével és ha van egyezés akkor a szoba már foglalt valamilyen napon - informativ jeleggel ki is lehet iratni, hogy melyik napon, a lefoglalás nem történik meg, ellenkező esetben, ha nincs egyezés, akkor nincs lefoglalt szoba arra a dátumra.
Iggy: amint látom neked is hasonló ötleted volt, csak nem tudom elképzelni az algoritmust, nem értem picit a dolgot, köszi.
Jaczkog: a te ötleted is szerintem egyszerübb és nagyszerübb az enyémnél, csak én nem értem a lekérdezést, neked is köszönöm.
Várom továbbra is tőletek a véleményeket és esetleg ha jobban kifejtenétek az ötleteiteket, persze időtöktől és kedvetektől függően, akkor én azt előre megköszönöm!
Üdv!
kifejtés
Az általam írt lekérdezést így is le lehet írni:
Remélem így érthetőbb. Ha valami még nem teljesen világos, akkor kérdezz bátran.
Köszönöm jackog!
Hát nagyon hálás vagyok és nagyon örülök hogy ilyen segítőkész emberekre találtam mint ti!
Lekerdezesekben meg nem vagyok tul jo!
szoba_kategória[id,nev];
szoba_tipus[id,nev,leiras,kategoria_id]
szobak[id,nev,szoba_tipus_id]
foglalasok[id,szoba_id,kezdeti_datum,tavozasi_datum]
Nagyjából ezek a táblák, persze több fieldekkel, de csak a szükségeseket irtam oda...
Erre kellene a fenti példát egy sql lekérdezésbe tenni, ha lehet.
Előre köszönöm!
Már kaptál lekérdezést
Az csak nem okoz gondot, hogy a tábla és mezőneveket átírd a tiédre...
Ha igen, akkor még ne fejlessz szállodai szobafoglaló rendszert :)
Kiegészítés
Nem programozás de fontos. A távozás napján már jöhet új vendég!
Tehát a határnapok kezdeti dátum és a távozás dátum lehet azonos
két foglalás esetén.
A lekérdezést e szerint érdemes megcsinálni.
Left joinal megoldottam
Csak azért gondoltam, hogy megkérdezem, mivel nekem biztos órákba tellene(tellett végül), hogy elkészítsem a lekérdezést, mivel szoba kategóriák vannak, azon belül szoba tipusok és legvégül ezekhez a szoba tipusokhoz vannak rendelve a szobák, amik automatikusan foglalódnak le, aszerint, hogy a listában az első amelyik üres. Könnyebb lenne számomra ha a felhasználó egyenesen a szobát foglalná le, de ő különböző okokból ezt nem teheti, csak szoba tipus alapján választ és a rendszer az első üres szobát adja neki, aminek viszont az ID-át nem lehet ismerni, ha csak nem megyek végig mindegyik szobán az adott szobatipusból és ellenőrzöm le a fenti lekérdezést. Nekem ez mysql-ben még kicsit nehézkes, az este utánnaolvastam és sikerült végül megoldani.
Kenguru:
Azon gondolkodtam most, mikor olvastam hozzászólásod, hogy amikor valaki lefoglal egy szobát, mondjuk 16-tól egész 18-ig, akkor ő a szobába bejelentkezhet mondjuk 16-ikán délben, ott alszik akkor éjjel, másnap 17-ike, akkor éjjel is ott alszik, másnap 18-ika, akkor éjjel még mindig ott alszik, mivel ugye a 18-ikát is lefoglalta, majd a panziói szabályok szerint, gondolom ki van kötve, hogy 19-ike reggel 10-ig el kell hagynia a szobát. Tehát a következő vendég 19ikétől nyugodtan foglalhat szobát, délben fel is mehet - és 10-től 12-ig van idő kitakarítani, ágynemüt cserélni, feltölteni a bárt stb. De mindenképp meg kell kérdeznem az ismerősömet, akinek készítem az oldalt, hogy mégis pontosan, hogy megy ez, én nyaralásokkor soha nem figyeltem különösebben, de azt hiszem így volt például a Gyulai várfürdőn is... Ha tévedek kérlek világosítsatok föl!!!
Köszönöm szépen! Amint kész leszek vele, meg mutatom nektek is mit remekeltem :)
éjszakák száma
Persze örülök, hogy Kenguru felhívta rá a figyelmet, mert én elfelejtettem kihangsúlyozni. Természetesen a lekérdezést ennek megfelelően írtam meg.
Ha a szobát nem szám hanem kategória, típus és felszereltség alapján akarod foglalni, akkor persze ennek megfelelően kell módosítani és join-okkal bővíteni a lekérdezést. (Ebben az esetben legközelebb pontosabban kérdezz!)
Sok sikert, kíváncsian várjuk az oldalt!
Lassan elkeszülök a programozás reszével
Aztán még pár napot eltöltök design-al és végül megmutatom.
kérdés a lekérdezéseel kapcsolatban
Az érdekelne engem, hogy hogyan tudnám elérni ebben a lekérdezésben, a következőt:
Ne a lefoglalt szobákat listázza ki hanem azokat amik szabadok.
Igy alakitottam át a lekérdezést:
Írtam hozzá egy másik lekérdezést is:
Nekem ez a megoldás is jó lenne, ha kivenné az adott tömb összes elemével egyező szobaszámot.
Aki tudna rá megoldást nagoyn megköszönném.
Üdv szabolcs
NOT IN
NOT IN
kifejezést.valamiért nem jó
Írasd ki az összerakott SQL
De egyáltalán kellenek másra is a foglalt szoba számok? Mert ha nem, akkor össze is vonhatnád egyetlen lekérdezésbe:
Nagyon
De végülis ha majd kellenek a foglalt szobák listája is az majd ugyis másik oldalon lesz ezáltal kell uj lekérdezés is.
mégegyszer köszönöm, és tényleg nem kapott értéket a foglalások változóm az sql-ben.
De most már mükszik:)