foglalt es szabad szobak kilistazasa
Sziasztok!
Szeretnek toletek segitseget kerni, mert mar sokmindent megprobaltam, de nem lelek ra a megfelelo logikara amivel a kovetkezo poblemat meg tudnam oldani:
Van nekem 2 tablam:
rooms:
reservations:
Termeszetesen sok mas tabla is van meg de azok jelen problemaban nem erintettek.
A problemam az, hogy ki kell listazni a szabad es a foglalt szobakat.
A listazas ugy nez ki, hogy megadok egy kezdeti es vegdatumot majd a ketto kozott minden napot kilistazok es az adott napokon szabad es foglalt szobakat. Nos itt az elozo mondat utolso reszenel jonnek a problemaim.
Abban az esetben ha tobb foglalas van egy szobara az intervallumon belul akkor a szoba szoba attol fuggetlenul, hogy o eppen nem is foglalt x napon csak y napon megjelenik x napon is.
Tehat:
foglalas 5-os szobara:
2012-01-10 - 2012-01-12
2012-01-15 - 2012-01-16
2012-01-17 - 2012-01-21
majd ugy kerdezem le, hogy vegigmegyek a szobakon:
majd ezutan minden iteracioban lekerdezem az adott szoba foglalasait:
es itt vissza fog jonni az 5-os szobara, hogy van neki 3db foglalasa.
Igazabol a megjelenitessel van problemam, nem tudom kilistazni, hogy csak az jelenjen meg a harom foglalasbol amelyik nekem kell.
pl:
kivancsi vagyok erre az intervallumra:
2012-01-12 - 2012-01-16
akkor kovetkezokeppen szeretnem megjeleniteni (a fentebb irt foglalasi idok alapjan):
2012-01-12 nap:
5. szoba
2012-01-13 nap:
5. szoba
2012-01-14 nap:
5. szoba
2012-01-15 nap:
5. szoba
2012-01-16 nap:
5. szoba
Nekem igy jelenik meg:
2012-01-12 nap:
5. szoba 5. szoba 5. szoba
2012-01-13 nap:
5. szoba 5. szoba 5. szoba
2012-01-14 nap:
5. szoba 5. szoba 5. szoba
2012-01-15 nap:
5. szoba 5. szoba 5. szoba
2012-01-16 nap:
5. szoba 5. szoba 5. szoba
Amivel probalkoztam, hogy belepakolom egy tombbe az a foglalast ha nagyobb mint egy es utana onnan olvasom ki az elso erteket.
De valamiert nem sikerult. Ti ezt hogyan oldanatok meg? Elnezest az ekezetek hianya miatt.
Biztosan egy trivialis dolog az amivel ez megoldhato, de teljesen megakasztott.
Elore is koszonok midnen segitseget!
Udvozlettel,
Tibi
■ Szeretnek toletek segitseget kerni, mert mar sokmindent megprobaltam, de nem lelek ra a megfelelo logikara amivel a kovetkezo poblemat meg tudnam oldani:
Van nekem 2 tablam:
rooms:
CREATE TABLE `motel`.`rooms` (
`idrooms` int(11) NOT NULL AUTO_INCREMENT,
`roomnumber` int(11) NOT NULL,
`idroomparameters` int(11) NOT NULL,
`floor` int(11) NOT NULL,
`description` text NOT NULL,
PRIMARY KEY (`idrooms`,`roomnumber`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1
`idrooms` int(11) NOT NULL AUTO_INCREMENT,
`roomnumber` int(11) NOT NULL,
`idroomparameters` int(11) NOT NULL,
`floor` int(11) NOT NULL,
`description` text NOT NULL,
PRIMARY KEY (`idrooms`,`roomnumber`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1
reservations:
CREATE TABLE `motel`.`reservations` (
`idreservation` int(11) NOT NULL AUTO_INCREMENT,
`idguests` int(11) NOT NULL,
`idrooms` int(11) NOT NULL,
`idpayment` int(11) NOT NULL,
`fromdate` date NOT NULL,
`todate` date NOT NULL,
`adult` int(11) NOT NULL,
`child` int(11) NOT NULL,
`description` text NOT NULL,
`restatus` int(11) NOT NULL DEFAULT '0',
`reservationcode` varchar(255) DEFAULT NULL,
PRIMARY KEY (`idreservation`,`idguests`,`idrooms`,`idpayment`),
KEY `idrooms` (`idrooms`),
KEY `idguests` (`idguests`),
CONSTRAINT `reservations_ibfk_1` FOREIGN KEY (`idguests`) REFERENCES `guests` (`idguests`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `reservations_ibfk_2` FOREIGN KEY (`idrooms`) REFERENCES `rooms` (`idrooms`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1
`idreservation` int(11) NOT NULL AUTO_INCREMENT,
`idguests` int(11) NOT NULL,
`idrooms` int(11) NOT NULL,
`idpayment` int(11) NOT NULL,
`fromdate` date NOT NULL,
`todate` date NOT NULL,
`adult` int(11) NOT NULL,
`child` int(11) NOT NULL,
`description` text NOT NULL,
`restatus` int(11) NOT NULL DEFAULT '0',
`reservationcode` varchar(255) DEFAULT NULL,
PRIMARY KEY (`idreservation`,`idguests`,`idrooms`,`idpayment`),
KEY `idrooms` (`idrooms`),
KEY `idguests` (`idguests`),
CONSTRAINT `reservations_ibfk_1` FOREIGN KEY (`idguests`) REFERENCES `guests` (`idguests`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `reservations_ibfk_2` FOREIGN KEY (`idrooms`) REFERENCES `rooms` (`idrooms`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1
Termeszetesen sok mas tabla is van meg de azok jelen problemaban nem erintettek.
A problemam az, hogy ki kell listazni a szabad es a foglalt szobakat.
A listazas ugy nez ki, hogy megadok egy kezdeti es vegdatumot majd a ketto kozott minden napot kilistazok es az adott napokon szabad es foglalt szobakat. Nos itt az elozo mondat utolso reszenel jonnek a problemaim.
Abban az esetben ha tobb foglalas van egy szobara az intervallumon belul akkor a szoba szoba attol fuggetlenul, hogy o eppen nem is foglalt x napon csak y napon megjelenik x napon is.
Tehat:
foglalas 5-os szobara:
2012-01-10 - 2012-01-12
2012-01-15 - 2012-01-16
2012-01-17 - 2012-01-21
majd ugy kerdezem le, hogy vegigmegyek a szobakon:
SELECT idrooms, roomnumber FROM rooms
majd ezutan minden iteracioban lekerdezem az adott szoba foglalasait:
SELECT * FROM reservations LEFT JOIN rooms ON rooms.idrooms=reservations.idrooms WHERE rooms.idrooms='".$roomid."'";
es itt vissza fog jonni az 5-os szobara, hogy van neki 3db foglalasa.
Igazabol a megjelenitessel van problemam, nem tudom kilistazni, hogy csak az jelenjen meg a harom foglalasbol amelyik nekem kell.
pl:
kivancsi vagyok erre az intervallumra:
2012-01-12 - 2012-01-16
akkor kovetkezokeppen szeretnem megjeleniteni (a fentebb irt foglalasi idok alapjan):
2012-01-12 nap:
5. szoba
2012-01-13 nap:
5. szoba
2012-01-14 nap:
5. szoba
2012-01-15 nap:
5. szoba
2012-01-16 nap:
5. szoba
Nekem igy jelenik meg:
2012-01-12 nap:
5. szoba 5. szoba 5. szoba
2012-01-13 nap:
5. szoba 5. szoba 5. szoba
2012-01-14 nap:
5. szoba 5. szoba 5. szoba
2012-01-15 nap:
5. szoba 5. szoba 5. szoba
2012-01-16 nap:
5. szoba 5. szoba 5. szoba
Amivel probalkoztam, hogy belepakolom egy tombbe az a foglalast ha nagyobb mint egy es utana onnan olvasom ki az elso erteket.
De valamiert nem sikerult. Ti ezt hogyan oldanatok meg? Elnezest az ekezetek hianya miatt.
Biztosan egy trivialis dolog az amivel ez megoldhato, de teljesen megakasztott.
Elore is koszonok midnen segitseget!
Udvozlettel,
Tibi
Korábbi kérdés
Szia!Koszi a linket!
Koszi a linket! Hasznos volt, segitett a szemlelt kialakitasaban. Viszont en ennek ellenere abba az iranyba indultam el, hogy fogom es lekerdezem roomid alapjan az osszes foglalast ami adott szobara talalhato.
Mindezt ugy, hogy elso lekerdezesben visszajonnek a szobak majd ezen iteralva meghivok minden iteracioban egy lekerdezest az adott iteracioban talalhato szoba id-val. Ez fogja visszaadni az adott szoba foglalalsait.
Mivel itt visszajon a fromdate es a todate is, ennek megfeleloen adok meg listazasi felteteleket. Azzal nincs is gond, hogy kilistazzam a szobak foglalasanak kezdetet es veget. Azzal van most a gondom, hogy a ketto datum kozotti napokat kezeljem. Ha egy szoba foglalt 5.-tol 10.-ig akkor most latszik a listaban, hogy 5.-en kezdodik es latszik az is, hogy 10.-en van vege, viszont az nem, hogy a ketto kozott is foglalt.
Erre keresek egy megoldast. Ha van oteleted megkoszonnem.
Hideg fejjel kicsit
koszi&udv,
Tibi