Jump to content


Photo

Sistema Tipo Agenda/despertador, Sql


  • Faça o login para participar
1 reply to this topic

#1 kohler

kohler

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 20/08/2007, 09:32

Bom dia pessoal.

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! (y)

Attached Files


Edição feita por: kohler, 20/08/2007, 10:00.


#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 22/08/2007, 12:07

A data do servidor está como esperada?
Mostre um registros de exemplo, e veja se "d.local='pg_inicial2' AND d.tipo = 'noticia'" está de acordo.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq