Jump to content
Joob

Problema com SELECT/UPDATE da DB + Contagem 30

Recommended Posts

Boas Malta,

 

Estou tendo um problema com o chamar da DB com o SELECT.

Preciso de fazer chamar o EMAIL, TIME_TS e o USERNAME, e que o TIME_TS faça a contagem dos 30 dias até ao dia 0.

 

Deixo o código aqui

<?php if($account->vip) : ?>
                   
<?php 
function setTimeout($fn, $timeout){
  // sleep for $timeout milliseconds.
  sleep(($timeout/8000));
  $fn.'()';
}

// Some example function we want to run.
function someFunctionToExecute(){
  $result = $database->query('SELECT * FROM `users` WHERE `user_id`=$user_id');
  while($row = $result->fetch_assoc()) {
    $time_ts = $row["time_ts"];
    $user_email = $row["email"];
    $username = $row["username"];
  }
  if($time_ts>0){
    $database->query('UPDATE `users` SET `time_ts`= $time_ts WHERE `user_id` = $user_id');
  }else{
    $emailContent = file_get_contents('emails/ts_information_users.html', true);

    $emailContent =  str_replace("{{RESEND-ACTIVATION-EMAIL-CONTENT}}",$language->resend_activation->email->content,$emailContent);
    $emailContent =  str_replace("{{RESEND-ACTIVATION-EMAIL-CONTENT-USER}}",$language->resend_activation->email->contentUser,$emailContent);
    $emailContent =  str_replace("{{RESEND-ACTIVATION-EMAIL-CONTENT-ACTIVATE}}",$language->resend_activation->email->contentActivate,$emailContent);
    $emailContent =  str_replace("{{RESEND-ACTIVATION-EMAIL-CONTENT-FOOTER}}",$language->footer_emails->footer,$emailContent);
    $emailContent =  str_replace("{{EMAIL}}",$user_email,$emailContent);
    $emailContent =  str_replace("{{RESEND-ACTIVATION-USERNAME}}",$username,$emailContent);

    $profile_account->vip == 0;		
    sendmail($user_email, $language->resend_activation->email->title, $emailContent);
  }

}

// This will run the function after a 3 second sleep =>
// We're using an anonymous function to wrap the function
// which we wish to execute.
setTimeout(function(){
  someFunctionToExecute();
}, 1000*3600*24);
?>

<?php else : ?>

<font color="#0C9620"><?= $language->store->vip->limit ?></font>

<?php endif; ?>

 

O problema é que ele não está actualizar o TIME_TS na DB nem fazer chamar o EMAIL e USERNAME..

 

Porque isto é, quando a pessoa clica no botão buy, supostamente seria para  ficar a fazer uma contagem de 30 dias até ao dia 0, e quando chegasse ao dia 0, enviasse um email ao user.

 

Deve existir um problema com

function setTimeout($fn, $timeout){
  // sleep for $timeout milliseconds.
  sleep(($timeout/8000));
  $fn.'()';
}

Porque se eu deixar esse código aberto, a página fica em looping e não para com o refresh.

 

 

Abraço

Share this post


Link to post
Share on other sites

Só que o problema é que a página fica em loop.. nem deixa entrar na página.. e nada é inserido na basedados.. nem como buscar a info à basedados..

 

Porque basta eu retirar o 

$fn.'()';

e o 

$fn,

a página já não fica em looping mas não faz a função.

Share this post


Link to post
Share on other sites

Alguem me consegue dar uma ajudinha.. 

 

Abraco

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 TheRonaldoStar
      Oii, fala ae pessoal!!
      Alguém pode me ajudar com uma coisa por favor?;
      Seguinte!, eu anteriormente fiz uma pergunta aqui no fórum recorrente a isso, mas eu conseguir uma solução parcial.
      Que era, fazer uma listagem de todos os cadastros e fazer a junção dos cadastros com uma coluna igual, Ou seja existem duas colunas [DE e Para], que recebem o id de quem está recebendo ou que está enviando a mensagem, eu conseguir fazer a tal listagem por grupo mas o problema que estou tendo é: que so faz o agrupamento de as colunas contiver o id por ex: [De = "1" e Para ="2"].
      Atualmente estou usando a codificação deste Jeito:
       
      $sql_2 = $db -> prepare("SELECT * FROM privado WHERE (Para = '$Meu_id') Or (De = '$Meu_id') GROUP BY Para, De DESC"); $sql_2 -> execute(); Esta consulta como pode ver ele busca todos os cadastros que tenha o meu ID ou seja do usuário online!, Após a consulta ele vei obter em um "while" somente o [ Id_De eo Id_Para ] desta forma:
      while($dados_2 = $sql_2 -> fetch(PDO::FETCH_OBJ)){ $Id_De = ($dados_2 -> De); $Id_Para = ($dados_2 -> Para); } Mas em fim eu gostaria de saber como mostrar somente um resultado ou seja o ultimo resultado que tiver o meu ID em ambas colunas [ Id_De ou Id_Para ].
      Antes de vocês me recomendar a função DESC LIMIT 'valor' saiba eu quero que liste todos os usuários que enviou ou recebeu minha mensagem não somente 1 ou seja se eu mandar um mensagem para o usuário 2 e ele me retornar uma mensagem vai mostrar somente o ultimo registro que tenha o meu ID e o id dele.
       
      Atenciosamente,
      ~Ronaldo
       
    • By TheRonaldoStar
      Oi, mais cedo eu fiz um post aqui no site mas um pouco longo creio eu que e mais fácio eu fazer uma pergunta mais direta.
      A pergunta é:
      Como posso fazer agrupamentos de uma tabela através de dois campos cujo os valores são =, mesmo que esteja invertidos?
      EX: [DE = "1"], [PARA = "2"].
      E fazer o agrupamento ou só mostrar o ultimo cadastro mesmo que eles estejam invertidos desta forma?
      EX: [DE = "2"], [PARA = "1"].
       
      Acho que agora com este post fui mais claro, Alguém pode me ajudar por favor??.
      Atenciosamente,
      ~Ronaldo
    • By HigorCrds
      Bom, o que eu consegui até agora foi fazer com que, ao usuário clicar em algum dos botões de paginação (1, 2, 3...) o PHP guarde uma SESSION com o número da página correspondente.
      Segue o código:
       
      <!-- BOTÃO COM O NÚMERO DA PÁGINA --> <button onclick="mudaVar(<?php echo $i; ?>);"> <?php echo $i; ?> </button> <!-- FUNÇÃO PARA GUARDAR SESSION PG --> function mudaVar(valor) { $.ajax({ url:'sessions.php?valor='+valor }); } // GUARDA SESSION PG if(isset($_GET['valor'])){ $_SESSION['pg'] = $_GET['valor']; } Até aí tudo bem, só que o problema é que a SESSION não é alterada naquele momento, só quando eu atualizo a página.
      Como corrigir isso?
    • By Carcleo
      A ideia:
       
      toda e entrada no site, seja com link direto do tipo:
       
      www.site.com.br/pasta1/pasta2/arquivo.php  
      ou normal url amigável
       
      www.site.com.br/categoria/tipo  
      tudo queria que redirecionasse para o index.php da raiz do site.
       
      E que, caso o arquivo ou pasta NÃO existisse, abrisse normalmente a pagina 404.php
       
       
      Tentei de tres formas mas nenhuma dá certo.
       
      Primeira forma
      RewriteEngine On ErrorDocument 400 http://www.sortecard.com.br/index.php ErrorDocument 401 http://www.sortecard.com.br/401.php ErrorDocument 403 http://www.sortecard.com.br/403.php ErrorDocument 404 http://www.sortecard.com.br/404.php ErrorDocument 500 http://www.sortecard.com.br/500.php php_value allow_url_fopen on php_value allow_url_include on php_flag mail_filter 0 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php?page=$1 Segunda forma:
      Options +FollowSymLinks DirectorySlash On RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} \.php$ RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?request=$1 [L] Terceira forma:
      RewriteEngine On ErrorDocument 400 http://www.sortecard.com.br/index.php ErrorDocument 401 http://www.sortecard.com.br/401.php ErrorDocument 403 http://www.sortecard.com.br/403.php ErrorDocument 404 http://www.sortecard.com.br/404.php ErrorDocument 500 http://www.sortecard.com.br/500.php php_value allow_url_fopen on php_value allow_url_include on php_flag mail_filter 0 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteRule ^(.*)$ index.php?page=$1 Problemas:
       
      A) Quando acesso a url diretamente não está redirecionando para o index.
      B) Quando falo que é para redirecionar todos os arquivos ele não me dá os parêmetros. 
    • By Pellegrini3834
      Ola galera do IMasters!!!!!!
       
      Estou com uma duvida eu tenho um CRUD em php MVC e queria saber em que camada fica as mensagens depois de uma realização de um evento por exemplo:
      Cadastro de Pessoa, depois de cadastrada quero que ele emita uma mensagem dizendo que a "PESSOA FOI CADASTRADA COM SUCESSO!!!!" e eu queria saber  em que parte ela fica se é no Controle ou na View porque sabemos que no modelo fica a parte referente a manipulação de dados.
      Obrigado.
×

Important Information

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