Ir para conteúdo
Kaio Augusto de Castro

tratando campo timestamp php com mysql

Recommended Posts

Galera seguinte, eu ja esgotei meu cérebro e não consegui sair do lugar no meu banco tem um campo que chama-se data_criacao e ele é do tipo timestamp mas eu não sei como fazer com que ele grave a data e a hora no banco, o valor eu joguei dentro de um array ficando assim:

$_SESSION['cad'] = array(	'nome' 			=>	$_POST['nome'],
							'user' 			=>	$_POST['user'],
							'pass'			=>	$_POST['pass'],
							'email'			=>	$_POST['email'],
							'fone'			=>	$_POST['fone'],
							'endereco'		=>	$_POST['endereco'],
							'cod_bairro'	=>	$_POST['bairro'],
							'cidade'		=>	$_POST['cidade'],
							'cod_estado'	=>	$_POST['estado'],
							'cep'			=>	$_POST['cep'],
							'cpf'			=>	$_POST['cpf'],
							'cod_status'	=>	$_POST['status'],
							'cod_nivel'		=>	$_POST['nivel'],
							'data_criacao'	=>	NOW(),
							'data_mod'		=>	null,
						);

Não me recordo bem onde foi que eu li que o comando NOW() insere a data e a hora de acordo com o servidor, mas esta dando esse erro a baixo:

Fatal error: Uncaught Error: Call to undefined function NOW() in /opt/lampp/htdocs/adm/cad_user.php:29 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/adm/cad_user.php on line 29

 

Tentei usar o NOW() com e sem as aspas... e nenhum deles foi, se coloco ele com aspas ele deixa cadastrar mas não grava a data e nem a hora, a coluna no banco fica zerada...

 

Se puderem me ajudar... ficarei muito agradecido... 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente configurar como valor default current_timestamp.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Agora, Fernando C disse:

tente configurar como valor default current_timestamp.

Preciso que seja um pouco mais expecifico, ainda sou novato e não compreendo muito bem o código.

Esse current_timestamp. eu defino onde??? no banco ou no lugar no NOW()?

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha isso é nas definicoes da tabela mesmo; pesquise sobre alter table mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, Fernando C disse:

olha isso é nas definicoes da tabela mesmo; pesquise sobre alter table mysql

Blz... mas... no meu caso eu tenho dois campos, um pra criar a data quando o cadastro é criado e um pra guardar a data de quando foi feita a ultima atualização, eu precisava de algo que eu pudesse escolher qual dos campos eu quero gravar e é isso que eu tenho duvidas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Kaio Augusto de Castro, joia!

Em mysql ficaria assim, para deixar seu campo data de criação pegar a data automaticamente pelo banco,

e o campo data_alteracao atualizar a data sempre que tiver alguma alteração na tabela:
 

ALTER table TABELA
MODIFY data_criacao
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

ALTER table TABELA
MODIFY data_alteracao
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP


Lembrando que nesse caso, você não precisaria mais passar esses campos no PHP

No caso do seu problema com o now, você precisa deixa-lo entre aspas
 

'data_criacao'	=> 'now()'

Pois assim só sera executado no banco de dados, sem as aspas, o PHP entende que você esta querendo executar uma função do php, e você não tem essa função! :)
 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 12/13/2017 at 20:29, EdCesar disse:

@Kaio Augusto de Castro, joia!

Em mysql ficaria assim, para deixar seu campo data de criação pegar a data automaticamente pelo banco,

e o campo data_alteracao atualizar a data sempre que tiver alguma alteração na tabela:
 


ALTER table TABELA
MODIFY data_criacao
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

ALTER table TABELA
MODIFY data_alteracao
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP


Lembrando que nesse caso, você não precisaria mais passar esses campos no PHP

No caso do seu problema com o now, você precisa deixa-lo entre aspas
 


'data_criacao'	=> 'now()'

Pois assim só sera executado no banco de dados, sem as aspas, o PHP entende que você esta querendo executar uma função do php, e você não tem essa função! :)
 

Obrigado EdCesar, era exatamente isso, mas quando eu coloquei o now entre ' ', ele gravou mas sem as datas de criação e modificação, vou tentar esses comando no meu sql... obrigado pela ajuda e pela disposição. 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em ‎13‎/‎12‎/‎2017 at 20:29, EdCesar disse:

@Kaio Augusto de Castro, joia!

Em mysql ficaria assim, para deixar seu campo data de criação pegar a data automaticamente pelo banco,

e o campo data_alteracao atualizar a data sempre que tiver alguma alteração na tabela:
 


ALTER table TABELA
MODIFY data_criacao
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

ALTER table TABELA
MODIFY data_alteracao
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP


Lembrando que nesse caso, você não precisaria mais passar esses campos no PHP

No caso do seu problema com o now, você precisa deixa-lo entre aspas
 


'data_criacao'	=> 'now()'

Pois assim só sera executado no banco de dados, sem as aspas, o PHP entende que você esta querendo executar uma função do php, e você não tem essa função! :)
 

 

 

Desculpe a demora em precedentes, eu estava muito ocupado esses dias e estava esperando meu computador novo chegar, fui testar gora o código no mysql e ele executou de boas, porem ainda esta gravando com data e hora zerado, "000-00-00 00:00:00", sabe me informar o que porque disso agora?

 

______________________________________________________________________

 

Este problema só esta ocorrendo com o cadastro é feito pelo site, se eu cadastrar por código no mysql ele funciona de boa!

 

______________________________________________________________________

Erro encontrado, eu estava editando o arquivo do bkp e não o do servidor^^ malz aeeee.

Editado por Kaio Augusto de Castro
Erro encontado - código funcionndo

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

  • Conteúdo Similar

    • Por Ruy Hoffmann
      Caros amigo(a)s,
       
      To gostando pra caramba do MySql, porém ficar aprendendo catando coisas aqui e ali dá mais trabalho que pegar um manual passo-a-passo do início ao fim.
       
      Vocês poderiam me dar sugestões de manuais que vão do básico ao avançado bem detalhado? Pode ser video-aulas também.
       
      Obrigado.
    • Por yeahboy
      Quero que ao clicar em "Enviar consulta", execute um script .php que envie os dados no formulário para um .txt
      Eu mandaria pra db, mas ainda não aprendi, minha ideia com isso é apenas aprendizado em php, com testes locais.

    • Por MAKAVELIQUE
      Pessoal, imaginem a seguinte situação: o usuário A clica no botão enviar no mesmo instante que o usuário B, caso a ação do sql seja um comando update no mesmo campo, id=7 por exemplo e isso acontecer exatamente no mesmo instante, ocorre perca de dados? 
      <?php $update = "UPDATE br_gang SET i='$i', data= NOW() WHERE id='$id'"; $query = mysqli_query($update, $conn) or die (mysqli_error($conn)); if($update==true){ echo "<script>alert ('DADOS SALVOS COM SUCESSO, BOA SORTE!');</script>"; } ?> Se isso acontecer e ocorrer perca de dados, qual o procedimento possível para resolver o problema?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.