Jump to content
Alex.NET

Query à BD (Lógica)

Recommended Posts

Alex.NET

Bom dia pessoal,

estou aqui com um grande problema,

estou a desenvolver uma plataforma para requisição de veículos da empresa.

Quando um funcionário vai requisitar, a própria plataforma indica os carros que estão disponíveis, no entanto encontrei um erro no algoritmo, aparentemente funciona corretamente, até ver um caso curioso de hoje, que foi um funcionário requisitou um carro das 14:00 às 17:30, esse carro durante essa hora dá indisponível, tudo bem, mas se eu o tentar requisitar das 11:00 às 13:00 ele continua a dar-me indisponível, o que não deveria acontecer.

Isto julgo ser erros de lógica e não tanto de programação, quando fiz esta parte andei bastante de volta dela e sei que assim, aparentemente resultou, mas descobri este erro, deixo aqui o select

$result = mysql_query("
SELECT cw_veiculos.matricula,cw_veiculos.nr,cw_veiculos.lugares,cw_veiculos.designacao,cw_veiculos.id,cw_requesicoes.saida,cw_requesicoes.chegada,cw_requesicoes.estado,cw_requesicoes.dia
FROM cw_veiculos
LEFT JOIN cw_requesicoes
ON cw_veiculos.id=cw_requesicoes.veiculo
WHERE (cw_requesicoes.chegada  between '". $_SESSION['horaSaida']."' AND '".$_SESSION['horaSaida']."'
OR cw_requesicoes.saida  between '". $_SESSION['horaSaida']."' AND '".$_SESSION['horaSaida']."'
OR cw_requesicoes.chegada > '".$_SESSION['horaSaida']."')
AND cw_requesicoes.dia = '". $_SESSION['dia']."' AND cw_requesicoes.estado <> 'Recusada'
");

A hora que pretendo sair com o carro -> $_SESSION['horaSaida']

A hora que pretendo chegar -> $_SESSION['horaEntrada']

O dia pretendido -> $_SESSION['dia']

Depois deste select ele vai inserir em um array os carros que retornaram dele, ou seja, os que estão indisponíveis

Alguém com a cabeça mais fresca que eu para me dar uma ajuda?

cumprimentos

Edited by scorch
Adicionado Geshi.

Share this post


Link to post
Share on other sites
KTachyon

Porque é que utilizas um between se o valor que colocas é o mesmo? É o mesmo que dizeres a alguém:

"Escolhe um número entre 5 e 5"


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Alex.NET

Porque é que utilizas um between se o valor que colocas é o mesmo? É o mesmo que dizeres a alguém:

"Escolhe um número entre 5 e 5"

Pois, no dia em que o fiz (após bastantes tentativas) correu bem, julgo que ao inicio fazia o between entre valores diferentes

a lógica a aplicar é igual à apresentada no início da resolução do problema do seguinte tópico

http://www.portugal-a-programar.pt/topic/60806-retornar-quartos-que-nao-estao-ocupados/page__hl__%2Bespa%C3%A7os+%2Bestadias

no tens início/fim, tu tens saída/chegada

Obrigado, vou ver

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.