Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MiguelTb

[Resolvido] Como tratar na hora de inserir a data no db?

Recommended Posts

Boa noite galera,

 

Estou usando assim na minha tabela:

Campo: data

Tipo: TIMESTAMP

Padrão: CURRENT_TIMESTAMP

 

Na hora de inserir os dados no tabela não to sabendo como devo preencher, deixo em branco que nem o ID? pra ele preencher automatico? como funciona? Valeu galera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso, preenche sim, automatico.

 

Detalhe: o valor retornado será algo como 2011-02-11 20:20:56. Data e hora. Se o campor for uma data mesmo o ideal é usar DATE e inserir a data na query do INSERT.

Compartilhar este post


Link para o post
Compartilhar em outros sites

InterPlanet mas no caso como deixo aqui:

 

$sqlinsert = "INSERT INTO hei_colunas (titulo, coluna, autor, data, cliques, idautor, link) 
VALUES ('$titulo', '$content', '$nome', 'date', '1', '$id', 'teste') "; 

 

Aproveitando o post aqui + uma duvidasinha.

Eu tenho a pagina nova_coluna.php que tem o formulario pra escrever a coluna e nessa pagina se eu der echo $_SESSION['nome'] ele retorna meu nome.

 

e tenho a pagina publicar.php que é no action="publicar.php" do formulario da pagina nova_coluna, como posso gravar esse session do nome pra na página publicar.php ele vim com o nome registrado pra poder gravar no banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

use a função nativa NOW()

 

VALUES ('$titulo', '$content', '{$_SESSION['nome']}', NOW(), '1', '$id', 'teste') "; 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
// VOCE ESCOLHE O FORMATO:

// Data no formato mysql: 
$data = date('Y-m-d'); // 2011-02-11

// Data no formato local (nosso): 
$data = date('d/m/Y'); // 11/02/2011

$sqlinsert = "INSERT INTO hei_colunas (titulo, coluna, autor, data, cliques, idautor, link)  
VALUES ('$titulo', '$content', '$nome', '".$data."', '1', '$id', 'teste') ";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

use a função nativa NOW()

 

VALUES ('$titulo', '$content', '{$_SESSION['nome']}', NOW(), '1', '$id', 'teste') "; 

 

VALUES ('$titulo', '$content', '{$_SESSION[nome]}') "; 

sem aspas dentro dos colchetes do $_SESSION[].

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte, habilite as mensagens de erro, adicione o or die( mysql_error() );

 

e diga oque retornar deste echo:

echo $sqlinsert;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po consegui dessa forma, vejam se tem algum problema ou se posso usar assim mesmo:

 

<input type="hidden" name="nome" id="nome" value="<?php echo $_SESSION['nome'] .' '. $_SESSION['sobrenome']; ?>" />
<input type="hidden" name="idautor" id="idautor" value="<?php echo $_SESSION['id']; ?>" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza! Neste caso, como ce vai mandar o nome no post, na hora do INSERT:

 

$sqlinsert = "INSERT INTO hei_colunas (titulo, coluna, autor, data, cliques, idautor, link)   
VALUES ('$titulo', '$content', '$_POST[nome]', '".$data."', '1', '$_POST[idautor]', 'teste') "; 

 

ou, claro, pode definir:

 

// neste caso precisa das aspas dentro dos colchetes
$nome = $_POST['nome'];
$id = $_POST['idautor']; 

$sqlinsert = "INSERT INTO hei_colunas (titulo, coluna, autor, data, cliques, idautor, link)   
VALUES ('$titulo', '$content', '$nome', '".$data."', '1', '$id', 'teste') "; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

VALUES ('$titulo', '$content', '{$_SESSION[nome]}') "; 

sem aspas dentro dos colchetes do $_SESSION[].

isso vai gerar um notice/warning

 

pois se tirar as aspas simples das chaves do session, o interpretador vai procurar por uma constante chamada 'nome', como não vai achar, vai assumir que é um nome, e se estiver mal configurado o teu php, pode 'dar certo'.

 

o mesmo vale para o POST, não deixe de colocar aspas simples na chave do array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok o nome e o id foram resolvidos, o problema agora é a data, que ja mudei pra date e mesmo pegando

 

$data = date('d/m/Y');

 

ele ta inserindo 0000-00-00

 

Po resolvi galera, axo que assim é até melhor antes ele iria publicar na data q a pessoa publicasse agora eu coloquei um campo: Publicar no data:

<input name="data" type="text" value="<?php echo $data; ?>" size="40">

 

Dai quando for mandar pra listar as colunas eu mando listar apenas as que são <= o dia de hoje. outra coisa.

Mas pra fazer essa verificação no futuro eu mando inserir como date mesmo? ou coloco VARCHAR?

 

Retiro o que eu disse mesmo pegando o campo ali com a data ele nao ta gravando nao acredito que é algo na tabela que ta errada. Como deveria fazer? Pra publicar preenchendo com a data?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dai quando for mandar pra listar as colunas eu mando listar apenas as que são <= o dia de hoje. outra coisa.

Mas pra fazer essa verificação no futuro eu mando inserir como date mesmo? ou coloco VARCHAR?

 

Show!

 

Se voce precisar comparar esta data no futuro, o correto é usar o tipo date e, neste caso, inserir a data no db no formato mysql (aaaa-mm-dd), se nao da erro. Claro, para exibir ao usuario do sistema é interessante mostrar em nosso formato, assim sempre que precisar exibir a data no seu sistema, precisara converter ela para o formato local. To caçando uma funcao aqui que converte estes formatos, posto já.

 

Conversao de formato de data, melhore ai se achar necessario, mude o nome, etc:

/* FORMATO DE DATA */
Function Geral_Data($Data = '', $Entrada = 'M', $Saida = 'L')
{
# Formatos de Entrada/Saida:
# M => MySQL (formato do banco de dados)
# L => Local (formato do Brasil)
# P => PHP (formato usado nas comparacoes e operacoes de data)

// Validacao
$Formatos                              = Array('M', 'L', 'P');
If (empty($Data) || !is_string($Data) || $Entrada == $Saida || !in_array($Entrada, $Formatos) || !in_array($Saida, $Formatos))
  { Return $Data; }

// Conversao
Switch ($Entrada)
      { Case 'L':
             $Data                    = explode('/', $Data);
             Switch ($Saida)
                    { Case 'P':       $RT = $Data[1].'/'.$Data[0].'/'.$Data[2]; Break;
                      Case 'M':       $RT = $Data[2].'-'.$Data[1].'-'.$Data[0]; Break; }
             Break;
        Case 'M':
             $Data                    = explode('-', $Data);
             Switch ($Saida)
                    { Case 'P':       $RT = $Data[1].'/'.$Data[2].'/'.$Data[0]; Break;
                      Case 'L':       $RT = $Data[2].'/'.$Data[1].'/'.$Data[0]; Break; }
             Break;
        Case 'P':
             $Data                    = explode('/', $Data);
             Switch ($Saida)
                    { Case 'L':       $RT = $Data[1].'/'.$Data[0].'/'.$Data[2]; Break;
                      Case 'M':       $RT = $Data[2].'-'.$Data[0].'-'.$Data[1]; Break; }
             Break;
      }

Return $RT;
}

 

[]s!

 

Se nao for precisar comparar a data use varchar e insira no formato local mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

InterPlanet,

 

e como seria? 0000-00-00 é isso?

Se for como posso fazer a pessoa preencher no campo com a data no formato brasileiro, e na hora de enviar pro DB enviar no formato mysql?

Compartilhar este post


Link para o post
Compartilhar em outros sites

InterPlanet,

 

e como seria? 0000-00-00 é isso?

Se for como posso fazer a pessoa preencher no campo com a data no formato brasileiro, e na hora de enviar pro DB enviar no formato mysql?

 

Voce deixa ele preencher em formato local mesmo, na hora de jogar no db, usando a funcao que postei, ce pode converter assim:

 

$data = $_POST['data'];
$data_mysql = Geral_Data($data, 'L', 'M'); // Converte de local para mysql. Use esta variavel no INSERT.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Interplanet

 

Nesse exemplo ai, no caso ele transforma automatico as / em - e já coloca na posição correta do MYSQL? é isso?!

 

To perdido ashudasd, aonde eu devo inserir essa function no publicar.php e qual variavel correta pra mim mandar inserir no db?

 

Aeeeeee cara, deu certo. Muito obrigado mesmo de coração.

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Interplanet

 

Nesse exemplo ai, no caso ele transforma automatico as / em - e já coloca na posição correta do MYSQL? é isso?!

 

To perdido ashudasd, aonde eu devo inserir essa function no publicar.php e qual variavel correta pra mim mandar inserir no db?

 

Isso, essa funcao ja faz a conversao automatica.

Hehe, findei complicando ne? :D Deculpe. Voce pode colar o codigo da funcao exatamente antes de usa-la, exemplo:

 

/*** COLE A FUNCAO AQUI ***/

$data = $_POST['data']; 
$data_mysql = Geral_Data($data, 'L', 'M'); // Converte de local para mysql. Use esta variavel no INSERT.

 

Interplanet

 

Nesse exemplo ai, no caso ele transforma automatico as / em - e já coloca na posição correta do MYSQL? é isso?!

 

To perdido ashudasd, aonde eu devo inserir essa function no publicar.php e qual variavel correta pra mim mandar inserir no db?

 

Aeeeeee cara, deu certo. Muito obrigado mesmo de coração.

 

 

Abraços

 

 

Flw! Abraços e desculpe se compliquei ai!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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