Ir para conteúdo
Fórum Script Brasil
  • 0

Codigo com erro


Eduardo Weber

Pergunta

Eu queria fazer um script que se o usuario loga depois de 24 horas e antes de 48 horas do ultimo login, ele adquirice um ponto, como esta abaixo no codigo. mas existe um erro e eu não consigo achar!

$dia = 86400; // = a 24horas
                    $dia2 = 172800; // = a 48 horas
                    $hoje = "UNIX_TIMESTAMP()";
                    $ultimologin = mysql_query("SELECT ultimologin FROM usuarios WHERE nome ='X'");
                    $t='UNIX_TIMESTAMP()' - $ultimologin;
                    
                    
                    if($t > $dia)
                    {
                        if($t < $dia2)
                        {
                        mysql_query("UPDATE usuarios SET diass=diass+1 WHERE nome ='x'");
                        }
                    }

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Que tal usar a data mesmo(usando a função date()), em vez do Timestamp?

Uma ideia:

Primeiro Log:

$hora = date("H");

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

// Guarda no banco esses valores

Segundo Log:

// Lista o banco e pega a primeira hora($primeiraHora) e a data($primeiraData)

$segundaHora = date("H");

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

$pd = explode("-", $primeiraData);

$sd = explode("-", $segundaData);

// ts = timestamp

$primeirots = mktime($primeiraHora, 0, 0, $pd[1], $pd[0], $pd[2]);

$segundots = mktime($segundaHora, 0, 0, $sd[1], $sd[0], $sd[2]);

$novots = mktime(($segundaHora - $primeiraHora), 0, 0, ($sd[1] - $pd[1]), ($sd[0] - $pd[0]), ($sd[2] - $pd[2]));

if( $novots > $primeirots )

if( $novots < segundots )

//...

Editado por Mad Jonathan
Link para o comentário
Compartilhar em outros sites

  • 0

O melhor é usar timestamps mesmo.

O que está errado, além daquele UNIX_TIMESTAMP(), é que o resultado da query não está passando pelo fetch.

Eu faria assim:

$query= mysql_query("SELECT `ultimologin` FROM` usuarios` WHERE `nome` ='".$nomeDoUsuario."'");
$ultimoLogin = mysql_fetch_array($query);

$tempoDecorrido = time() - $ultimoLogin['ultimologin'];
                    
if(($tempoDecorrido > 86400) && ($tempoDecorrido < 172800)){
        mysql_query("UPDATE `usuarios` SET diass = diass + 1 WHERE `nome` ='".$nomeDoUsuario."'");
}

Obviamente, $nomeDoUsuario deve ter o nome do usuário.

Se a query não retornar um inteiro para o ultimo login, coloque um cast.

Link para o comentário
Compartilhar em outros sites

  • 0
O melhor é usar timestamps mesmo.

O que está errado, além daquele UNIX_TIMESTAMP(), é que o resultado da query não está passando pelo fetch.

Eu faria assim:

$query= mysql_query("SELECT `ultimologin` FROM` usuarios` WHERE `nome` ='".$nomeDoUsuario."'");
$ultimoLogin = mysql_fetch_array($query);

$tempoDecorrido = time() - $ultimoLogin['ultimologin'];
                    
if(($tempoDecorrido > 86400) && ($tempoDecorrido < 172800)){
        mysql_query("UPDATE `usuarios` SET diass = diass + 1 WHERE `nome` ='".$nomeDoUsuario."'");
}

Obviamente, $nomeDoUsuario deve ter o nome do usuário.

Se a query não retornar um inteiro para o ultimo login, coloque um cast.

Fiz com timestamp usando a função mktime(). Se nosso amigo Eduardo conseguir adaptar nossos códigos, ele irá conseguir!

Editado por Mad Jonathan
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...