Ir para conteúdo

POWERED BY:

Arquivado

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

CamilaDePaula

Como fazer um insert no campo date em pt_BR com PHP?

Recommended Posts

Olá!

Preciso de uma ajuda, por favor... tenho um campo do tipo Date no banco, mas preciso que no formulário o usuário digite no formato que usamos no Brasil.

Para converter, estou fazendo o insert, com o auxilio do seguinte código:

 

$data_operacao2 = implode("-", array_reverse(explode("/", $data_operacao2)));

 

Só que ele está bagunçando um pouco a data na hora de inserir no banco.

Por exemplo:

1 - se digito  28/02/2017 (yyyy) ele grava no banco  0000-00-00

2-  se digito 28/02/17 (yy) ele grava no banco  2028-02-17 (fica meio assim yydd/mm/yy)

 

Como posso corrigir isso?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá um echo na variável $data_operacao2 antes de inserir no BD para ver o valor real da variável após a alteração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu utilizo esta configuração sem problema, seta o campo como date e defini 0000-00-00 , não bagunça e fica certinho.

Porém faça como nosso amigo falou, da um echo e verifique.

Compartilhar este post


Link para o post
Compartilhar em outros sites
$dataCrua           = "2017-02-21";
$dataFormatada = date('d/m/Y', strtotime($dataCrua));
echo $dataFormatada;

 

Ta ai um exemplo de como tratar data vinda em outros formatos.

Lembrando que no BD em campo DATE você precisa salvar no formato "universal" YYYY-MM-DD

Sempre salve em YYYY-MM-DD e na impressão você faz a tratativa como te mostrei acima

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 21/02/2017 at 12:47, Guilherme Luiz disse:

$dataCrua           = "2017-02-21";
$dataFormatada = date('d/m/Y', strtotime($dataCrua));
echo $dataFormatada;

 

Ta ai um exemplo de como tratar data vinda em outros formatos.

Lembrando que no BD em campo DATE você precisa salvar no formato "universal" YYYY-MM-DD

Sempre salve em YYYY-MM-DD e na impressão você faz a tratativa como te mostrei acima

 

 

Obrigada pela resposta, mas não entendi muito bem o que voce postou.

Eu sei que o formato do campo Date é  YYYY-MM-DD, e é exatamente este o problema. Preciso tratar o campos para o envio, antes de tratar para a impressão.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 21/02/2017 at 11:01, gersonab disse:

Eu utilizo esta configuração sem problema, seta o campo como date e defini 0000-00-00 , não bagunça e fica certinho.

Porém faça como nosso amigo falou, da um echo e verifique.

 

O campos já está setado como date, mas não entendi a parte que você disse "defini 0000-00-00". Onde eu defino assim?

Em 21/02/2017 at 10:30, ESerra disse:

Dá um echo na variável $data_operacao2 antes de inserir no BD para ver o valor real da variável após a alteração.

 

Dei um echo após a alteração, e apareceu errado como no exemplo que citei. O que devo fazer? 

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, CamilaDePaula disse:

 

O campos já está setado como date, mas não entendi a parte que você disse "defini 0000-00-00". Onde eu defino assim?

 

Dei um echo após a alteração, e apareceu errado como no exemplo que citei. O que devo fazer? 

$data_operacao2 = '21/10/1984';
$data_operacao2 = implode("-", array_reverse(explode("/", $data_operacao2)));
echo $data_operacao2; //Resultado 1984-10-21

Logo o problema está no formato da sua data e não na conversão.

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 minutos atrás, ESerra disse:

$data_operacao2 = '21/10/1984';
$data_operacao2 = implode("-", array_reverse(explode("/", $data_operacao2)));
echo $data_operacao2; //Resultado 1984-10-21

Logo o problema está no formato da sua data e não na conversão.

 

Como posso arrumar?

Compartilhar este post


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

 

Como posso arrumar?

 

 

Informe a data no formato correto... a data de entrada deverá ser dd/mm/aaaa. Se for outro formato a conversão não vai funcionar como esperado.

Compartilhar este post


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

 

 

Informe a data no formato correto... a data de entrada deverá ser dd/mm/aaaa. Se for outro formato a conversão não vai funcionar como esperado.

 

Mas estou informando a data no formato correto. Como eu disse, acontece seguinte:

 

1 - se digito  28/02/2017 (yyyy) ele grava no banco  0000-00-00 (assim com zero mesmo, sem a data)

2-  se digito 28/02/17 (yy, no caso o ano só com duas casas) ele grava no banco  2028-02-17 (fica meio assim yydd/mm/yy)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos tenta um novo aproach, pensar:

 

Me responde, porque motivo o BD está gravando 0000-00-00?

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, ESerra disse:

Vamos tenta um novo aproach, pensar:

 

Me responde, porque motivo o BD está gravando 0000-00-00?

 

Talvez porque esteja pegando um formato inválido, ou talvez seja algum erro no INSERT, mas não sei...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é o primeiro problema "talvez"... talvez é a mãe de todos os erros, você tem que entender o que está fazendo para só assim corrigir o problema.

 

Está sendo inserido 0000-00-00 porque o formato da data está fora do padrão que o campo exige.

 

Então, ANTES do insert, dê um echo na variável e veja o que de fato está sendo passado para o insert, esse será o ponto de partida.

Compartilhar este post


Link para o post
Compartilhar em outros sites
26 minutos atrás, ESerra disse:

Esse é o primeiro problema "talvez"... talvez é a mãe de todos os erros, você tem que entender o que está fazendo para só assim corrigir o problema.

 

Está sendo inserido 0000-00-00 porque o formato da data está fora do padrão que o campo exige.

 

Então, ANTES do insert, dê um echo na variável e veja o que de fato está sendo passado para o insert, esse será o ponto de partida.

 

 

Fiz assim: 

 

$data_operacao2 = '02/03/2017';
$data_operacao2 = implode("-", array_reverse(explode("/", $data_operacao2)));
echo $data_operacao2; 

 

 

E retornou assim:  2017-03-02 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 minutos atrás, ESerra disse:

Posta o script inteiro.

 

Já achei o que era... era um erro BESTA no input, que estava como "text", mudei para "date" e funcionou. Obrigada à todos! =)

 

 

Mas tenho outra dúvida no mesmo assunto:

 

Tenho uma página de edição que retorna os dados gravados de acordo com o ID,  que agora está retornando a data no formato em que ela foi gravada " 2017-03-02 ".

Como faço para mostrar na tela no formato pt_br e fazer o update no formato do banco novamente? 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
16 minutos atrás, CamilaDePaula disse:

 

Já achei o que era... era um erro BESTA no input, que estava como "text", mudei para "date" e funcionou. Obrigada à todos! =)

Funcionou "na sorte", pois o simples fato de usar um input text não justifica o erro em si.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

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