Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 4

Artigo com data expirada continua visível

07-11-2011 16:00

Aee galera, tô criando um site onde o cliente cadastra notícias com ou sem expiração, esta notícia também pode ou não estar ativa. Eu sou meio leigo ainda em MySql e o select que montei foi o seguinte:


SELECT * FROM artigos WHERE (tipo='N' AND ativo='S') OR (tipo='N' AND expira='S' AND data_expiracao>DATE('Y-m-d')) ORDER BY data_inclusao DESC

tipo-> tipo de artigo (N)oticia, existem outros artigos nesta tabela que não são notícias e não expiram.
ativo-> indica se a notícia está ativa ou não. Se não estiver ativa se tornará invisível no site.
expira-> indica se a noticia expira ou não.
data_expiracao-> caso a noticia expire este campo é a data a qual ele se tornará invisível no site.

O problema é que as noticias com data expirada ainda estão visiveis no site e só deixam de aparecer se eu desativa-las manualmente.
Alguém pode me ajudar??
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Artigo com data expirada continua visível

07-11-2011 16:17

As datas no bd estão salvar no formato: aaaa-mm-dd, correto?

Estando, primeiro defina a data atual

$hoje = date("Y-m-d");

Ai na query você deve querer exibir as notícias que não expiram hoje, ou seja, as datas são menores que hoje

...WHERE data <= '$hoje'
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 4

Artigo com data expirada continua visível

07-11-2011 17:26

Aee companheiro, fiz a alteração proposta na linha seguinte:

SELECT * FROM artigos WHERE (tipo='N' AND ativo='S') OR (tipo='N' AND expira='S' AND data_expiracao<='$data') ORDER BY data_inclusao DESC

e aqui a visualização do select resultante:

SELECT * FROM artigos WHERE (tipo='N' AND ativo='S') OR (tipo='N' AND expira='S' AND data_expiracao<'2011-11-07') ORDER BY data_inclusao DESC

Acho que o problema está no primeiro bloco da consulta "(tipo='N' and ativo='S')", parece que ele está ignorando o resto da consulta "OR (tipo='N' and expira='S' and data_expiracao<='$data')".
Como posso associar todos os parâmetros desta consulta? Tipo uma dentro da outra.

Veja bem. Não posso ignorar os outros parâmetros que seguem abaixo:

tipo-> tipo de artigo (N)oticia, existem outros artigos nesta tabela que não são notícias e não expiram.
ativo-> indica se a notícia está ativa ou não. Se não estiver ativa se tornará invisível no site.
expira-> indica se a noticia expira ou não.
data_expiracao-> caso a noticia expire este campo é a data a qual ele se tornará invisível no site.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Artigo com data expirada continua visível

07-11-2011 17:31

Porque não faz assim:

WHERE tipo='N' AND ativo='S' AND expira='S' AND data_expiracao < '2011-11-07' 

0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 4

Artigo com data expirada continua visível

07-11-2011 17:45

Porque o artigo pode estar desativado ou a noticia pode ter a opção de não expirar.

Mas eu montei o seguinte select e resolvi o problema.

SELECT * FROM artigos WHERE ((tipo='N' and ativo='S' and expira='N' ) OR (tipo='N' and ativo='S' and expira='S' and data_expiracao>='$datahoje')) ORDER BY data_inclusao Desc

Obrigado pela ajuda. {:)C
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Artigo com data expirada continua visível

07-11-2011 19:47

Boa.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado