Estou fazendo um site para uma Rádio onde os locotures serão dinâmicos e só apareceram na pg. inicial (Agora no AR: Fulano) quando o horário for o intervalo de horário cadastrado pra ele para determinados dias da semana.. até aí tudo bem, pois fiz assim:
- hora_inicial (hora que ele entra ao ar, ex: 15:30:00)
- hora_final (hora que ele saí do ar, ex: 16:30:00)
- dia_semana (dia da semana, ex: Segunda,terça, etc..)
pois bem, a lógica utilizada via SQL é a seguinte:
SELECT
a.cod_locutor,
a.nome,
a.foto,
b.cod_locutor,
b.programa,
b.cod_programa,
c.cod_grade,
c.cod_programa,
c.cod_locutor,
c.semana,
c.hora_inicio,
c.hora_fim
FROM programas as b
INNER JOIN locutores as a ON b.cod_locutor = b.cod_locutor
INNER JOIN grade as c ON a.cod_locutor = c.cod_locutor
WHERE b.cod_programa = c.cod_programa AND c.hora_inicio <= '$hora_atual' AND c.hora_fim >= '$hora_atual' AND semana = '$semana_atual'
Está funcionando, porém tenho um esquema parecido para fazer, só que com notícias, para notícia só entrar ao ar apartir de uma determinada data e sair em outra data, bem como horário, utilizando os campos:
- data_inicial (Data em que a notícia poderá aparecer)
- data_final (Data em que ela expira, ou seja, deixa de aparecer)
- hora_inicial (Horário em que ela deve entrar ao ar)
- hora_final (Horário em que ela deve sair do ar)
Campos de datas estão como DATE() e de hora como TIME();
Tentei utilizar a mesma lógica utilizada acima com os locutores, mas não funcionou, vejam:
$hora_atual = date("H:i") . ":" . "00";
$data_atual = date("Y-m-d");
$pega_noticia = mysql_query("SELECT
a.cod_noticia,
a.cod_editorial,
a.titulo,
a.conteudo,
a.icone,
a.hora_inicio,
a.hora_fim,
a.data_inicio,
a.data_fim,
DATE_FORMAT(a.data,'%d/%m/%Y') as data,
DATE_FORMAT(a.hora,'%H:%i') as hora,
b.cod_editorial,
b.editorial,
c.cod_noticia,
c.arquivo,
c.cod_foto,
d.cod_noticia,
d.tipo,
d.local
FROM noticias as a
LEFT JOIN editoriais as b ON a.cod_editorial=b.cod_editorial
LEFT JOIN fotos as c ON a.cod_noticia=c.cod_noticia
LEFT JOIN criterios as d ON a.cod_noticia=d.cod_noticia
WHERE d.local='pg_inicial2' AND d.tipo = 'noticia'
AND a.hora_inicio <= '$hora_atual'
AND a.hora_fim >= '$hora_atual'
AND a.data_inicio <= '$data_atual'
AND a.data_fim >= '$data_atual' ORDER by a.cod_noticia DESC LIMIT 1",$conexao) or die(mysql_error());
Não dá erro, apenas a notícia não aparece, se eu utilizar apenas com um sistema de horário (para todos os dias), funciona, porém, com a data, não
Se alguém poder me ajudar, ficaria muito grato!
Attached Files
Edição feita por: kohler, 20/08/2007, 10:00.