Jump to content
Joob

Contagem de 30 Dias após Compra/Click

Recommended Posts

Boas Malta,

 

Básicamente queria fazer uma contagem de 30 dias, com desactivação do serviço em si, ou seja, Comprava e Fica do tipo "Faltam 30 Dias / Faltam 29 Dias, etc.." depois no fim dos dias, ficaria "Comprar Novamente" ..

Sei que não está bem, precisava era de uma ajuda.

 

Tenho desta forma a chamada

<?php if($account->SERVICO1) : ?>
                    
<font color="#BB0306">
  <?php
  if(isset($_POST['buy1']))
  {
    $buy1 = date('Y-m-d H:i:s');;
    $buy1->add(new DateInterval('P30D'));
    echo "" . $buy1 . "\n";
  }
  ?>

</font>

<?php else : ?>
<font color="#0C9620"><?= $language->store->SERVICO1->no_limit ?></font>
<?php endif; ?>

Já coloquei de outra forma só para colocar como se tivesse comprado e aparecesse a diferenca dos 30 dias. ou seja, a data ficava com + 30 dias do dia de hoje por exemplo.

Queria era adicionar a data da compra que quando clicassem no botão da compra de comprar, que adicionasse os dias que faltavam para renovar e quando chegasse ao fim, voltava novamente ao "Comprar" (exemplo)..

 

Tenho o botão da chamada assim

<a href="store/purchase/COMPRA1/<?=  Security::csrf_get_session_token('url_token'); ?>" class="label label-success label-store btn btn-dark" data-confirm="<?= $language->store->confirm_purchase; ?>">
  <?php printf($language->store->display->purchase); ?>
</a>

Se me conseguissem dar uma ajuda para colocar na database, acho que seria melhor para a configuração/registo do dia.

 

Não sei se me fiz entender.

Obrigado.

 

 

Abraço,

Share this post


Link to post
Share on other sites

Olá @Joob.

 

O que você precisa é construir o objeto DateTime com a data referente à validade do serviço.

Em outras palavras, é basicamente isso:

<?php
// $data = new \DateTime();// se for agora
$data = new \DateTime( '2018-08-22 15:00:00' );// se for uma data do bd

$expira_em = ( clone $data )->modify( 'next month' );// ou "+30 days", se preferir limitar aos dias

echo $expira_em > $data  ? 'VALIDO AINDA' : 'EXPIROU';// uma forma simples de verificar a validade

echo "\nDias restantes: " . $data->diff( $expira_em )->days;

Resultado:

VALIDO AINDA
Dias restantes: 31

 

Share this post


Link to post
Share on other sites

Boas @Matteus,

 

Yap funcionou bacano, e simples.. 

 

Substitui o "EXPIROU" por variavel para fazer do genero.. quando chegar ao "$expirou" enviar um email automaticamente para o "$_POST['email'] (da pessoa que se registou)" e outro para mim de aviso "$to" .. 

 

Fazer algo deste jeito.. 

Chegou ao $expirou e envia um email para mim e para a pessoa registada.

 

Este code nao é o que tenho mas ve se daria para fazer algo assim

if(isset($_POST['expirou']))
{

$to      = 'name@yahoo.com';
$client  = '$_POST['email']';

$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@ourcompany.com' . "\r\n" .
    'Reply-To: webmaster@ourcompany.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

sendmail($to, $client,  $subject, $message, $headers);

 

Obrigado 

 

Abraco

 

Share this post


Link to post
Share on other sites

Boas Novamente,

 

Acho que ele não fazia os updates dos dias..

 

Tentei fazer deste formato ..

 

<script type="text/javascript">
  function countDown(){  
    $(".show").each(function() {
      var elm = $(this);
      var difTime=this.timestamp;  
      var day=0,hours=0,minutes=0,seconds=0;  
      if(difTime>0){  
        day=Math.floor(difTime/84600);  
        hours=(Math.floor((difTime/3600))%24) + day*24 ;  
        minutes=Math.floor(difTime/60)%60;  
        seconds=Math.floor(difTime)%60;   
      }  
      else{  
        elm.removeClass("show"); //for remove class show
      }  
      elm.html(hours+' H '+minutes+' M '+seconds+' S ');  
    });
  }  
  function countDown_onLoad(){  
    $(".show").each(function() {
      this.timestamp = parseInt(this.firstChild.nodeValue,10);
    });
    setInterval(countDown,1000);
  }  
  $(document).ready(function() {  
    countDown_onLoad();  
  });  
</script> 

<font color="#BB0306">
  <?php
    $show=mysql_query("SELECT * FROM `users` WHERE `time_ts` = 1");
    while ($array = mysql_fetch_array($show))
      { 
        $timeStop = $array['timeStop'];
        //$deltaTimeServer = strtotime($timeStop)-strtotime(date('Y-m-d H:i:s'));
        $deltaTimeServer = strtotime($timeStop)-time();
        echo "<td align = 'center'><div class=\"show\">".$deltaTimeServer."</div></td>";
      }
	?>
</font>

Ou seja, queria que quando se clicasse no botão

<a href="store/purchase/COMPRA1/<?=  Security::csrf_get_session_token('url_token'); ?>" class="label label-success label-store btn btn-dark" data-confirm="<?= $language->store->confirm_purchase; ?>">
  <?php printf($language->store->display->purchase); ?>
</a>

que a contagem por exemplo começasse no dia em que se clicou e que apartir dai contasse os 30 dias, 30,29,28,27, etc.. e que quando chegasse ao 0 dizia "expirou".. e que desse update ao mesmo no mysql.

 

Não sei se deu para entender ..

Obrigado.

 

Abraço

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By clickanapolis
      Boa tarde pessoal, desculpa se postei em lugar errado, mais não sei aonde postar essa minha dúvida. Estou finalizando um projeto que consiste em uma plataforma de processo seletivo e na etapa final os candidatos iram fazer uma prova online.
       
      O cliente me perguntou se é possível bloquear o navegador, tipo se ele sair do navegador ou mudar de aba tipo o sistema finalizar a prova do candidato, visto que o sistema irá identificar que ele foi fazer uma pesquisa.
       
      Eu particularmente não vi nada igual ate hj e não sei se existe algo seja em javascript ou qualquer outro modo de fazer isso.
    • By lUANZIKA3
      Olá boa tarde, eu criei um site de assistir jogo de futebol, apenas HTML + CSS E UM Pouco de JS, porém eu gostaria de editar os textos que contem em cada div pelo banco de dados, mais não sei por onde começar,  alguém poderia tirar minha duvida?
      gostaria apenas editar o conteúdo de texto e imagens. o que devo ler, e aprender?
      OBS: O site foi feito em Bootstrap!
      Sou leigo em PHP, alguém pode me ajudar, passar um link de algum forum, onde eu possa aprender a desenvolver esse pequeno utilitário que me ajudara bastante.
       
      Desde já agradeço!
      <div class="card-body"> <!--Title--> <h4 class="card-title">Campeonato Brasileiro Série A</h4> <!-- AS LINHAS QUE EU GOSTARIA DE EDITAR PELO BANCO DE DADOS--> <h6></h6> <h4 class="card-title">São Paulo x Palmeiras</h4> <!-- AS LINHAS QUE EU GOSTARIA DE EDITAR PELO BANCO DE DADOS--> <!--Text--> <p class="card-text">Assita o jogo de <span class="badge badge-primary"> <marquee behavior="slide">13/07 as 19:00</marquee behavior="slide"> </span> vivo, Assita futebol pelo mobile ou pc, online de graça, Brasileirão Série A sportv, premiere <span class="badge badge-danger"> <marquee behavior="slide">São Paulo x Palmeiras</marquee behavior="slide"> </span> é só dar play! </p> <!-- Provides extra visual weight and identifies the primary action in a set of buttons --> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#M2">PLAY</button> </div>  
    • By Igor Gabriel
      Boa Tarde, estou com uma dúvida.
       
      Estou criando um site para uma imobiliárias, fiz um sistema de cadastro todo bonitinho onde se encontra funcionando perfeitamente. Contudo fora do sistema, no site, quando clico para ver os imoveis, tenho a listagem de todos os imoveis já cadastrados. Quando entro na página para ver mais do Imóvel é trazido consigo todas as informações presentes no banco, ao invés de uma só. Como faço para trazer uma única informação específica do banco?
    • By leocouto
      Pegar um dado específico de uma tabela, caso tenha mais de um item cadastrado sempre vai pegar o último.
      <form name="editaFornecedor"<?php +1?> action="edit_forne.php" id="editaFornecedor" method="POST"> <!-- Pegando todos os fornecedores cadastrados... --> <table class="table table-striped"> <thead class="thead-dark"> <tr> <th scope="col">ID</th> <th scope="col">Nome</th> <th scope="col">Fone</th> <th scope="col">CNPJ</th> <th scope="col">Rua</th> <th scope="col">Número</th> <th scope="col">Bairro</th> <th scope="col">Estado</th> <th scope="col">Cidade</th> <th scope="col">CEP</th> <th scope="col">E-mail</th> <th scope="col">Observação</th> <th scope="col">Editar|Deletar</th> </tr> </thead> <?php @session_start(); include('conexao.php'); $fornecedor = mysqli_query($conexao, "SELECT * FROM fornecedor"); $linhas = mysqli_num_rows($fornecedor); while ($linhas = mysqli_fetch_array($fornecedor)) { ?> <tbody> <tr> <td><?php echo $linhas['id_fornecedor']; ?></td> <td><?php echo $linhas['nome']; ?></td> <td><?php echo $linhas['fone']; ?></td> <td><?php echo $linhas['cnpj']; ?></td> <td><?php echo $linhas['rua']; ?></td> <td><?php echo $linhas['numero']; ?></td> <td><?php echo $linhas['bairro']; ?></td> <td><?php echo $linhas['estado']; ?></td> <td><?php echo $linhas['cidade']; ?></td> <td><?php echo $linhas['cep']; ?></td> <td><?php echo $linhas['email']; ?></td> <td><?php echo $linhas['observacao']; ?></td> <td> <button type="submit" class="btn btn-secondary" style="height: 35px; width: 100px"><i class="material-icons">description</i>Editar</button><br> <button type="button" class="btn btn-danger" style="height: 35px; width: 100px"><i class="material-icons">delete</i>Deletar</button> </td> <td><input type="text" name="id_fornecedor" value="<?php echo $linhas['id_fornecedor'];?>"></td> </tr> </tbody> <?php } ?> </table> <!-- Fim da exibição de todos os fornecedores cadastrados.. --> </form>  
       
      ======================================================================================================================================================
      Aqui no MYSQL só pega o último item da tabela.. Não pega o que foi clicado no botão.
      <?php include('conexao.php'); session_start(); //$cnpj=$_POST['cnpj']; $id_fornecedor=$_POST['id_fornecedor']; echo $id_fornecedor; ?> =======================================================================================================================================================
      É desse modelo da imagem, mas na hora que clico em editar no mysql aparece o último id e não na linha que cliquei, se eu clicar no primeiro na outra página aparece o id 4, que é o ultimo, quem pode me dar essa força? Ficarei muito grato.

    • By tiagosp
      Olá, preciso encontrar uma forma de diferenciar usuários no SESSION, logo apliquei o seguinte método:
      SESSION["ID" + IP] = ID_vindo_do_Mysql
      Assim posso autenticar o usuário nas diversas requisições, porém surgiu um problema... O mesmo IP é aplicado a dispositivos que acessam o servidor a partir da mesma rede, veja:
      Meu PC = 000.000.00.00
      Meu celular = 000.000.00.00
      Demais dispositivos: 000.000.00.00
      Todos apresentam o mesmo IP, mas preciso de algo (prefixo, sufixo) para diferenciar  o nome da global SESSION.
      Pensei em um sufixo aleatório, porém não vou conseguir autenticar o cliente em páginas futuras, pois o sufixo se torna desconhecido e não posso armazená-los em cookie
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.