Ir ao conteúdo
  • Cadastre-se
Glouk

PHP RESOLVIDO Comando NOW() no php

Posts recomendados

Boa noite,

 

Estou com um pequeno erro e não conseguindo ver onde errei...

Estou tentando colocar um sistema para identificar quando o registro foi criado, e quando ocorreu o ultimo login.

 

Para isso no banco de dados eu criei 2 colunas (datalogin e dataregistro) respectivamente informa a data do ultimo login e data do registro do cliente.

 

Linha de registro:

$sql = "INSERT INTO registro (dataregistro, datalogin)
VALUES ('NOW()', 'NOW()')";

Linha de login:

$data = mysqli_query($con, "UPDATE registro SET datalogin='NOW()' WHERE id=$id ");

 

Na tabela ambos estão no formato datetime, e estão retornando valores 0000-00-00....

 

Now esta incorreto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite amigo,

 

Tente utilizar o NOW() sem ' ' :

 

Linha de registro:

$sql = "INSERT INTO registro (dataregistro, datalogin) VALUES(NOW(), NOW())";

.

Linha de login:

$data = mysqli_query($con, "UPDATE registro SET datalogin = NOW() WHERE id = $id");

 

Grande Abraço.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ArThDsL  Infelizmente não funcionou amigo 😕

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde amigo,

 

Eu realizei alguns testes aqui, quebrei a cabeça na verdade kkkkk, e acabei indo dar uma pesquisada sobre, o que acontece é que o PHP identifica o NOW() como uma string, ou seja, você tem de gerar a data e a hora pelo php e fazer um insert a partir do mesmo, segue abaixo:

 

Linha de Registro:

$dataAtual = date('Y-m-d H:i:s');
$sql = "INSERT INTO registro (dataregistro, datalogin) VALUES ($dataAtual, $dataAtual)";

 

Linha de login:

$dataAtual = date('Y-m-d H:i:s');
$data = mysqli_query($con, "UPDATE registro SET datalogin = $dataAtual WHERE id = $id");

 

Segue o link da fonte: https://stackoverflow.com/questions/4174304/sql-now-gives-0000-00-00-000000

 

Grande abraço.

 

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ArThDsL Realmente cara, pesquisei em muitos lugares e encontrei esse mesmo conceito, mas foi difícil conseguir aplica-lo. Sua explicação ajudou bastante. Entretanto estou com 2 problemas:

 

1- Linha de registro funcionando perfeitamente, porém a linha de login não. Quando o comando de UPDATE é executado os dados do banco retornam para 0000-00-00... 

2- A hora registrada no banco não é a do meu computador em si, mas a hora do servidor. Sabe como posso proceder?

 

Agradeço imensamente pela resolução

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde amigo,

 

Vou enumerar as questões confirme você solicitou :): 

____

1°.

Verificar se:

• Campo da tabela está em DATETIME()

• A variável $dataAtual = date('Y-m-d H:i:s'); encontra-se setada.

 

Segue uma linha para teste abaixo caso os 2 itens acima estejam corretos:

$data = mysqli_query($con, "UPDATE registro SET datalogin = '".addslashes($dataAtual)."' WHERE id = '".addslashes($id)."' ");

____

2°.

Geralmente os servidores PHP vem com o horário americano, você pode alterar isso de 2 formas:

 

1ª - Você pode alterar no arquivo php.ini, basta abrir o arquivo (se você usa xampp ele deve estar na pasta C:\XAMPP\PHP\) de um CTRL+F e busque pela linha date.timezone, ja nessa linha você deve substituí-la pelo seguinte:

date.timezone = America/Sao_Paulo

Caso ela tenha um ; na frente, remova.

 

Após fazer isso salve o arquivo e reinicie o Apache.

 

2ª - Adicione a linha:

date_default_timezone_set('America/Sao_Paulo');

Em todas as páginas que precisar após declarar todas includes/requires necessárias. (Ou faça uma classe principal / autoload).

 

____

Caso você queira utilizar a data/hora do sistema do cliente (o que não é recomendado, pois vários PCs tem a data / hora incorreta) é necessário utilizar javascript, segue um link abaixo:

https://www.quackit.com/javascript/javascript_date_and_time_functions.cfm

____

 

Grande abraço!

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ArThDsL A questão do horário eu consegui arrumar. Mas o UPDATE continua com problema.

 

Tentei de tudo ja, mudar variaveis, mudar cada detalhe e não vai... No registro ele seta os dados, mas na hora de fazer o UPDATE ele zera todos os dados.

 

Ja pesquisei sobre, e não tem nenhum erro aparente. Estou usando servidor web para hospedagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde amigo,

 

Tente usar CURDATE(), vamos ver se funciona!

$data = mysqli_query($con, "UPDATE registro SET datalogin = CURDATE() WHERE id = $id");

 

Grande abraço.

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ArThDsL Finalmente funcionou amigo! CURDATE estava retornando apenas a data, então usei CURTIME, ele retornou a data e hora.

 

Entretanto retornou pro problema anterior, agora ele esta pegando a hora errada novamente 🤨

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite man,

 

Seu server MySQL também está com a hora diferente (provavelmente americana), para alterar basta entrar no phpMyAdmin (ou no software / painel que você usa para acessar o MySQL) e digitar a seguinte linha:

SET @@global.time_zone = '+3:00';
QUIT

Caso não tenha permissão, deve solicitar ao suporte da sua hospedagem que realize a alteração.

 

Grande Abraço!

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show, obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo,

 

Precisando estamos aí :)!

 

Grande abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!