Salut,
tabel_rezervari: id, id_barca, id_sofer, data_start, data_end
tabel_barci: id, nume_barca
tabel_soferi: id, nume_sofer
Pot scoate dintr-un singur select barcile si soferii care sunt liberi in anumite intervale.
Ex.: Sofer 1, Barca 1, rezervare 15-11-2015 13:00:00 - 15-11-2015 15:00:00
Daca selectez data de 15-11-2015 14:00:00 nu vreau sa mai am soferul 1 si bara 1
Multumesc!
Ajutor cod rezervari
Moderatori: Zamolxe, Moderatori
-
- Junior Member
- Mesaje: 45
- Membru din: Mie Iun 17, 2015 2:11 pm
- Contact:
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Re: Ajutor cod rezervari
Daca data_start, data_end au un tip de date calendarstic (timestamp, date, datetime), poti folosi BETWEEN.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/
-
- Junior Member
- Mesaje: 45
- Membru din: Mie Iun 17, 2015 2:11 pm
- Contact:
Re: Ajutor cod rezervari
nevvermind scrie:Daca data_start, data_end au un tip de date calendarstic (timestamp, date, datetime), poti folosi BETWEEN.
data_start, data_end sunt setate ca (datetime 0000-00-00 00:00:00)
Eu am incercat ceva de genu dar nu merge:
SELECT b.nume_barca FROM tabel_rezervari a, tabel_barci b WHERE a.id_barca!=b.id AND data_start>='$data_start' AND data_end<=$data_end
Am 3 barci adaugate: barca 1, barca 2, barca 3
Si am urmatoarele rezervari:
2015-11-11 12:00:00 - 2015-11-11 14:00:00 => Barca 1
2015-11-11 14:00:00 - 2015-11-11 16:00:00 => Barca 2
Si daca vreau sa fac o rezervare intre 2015-11-11 13:00:00 - 2015-11-11 15:00:00 vreau sa pot selecta doar barca 3
Am incercat mai multe variante dar nu imi iese ce am nevoie.
Recent am realizat un magazin online cu haine bebelusi ieftine si de calitate.
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Re: Ajutor cod rezervari
Fa-ti o noua baza de date si executa codul asta:
Apoi incearca
Cod: Selectaţi tot
SET FOREIGN_KEY_CHECKS=0;
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
CREATE TABLE `barci` (
`barca_id` int(11) unsigned NOT NULL,
`nume` varchar(255) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `barci` (`barca_id`, `nume`) VALUES
(1, 'barca 1'),
(2, 'barca 2'),
(3, 'barca 3');
CREATE TABLE `rezervari` (
`rezervare_id` int(11) unsigned NOT NULL,
`barca_id` int(11) unsigned DEFAULT NULL,
`sofer_id` int(11) unsigned DEFAULT NULL,
`data_start` datetime NOT NULL,
`data_end` datetime NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO `rezervari` (`rezervare_id`, `barca_id`, `sofer_id`, `data_start`, `data_end`) VALUES
(1, 1, 1, '2015-11-15 12:00:00', '2015-11-15 16:00:00');
CREATE TABLE `soferi` (
`sofer_id` int(11) unsigned NOT NULL,
`nume` varchar(255) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `soferi` (`sofer_id`, `nume`) VALUES
(1, 'sofer 1'),
(2, 'sofer 2'),
(3, 'sofer 3');
ALTER TABLE `barci`
ADD PRIMARY KEY (`barca_id`);
ALTER TABLE `rezervari`
ADD PRIMARY KEY (`rezervare_id`),
ADD KEY `barca_id` (`barca_id`),
ADD KEY `sofer_id` (`sofer_id`);
ALTER TABLE `soferi`
ADD PRIMARY KEY (`sofer_id`);
ALTER TABLE `barci`
MODIFY `barca_id` int(11) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
ALTER TABLE `rezervari`
MODIFY `rezervare_id` int(11) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2;
ALTER TABLE `soferi`
MODIFY `sofer_id` int(11) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
ALTER TABLE `rezervari`
ADD CONSTRAINT `barca_id_fk` FOREIGN KEY (`barca_id`) REFERENCES `barci` (`barca_id`) ON DELETE SET NULL ON UPDATE CASCADE,
ADD CONSTRAINT `sofer_id_fk` FOREIGN KEY (`sofer_id`) REFERENCES `soferi` (`sofer_id`) ON DELETE SET NULL ON UPDATE CASCADE;
SET FOREIGN_KEY_CHECKS=1;
Apoi incearca
Cod: Selectaţi tot
select t3.nume as name_sofer, t2.nume as name_barca, t1.data_start, t1.data_end from rezervari t1
join barci t2 on t1.barca_id = t2.barca_id
join soferi t3 on t1.sofer_id = t3.sofer_id
where '2015-11-15 11:00:00' NOT BETWEEN t1.data_start and t1.data_end
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/
-
- Junior Member
- Mesaje: 45
- Membru din: Mie Iun 17, 2015 2:11 pm
- Contact:
Re: Ajutor cod rezervari
Salut,
Codul de mai jos ar trebui sa afiseze barcile care nu sunt rezervate dar nu functioneaza cum trebuie
In tabelul barci am: barca 1, barca 2, barca 3
In tabelul rezervari am:
- rezervare 1 de la 10 - 11 -> barca 1
- rezervare 2 de la 13 - 14 -> barca 1
Cand adaug o rezervare noua de la 12 la 15 ($data_start = "2015-12-01 12:00:00" ; $data_end = "2015-12-01 15:00:00" ) nu vreau sa mai apara si barca 1
Am rezolvat problema inlocuind
cu
Va multumesc si imi cer scuze pentru post!
Codul de mai jos ar trebui sa afiseze barcile care nu sunt rezervate dar nu functioneaza cum trebuie
Cod: Selectaţi tot
if ( $db->query("SELECT id FROM rezervari WHERE id_barca='$id_barca' AND (('$data_start' BETWEEN data_start AND data_end) OR ('$data_end' BETWEEN data_start AND data_end))") < 1) {
//barci de rezervat
}
In tabelul barci am: barca 1, barca 2, barca 3
In tabelul rezervari am:
- rezervare 1 de la 10 - 11 -> barca 1
- rezervare 2 de la 13 - 14 -> barca 1
Cand adaug o rezervare noua de la 12 la 15 ($data_start = "2015-12-01 12:00:00" ; $data_end = "2015-12-01 15:00:00" ) nu vreau sa mai apara si barca 1
Am rezolvat problema inlocuind
Cod: Selectaţi tot
('$data_start' BETWEEN data_start AND data_end) OR ('$data_end' BETWEEN data_start AND data_end)
cu
Cod: Selectaţi tot
('$data_start' BETWEEN data_start AND data_end) OR ('$data_end' BETWEEN data_start AND data_end) OR (data_start BETWEEN '$data_start' AND '$data_end') OR (data_end BETWEEN '$data_start' AND '$data_end')
Va multumesc si imi cer scuze pentru post!
Recent am realizat un magazin online cu haine bebelusi ieftine si de calitate.
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Google [Bot] și 62 vizitatori