Ir para conteúdo

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.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
×

Informação importante

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