Ir para conteúdo

POWERED BY:

Arquivado

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

sfonseca45

[Resolvido] Consulta hora

Recommended Posts

Boa Noite,

 

Não estou conseguindo, aliás nem sei se é possível, fazer uma consulta para poder validar a marcação de consulta.

Vou explicar

 

Tenho as tabelas com a seguinte estruturas:

 

tabela: espec_horario

 

espec_horarioID

especialID

diasemanaID

manhainicio

manhatermino

tardeinicio

tardetermino

mediaconsulta

 

nesta tabela, por excemplo tenho o seguinte registro na ordem acima

 

1 2

1 2

1 1

08:00:00 00:00:00

12:00:00 00:00:00

14:00:00 15:00:00

19:00:00 18:00:00

 

estou usando a seguinte sql:->

"SELECT * FROM calendario, espec_horario WHERE calendario.especialID = %s AND calendario.datestart_eve = '$consulta'  AND espec_horario.especialID = calendario.especialID "

 

Aqui eu verifico se existe consulta marcada para o horário - funciona direito se tiver avisa - agora o que eu preciso:

 

testar o horário que o cliente deseja e ver se o medico atende naquele horário:

 

exemplo: uma consulta para a especialidade 2 as 08:00 - no meu sql vai constar que não existe a consulta e poderá ser marcada - mas o médico só atende a partir das 15:00 - como fazer este teste direto na sql - é possível?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para lhe ajudar me responde uma dúvida.

 

Tem mais de um médico para atender?

 

Qual tipo de campo que você colocou nos horários?

 

Se existir mais de um médico , ficaria mais fácil você validar na aplicação, se existe marcação e se o médico atende no horário pretendido.

 

Aguardo resposta.

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com certeza é possível sim.

Mas você terá que ter uma tabela que grave os médicos e seus horários de atendimento

para comparar com o horário que o cliente quer a consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas é isso mesmo a tabela é a espec_horario lá eu tenho os horários

 

por exemplo:

 

1 -> espec_horarioId

1 -> especialidadeID -> fisioterapia

1 -> diasemanaID -> segunda-feira

08:00:00 -> atende a partir de

12:00:00 -> até as

14:00:00 -> atende no periodo da tarde a partir de

19:00:00 -> ultimo horario

40 -> media consulta em minutos

 

2 -> espec_horarioID

1 -> especialidadeID -> fisioterapia

2 -> diasemanaID -> terça-feira

00:00:00 -> não atende

00:00:00 -> não atende

15:00:00 -> primeira consulta do dia

18:00:00 -> ultima consulta do dia

40 -> media consulta em minutos

 

São várias especialidades - 10 no total -

 

Ok

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas é isso mesmo a tabela é a espec_horario lá eu tenho os horários

 

por exemplo:

 

1 -> espec_horarioId

1 -> especialidadeID -> fisioterapia

1 -> diasemanaID -> segunda-feira

08:00:00 -> atende a partir de

12:00:00 -> até as

14:00:00 -> atende no periodo da tarde a partir de

19:00:00 -> ultimo horario

40 -> media consulta em minutos

 

2 -> espec_horarioID

1 -> especialidadeID -> fisioterapia

2 -> diasemanaID -> terça-feira

00:00:00 -> não atende

00:00:00 -> não atende

15:00:00 -> primeira consulta do dia

18:00:00 -> ultima consulta do dia

40 -> media consulta em minutos

 

São várias especialidades - 10 no total -

 

Ok

 

 

Ok, e como é sua tabela que grava as consultas marcadas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tabela é assim

 

consultaID -> 1

usuarioID -> 5 -> João das Couves

datestart_eve -> 2012-05-15 08:00:00 -> inicio consulta

dateend_eve -> 2012-05-15 08:40:00 -> termino consulta

especialID -> 1 - Fisioterapia

 

Nesta SQL

"SELECT * FROM calendario, espec_horario WHERE calendario.especialID = %s AND calendario.datestart_eve = '$consulta'  AND espec_horario.especialID = calendario.especialID "

 

eu já testo para ver se existe consulta para aquele horario falta testar a hora para ver se ele atende naquele horário

 

outra coisa o horário eu já desmembrei em duas partes - $consulta = 2012-15-05 - e $hora = 08:00:00

 

Ok

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tabela é assim

 

consultaID -> 1

usuarioID -> 5 -> João das Couves

datestart_eve -> 2012-05-15 08:00:00 -> inicio consulta

dateend_eve -> 2012-05-15 08:40:00 -> termino consulta

especialID -> 1 - Fisioterapia

 

Nesta SQL

"SELECT * FROM calendario, espec_horario WHERE calendario.especialID = %s AND calendario.datestart_eve = '$consulta'  AND espec_horario.especialID = calendario.especialID "

 

eu já testo para ver se existe consulta para aquele horario falta testar a hora para ver se ele atende naquele horário

 

outra coisa o horário eu já desmembrei em duas partes - $consulta = 2012-15-05 - e $hora = 08:00:00

 

Ok

 

 

Bom, não sei como está sendo feita as coisas no seu programa,

mas, antes de gravar a consulta você deve testar se o horário e data informada na tela

estão dentro dos dias e horários de atendimento da especialidade escolhida...

 

Ex, o usuário que marcará a consulta informará estes dados no formulário para consultar:

 

------------------------------------------------------------------------------------------------------------

Data consulta: 01/05/2012 Especialidade: Fisioterapia

Horário Início consulta: 11:00:00 Horário final: 12:00:00

 

||Consultar disponibilidade||

------------------------------------------------------------------------------------------------------------

 

Então primeiro testar se o horário e data informada na tela

está dentro dos dias e horários de atendimento da especialidade escolhida:

 

SELECT * FROM espec_horario

WHERE diassemanaID = $diaInformadoPeloUsuario AND especialId = $especInformada AND

($horaIniInformada between manhainicio and manhatermino

OR

$horaIniInformada between tardeinicio and tardetermino )

AND

($horaFimInformada between manhainicio and manhatermino

OR

$horaFimInformada between tardeinicio and tardetermino )

 

Testar se esta consulta acima retornou resultados, se sim, a especialidade atende nesse horário informado

e então fazer uma segunda consulta para verificar se já não há consulta marcada neste horário

Fica mais ou menos assim:

(Fica melhor que voce separe em 3 campos para data Inicio e Hora incio e fim...

datestart_eve , horastar_eve e horaend_eve )

 

if($atendeNoHorario=true) { //faz a segunda consulta

 

SELECT * FROM calendario

WHERE datestart_eve = $dataInformadaPeloUsuario AND especialID = $especInformada AND

($horaIniInformada between horastart_eve and horaend_eve

OR

$horaFimInformada between horastart_eve and horaend_eve )

 

if(retornarDados=true) {

echo "Já há consulta marcada nesse horário";

} else {

echo "ok";

chamaRotinaQueGravaNaTabelaCalendario;

}

}

 

Seguinnnte colega: A lógica é MAIS OU MENOS essa... mas eu não tenho nada aqui agora pra testar esse código

que eu montei aí... então tem que testar ai e fazer os ajustes. E da pra incrementar muito mais também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela resposta, fiz uma página de teste apenas para verificar o horário mas não funciona - o SQL não verifica e traz todos os registros

 

SELECT * FROM espec_horario , especialidades, diadasemana WHERE especialidades.especialID = espec_horario.especialID AND diadasemana.diadasemanaID =  espec_horario.diadasemanaID ORDER BY especialidades.especial, diadasemana.nomedia AND ('$hora' BETWEEN espec_horario.manhainicio AND espec_horario.manhatermino OR '$hora' BETWEEN espec_horario.tardeinicio AND espec_horario.tardetermino)

 

Quando um medico não atende na parte da manhã eu coloco 00:00:00 será que é por isso ?

 

Vou continuar tentando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui ....

 

SELECT * FROM diadasemana, espec_horario WHERE espec_horario.diadasemanaID = diadasemana.diadasemanaID AND espec_horario.especialID = %s AND diadasemana.nomedia = '$semana' AND ('$hora' BETWEEN espec_horario.manhainicio AND espec_horario.manhatermino OR '$hora' BETWEEN espec_horario.tardeinicio AND espec_horario.tardetermino

 

Obrigado a todos

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.