Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Estou precisando de uma dica que como devo proceder em uma consulta em meu banco de dados MySQL utilizando PHP.
Estou desenvolvendo um sistema de reserva de uma casa na praia.
O funcionamento é básico: o cliente liga e diz a data que quer reservar a casa. Gravo todas as informações no BD (nome, cpf, telefone, email) inclusive a data da entrada e a data da saída (campos DATE).
Até aqui tudo bem. Já está pronto.
Imaginei a seguinte situação: vai que o usuário do site (aquele que vai trabalhar cadastrando estas reservas, digita errado uma outra reserva ou vai que ele esqueceu que já tinha reservado a data, por exemplo, 2014-02-01 a 2014-02-10 e tenta gravar uma nova reserva na mesma data.
Exemplificando/Recapitulando:
a. tenho 2 datas no meu banco, "data_entrada" e "data_saida". Há portanto a entrada, o intervalo de dias que a pessoa irá ficar dentro da casa e a saída.
Exemplo: o cliente A irá entrar na casa dia 01/02/2014 ficar todos os dias (dia 2, dia 3, dia 4) até o dia 10/02/2014 e;
b. tenho 2 novas datas que vão ser inseridas. Mais outro intervalo de datas
O que eu pensei:
a. pego a data de entrada e saida que o usuário irá tentar gravar e jogo num vetor (as datas e os intervalos).
b. pego cada data desse vetor e faço uma consulta SQL usando BETWEEN dentro do MySQL
A minha dúvida esta aqui: será essa a melhor saída?
Alguém já desenvolveu algo parecido e já teve essa dúvida? Como resolveu?
Abraço e obrigado
Em tempo:
Errei o título do tópico.
O correto seria: Intervalo de datas comparando com intervalo de datas em banco (php + mysql)
Uerlen, olá.
Entendi sua resposta, obrigado.
No seu código só estaríamos comparando a data_entrada e a data_saida. O problema é que não vai comparar a "data_do_meio"....
Exemplo: data_entrada = 2014-02-01 e a data_saida = 2014-02-10
Neste caso há 10 dias a serem comparados. Precisarei comparar:
2014-02-01
2014-02-02
2014-02-03
2014-02-04
2014-02-05
2014-02-06
2014-02-07
2014-02-08
2014-02-09
2014-02-10
Consegui explicar direito?
Abraço e obrigado mais uma vez
Se a data do meio estiver no intervalo ou a inicial o final vai "pegar".
Bom dia,
Acho que uma boa opção é pelo BETWEEN mesmo...
Fiz um pequeno rascunho... derrepente pode lhe auxiliar na solução
SELECT COUNT(*)
FROM
sua_tabela_de_reservasAtt,
Uerlen Santos