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


Moderador: web

 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

18-08-2012 10:56

Olá! Não consigo entender um código. Se puderem me ajudar ficarei grato. Estou fazendo adaptação de um código para expiração automática de anúncios que venderei em meu site. O sistema enviará mensagens faltando 10 dias, 5 dias e 1 dia para a expiração do anúncio. Até aqui eu consegui fazer. Estou com dúvida quanto à consulta quando se chega ao dia da expiração do anúncio. Vou mostrar a consulta original, que trata da expiração de usuários:

Aqui são as consultas referentes à informação de quantos dias faltam para a expiração. Não coloquei os códigos todos:

//10 days to the Expire Date (ExpDate) $ten1 = mktime(0,0,0,date(m),date(d) + 10,date(Y)); $ten2 = mktime(23,59,59,date(m),date(d) + 10,date(Y)); $qexp = "select * from re2_agents where ExpDate between '$ten1' and '$ten2' and days10 = 'n' "; $rexp = mysql_query($qexp) or die(mysql_error()); mysql_query("update re2_agents set days10 = 'y' where AgentID = '$aexp[AgentID]' ") or die(mysql_error()); //5 days to the Expire Date (ExpDate) $five1 = mktime(0,0,0,date(m),date(d) + 5,date(Y)); $five2 = mktime(23,59,59,date(m),date(d) + 5,date(Y)); $qexp = "select * from re2_agents where ExpDate between '$five1' and '$five2' and days5 = 'n' "; $rexp = mysql_query($qexp) or die(mysql_error()); mysql_query("update re2_agents set days5 = 'y' where AgentID = '$aexp[AgentID]' ") or die(mysql_error()); //1 day to the Expire Date (ExpDate) $one1 = mktime(0,0,0,date(m),date(d) + 1,date(Y)); $one2 = mktime(23,59,59,date(m),date(d) + 1,date(Y)); $qexp = "select * from re2_agents where ExpDate between '$one1' and '$one2' and days1 = 'n' "; $rexp = mysql_query($qexp) or die(mysql_error()); mysql_query("update re2_agents set days1 = 'y' where AgentID = '$aexp[AgentID]' ") or die(mysql_error());

Não sei como fazer quando se chega ao dia da expiração. Quando chegar o momento da expiração, quero que seja feito um update inserindo o número 3 (referente a "expirado") no campo status (isso eu sei fazer), mas não sei fazer a consulta quando chegar o momento da expiração. Abaixo, vou mostrar a consulta como está no código em que estou me baseando, mas esta consulta se refere a um dia após ao da expiração, em que o usuário é excluído:

//1 day AFTER the Expire Date (ExpDate) WAS PASSED //$qexp = "select * from re2_agents where ExpDate > ExpDate + 86400 and days1 = 'y' "; $qexp = "select * from re2_agents where (($t - ExpDate) > 86400) and days1 = 'y' "; $rexp = mysql_query($qexp) or die(mysql_error());

A linha comentada já estava no código.

Pelo que entendi, as consultas acima, fora esta última, informam quantos dias faltam para expirar. Sei que o número 86400 da última consulta é o número de segundos que um dia possui. Como posso fazer a consulta do momento em que o anúncio expirou para fazer o update do status "expirado"? E a consulta para o anúncio ser excluído um dia após o de sua expiração?

O que significam where ExpDate > ExpDate + 86400 e where (($t - ExpDate) > 86400) da última consulta informada?

Grato. Um abraço.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

18-08-2012 11:09

Para executar o script no dia atual, você tem exatamente que tirar o 68400, já que esse valor soma 1 dia a data de expiração.

where ExpDate > ExpDate

Para deletar o anúncio um dia após sua expiração, ai sim você vai usar o + 68400, já que vai somar 1 dia na data de expiração, ai aplicar o delete.

DELETE FROM tabelatal WHERE ExpDate ...

Mais ai no caso você tem que comparar a data armazenada no bd com a data atual.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

18-08-2012 12:56

Grato. Comparar a data de expiração com a data atual seria isto aqui: $t - ExpDate? Dei echo em $t mas nada apareceu. $t seria a data atual?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

18-08-2012 14:02

parece o $one1

$one1 = mktime(0,0,0,date(m),date(d) + 1,date(Y));
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

22-08-2012 11:08

Por favor. Por que tenho de comparar a data de expiração com a data atual?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

22-08-2012 11:17

Para informar a expiração. Por exemplo, hoje é 22/08/2012

Se o anúncio vai ser mostrado até dia 21/08/2012, você iria subtrair a data do anúncio da data atual, e isso iria retornar, 1, 2, 3, dias...

Ou seja, quando essa subtração for igual ou maior que 1, o anúncio já está expirado.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

22-08-2012 12:33

Veja este código:
$hoje1 = mktime(0,0,0,date(m),date(d),date(Y)); $hoje2 = mktime(23,59,59,date(m),date(d),date(Y)); echo $hoje1; echo "<br>"; echo $hoje2; echo "<br>"; $teste_hoje_1 = date('d/m/Y H:i:s', $hoje1); $teste_hoje_2 = date('d/m/Y H:i:s', $hoje2); echo $teste_hoje_1; echo "<br>"; echo $teste_hoje_2; echo "<br>"; $qexc = "select * from tabela where data_expiracao between '$hoje1' and '$hoje2' "; $rexc = mysql_query($qexc) or die(mysql_error());

Serão selecionados os anúncios que têm data de expiração entre a zero hora e 23h59min59seg de hoje. Fiz essa adaptação pois não há como eu esperar, para teste, por exemplo, 10 dias para ver se o anúncio expira. Há como você me dizer como posso fazer a consulta para o anúncio ser excluído 120 segundos após a expiração? Seria: ... where data_atual - data_expiracao + 120?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

22-08-2012 16:23

Talvez você tenha que tirar os segundos da data, antes de trabalhar ela, ou do mktime. Dá uma olhada no manual http://php.net/manual/en/function.mktime.php
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

23-08-2012 14:26

Cara. Não estou sabendo fazer. Não sei a sintaxe. Pretendo fazer o seguinte: há os campos data_cadastro e data_expiracao. Vou criar o campo data_exclusao e enviar o registro com data 1 dia posterior à data_expiracao, e adaptar o código de expiração do anúncio para exclusão do mesmo. Vou tentar. Informo aqui se der certo.

Por favor, diga-me se está correta a data de exclusão:

Esta é a data de expiração: $data_expiracao = mktime(0,0,0,date(m) + 1,date(d), date(Y));

Esta é a data de exclusão: $data_exclusao = $data_expiracao + 86400;. Está correta a data de exclusão?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

23-08-2012 14:33

Se não me engano você adiciona os dias nessa base

date(d) + 1

Ou pode usar valores fixos

$a=mktime(0,0,0,07,31,2012);
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

23-08-2012 14:42

Beleza. Depois que postei pensei nisso. Estou testando. Se der certo informo aqui. Obrigado.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

23-08-2012 14:51

Blz.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

23-08-2012 15:01

Deu certo a data de exclusão. Agora vou adaptar o código de expiração para fazer a exclusão.

Construí assim:

$data_exclusao = mktime(date(H), date(i), date(s), date(m) + 1, date(d) + 1, date(Y)); echo $data_exclusao; echo "<br>";

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

23-08-2012 15:04

Boa.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

24-08-2012 08:10

Deu certo a adaptação do código de expiração para o de exclusão do anúncio. Obrigado pela força.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

24-08-2012 08:27

;)
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

08-03-2013 14:57

Olá! Voltei para esta parte de meu código, e estou com dificuldade para comparar a data de expiração com a data atual.

Eu criei a variável $hra (hora atual), assim representada:
$hra = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")); echo $hra; echo "-"; echo "hora atual"; echo "<br />"; $teste_hora_atual = date('d/m/Y H:i:s', $hra); echo $teste_hora_atual; echo "-"; echo "hora atual"; echo "<br />";

Na tabela do bd há o campo dex (data de expiração). O registro nesse campo está em timestamp. Feita a consulta, esta é a variável: $aexp['dex'].

Pretendo que quando a data de expiração coincidir com a hora atual seja enviada uma mensagem ao usuário informando a expiração do anúncio. Estou tentando através de if, da seguinte forma:

if($aexp['dex'] == $hra){mensagem ao usuário de que o anúncio expirou}

Mas a mensagem não é enviada.

Essa comparação está correta? Na busca que fiz pelo site sobre timestamp foi indicado um post sobre conversão de timestamp.

Qual a forma correta de fazer a comparação que pretendo? Tem de ser feita a conversão do timestamp para outro formato ou trabalho com timestamp, mesmo?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

08-03-2013 15:11

Faz um teste com esse script que postei para outra dúvida parecida com a sua.

<?php $hoje = date('Y-m-d'); $vencimento = ('2011-05-29'); $a = explode("-","$vencimento"); $b = explode("-","$hoje"); $antiga= mktime(0, 0, 0, $b[1], $b[2], $b[0]); $atual= mktime(0, 0, 0, $a[1], $a[2], $a[0]); $diferenca= $atual-$antiga; $dias = floor($diferenca/84600); if($dias=='15') { echo "<font color=\"blue\">faltam 15 dias</font>"; } elseif($dias=='10') { echo "<font color=\"blue\">faltam 10 dias</font>"; } elseif($dias=='5') { echo "<font color=\"blue\">faltam 5 dias</font>"; } else { echo "faltam $dias"; } ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

08-03-2013 15:46

Obrigado. Esse código foi dado num post meu. Estou tentando utilizá-lo mas não está dando certo. Eu somente gostaria de saber se está certa esta comparação $aexp['dex'] == $hra. Os registros no bd estão com datas em timestamp obtidas com hora, minuto e segundo. Preciso saber se na comparação esses dados devem ser excluídos. Vou continuar tentando.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

08-03-2013 16:04

Desculpe. Coloquei isto aqui, if($aexp['dex'] < $hra){mensagem}, e a mensagem foi enviada. Por quê isto aqui, if($aexp['dex'] == $hra{mensagem}, não daria certo?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

08-03-2013 16:18

Para entender o primeiro if, você tem que mostrar esses valores do if na tela, para comparar. No caso, um valor é menor que o outro.

Já no segundo if, você tendo na tela ambos os valores, vai entender porque comparando se os valores são iguais não dá certo.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

08-03-2013 16:22

Mostrar na tela é dar echo?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

08-03-2013 16:33

Isso. Porque tem que comparar visualmente também.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1220
Sexo: Masculino

expiração de anúncio

08-03-2013 16:41

Cara, acho que vou dizer besteira, mas como dou echo no if?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17511
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

expiração de anúncio

08-03-2013 16:58

Se você tem

if($aexp['dex'] < $hra){mensagem}

A idéia é ver quais valores você tem antes desse if

echo "{$aexp['dex']} e $hra";
if($aexp['dex'] < $hra){mensagem}

Só para ver os valores que você tem, ai você compara porque um valor menor que o outro é aceito.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

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