Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xandeb

Disponibilidade de Reserva (veiculo, hora, data)

Recommended Posts

Boa tarde pessoal, procurei a solucao do meu problema que vou descrever mesmo assim nao encontrei. Seguinte tenho um sistema em PHP de reserva de veiculos. A finalidade é o cliente vai fazer a solicitacao do veiculo em uma dataInicial com horaInicial e dataFinal com horaFinal da reserva. Meu problema esta em separar agora os veiculos disponiveis para as demais reservas ou seja. Veiculo 1 reservado para 15/07/2015 as 08:00 até 15/07/2015 até as 13:00. Se outro cliente querer reservar um veiculo, esse veiculo 1 so pode aparecer disponivel depois dessa data e horario, mostrando apenas os demais veiculos que nao tem reserva nesse periodo. Acho que consegui explicar.

 

Tabelas do sistema:

 

CREATE TABLE IF NOT EXISTS `reservas` (
`id_reserva` int(10) NOT NULL AUTO_INCREMENT,
`datainicial` date DEFAULT NULL,
`datafinal` date DEFAULT NULL,
`horainicial` time DEFAULT NULL,
`horaaprox` time DEFAULT NULL,
`rota` text,
`cidades_id_cidade` int(10) NOT NULL,
`setores_id_setor` int(10) NOT NULL,
`usuarios_id_usuario` int(10) NOT NULL,
`regioes_id_regiao` int(10) NOT NULL,
`veiculos_id_veiculo` int(10) NOT NULL,
`motoristas_id_motorista` int(10) NOT NULL,
PRIMARY KEY (`id_reserva`),
KEY `fk_reservas_cidades1_idx` (`cidades_id_cidade`),
KEY `fk_reservas_setores1_idx` (`setores_id_setor`),
KEY `fk_reservas_usuarios1_idx` (`usuarios_id_usuario`),
KEY `fk_reservas_regioes1_idx` (`regioes_id_regiao`),
KEY `fk_reservas_veiculos1_idx` (`veiculos_id_veiculo`),
KEY `fk_reservas_motoristas1_idx` (`motoristas_id_motorista`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `veiculos` (
`id_veiculo` int(10) NOT NULL AUTO_INCREMENT,
`modelo` varchar(50) DEFAULT NULL,
`placa` varchar(10) DEFAULT NULL,
`motoristas_id_motorista` int(10) NOT NULL,
`regioes_id_regiao` int(10) NOT NULL,
`cidades_id_cidade` int(10) NOT NULL,
`setores_id_setor` int(10) NOT NULL,
PRIMARY KEY (`id_veiculo`),
KEY `fk_veiculos_motoristas1_idx` (`motoristas_id_motorista`),
KEY `fk_veiculos_regioes1_idx` (`regioes_id_regiao`),
KEY `fk_veiculos_cidades1_idx` (`cidades_id_cidade`),
KEY `fk_veiculos_setores1_idx` (`setores_id_setor`),
) ENGINE=InnoDB;
Como faço para fazer esse select corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ate verifiquei e acho que deu certo se eu fazer apenas com a data mas quando fiz com o horario junto nao deu certo acho que minha logica esta bem errada, alguem pode me ajudar?

 

("SELECT * FROM veiculos LEFT JOIN regioes ON veiculos.regioes_id_regiao = regioes.id_regiao LEFT JOIN cidades ON veiculos.cidades_id_cidade = cidades.id_cidade LEFT JOIN setores ON veiculos.setores_id_setor = setores.id_setor LEFT JOIN motoristas ON veiculos.motoristas_id_motorista = motoristas.id_motorista LEFT JOIN status_veiculo ON veiculos.status_veiculo_idstatus_veiculo = status_veiculo.idstatus_veiculo LEFT JOIN veiculo_compartilhado ON veiculos.veiculo_compartilhado_idveiculo_compartilhado = veiculo_compartilhado.idveiculo_compartilhado
WHERE id_regiao = '$idRegiaoBusca' AND ((id_cidade = '$idCidadeBusca' AND id_setor = '$idSetorBusca' AND idstatus_veiculo = '1') OR (id_cidade = '$idCidadeBusca' AND idstatus_veiculo = '1' AND idveiculo_compartilhado = '1'))
AND id_veiculo NOT IN (SELECT veiculos_id_veiculo FROM reservas
WHERE status_reserva_idstatus_reserva = 1 AND
(datainicial BETWEEN '$datahojei' AND '$datahojef' ) OR
(datafinal BETWEEN '$datahojei' AND '$datahojef') OR
('$datahojei' BETWEEN datainicial AND datafinal) OR
('$datahojef' BETWEEN datainicial AND datafinal)
AND
(horainicial BETWEEN '$horahojei' AND '$horahojef' ) OR
(horaaprox BETWEEN '$horahojei' AND '$horahojef') OR
('$horahojei' BETWEEN horainicial AND horaaprox) OR
('$horahojef' BETWEEN horainicial AND horaaprox)
)
ORDER by modelo ASC");

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.