Ir para conteúdo

POWERED BY:

Arquivado

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

CACA COBRA

Select entre dois periodos de hora

Recommended Posts

Bom gente eu tenho que fazer um select de maneira que me retorne apenas os registros do dia e no horario programado..exemplo

 

Meu esquema do banco

 

 

 

CREATE TABLE IF NOT EXISTS `programacao` (
`id_prog` int(11) NOT NULL auto_increment,
`dia_semana_prog` int(11) NOT NULL,
`nome_prog` varchar(255) NOT NULL,
`inicio_prog` time NOT NULL,
`fim_prog` time NOT NULL,
`descricao_prog` text NOT NULL,
`data` date NOT NULL,
PRIMARY KEY (`id_prog`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=35;

 

 

 

 

Agora eu preciso resgatar os registros do dia da semana e e que esteja ocorrendo em um determinado periodo entre inicio_prog e fim_prog

 

 

 

Depois de algumas muitas horas tentando, consegui fazer o seguinte algoritimo PHP e SQL

 

 

 

$hora = date("H:m:s");
			$dia  = date('l');
			$query = $bd->query("SELECT * FROM programacao WHERE (dia_semana_prog = ".SwitchWeekDays($dia).") AND ('".$hora."' BETWEEN inicio_prog AND fim_prog) ");
			while ($linha = $bd->fetch_array($query)) {

					 echo "$linha[2] <br><br>\r\n";
			  
			 }

 

Esse SQL parece certo, mas tem alguns bugs, até mostra mas alguns momentos e horarios aleatorios ele mostra registros errados ou não mostra o que devia, só ta acertando mesmo no dia do programa mas no horario não.

 

 

 

Alguem ai pode me ajudar a concluir esse dilema?

 

 

 

Abraço a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT * FROM programacao WHERE (dia_semana_prog = ".SwitchWeekDays($dia).") AND (curtime() BETWEEN inicio_prog AND fim_prog)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po bixo pérfeito, mas me explica uma coisa...

 

eu não vi diferença aparente, pq não funciona perfeitamente pegando a hora pelo php?

 

esse curtime() faz a mesma coisa que o $hora = date("H:m:s");

 

Desculpe a ignorancia e muito obrigado pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia "Cobra",

creio que você tinha coloca um valor string para a hora junto com um PHP, sendo que o certo é colocar um curtime..

 

 

flw

 

léo

Compartilhar este post


Link para o post
Compartilhar em outros sites

no PHP

H -> hora de 00 a 23

m -> mes (e nao minuto, minuto é i)

s -> segundo

 

porem mesmo fazendo H:i:s o correto é você deixar o banco se virar sozinho com funçoes proprias

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.