WebSite X5Help Center

 
Romualdo R.
Romualdo R.
User

Converter e gravar data dia/mm/ano no MySql  pt

Autor: Romualdo R.
Visitado 865, Seguidores 1, Compartilhado 0  

Olá. Estou com um problema, preciso gravar informações a partir de um formulário de cadastro, o campo de datas dia/mês/ano ex.: "22/12/2015", não é aceito no banco de dados MySql, que trabalha com ano-mês-dia.

Minha pergunta é como posso inverter a informação de data no código para gravar no banco de dados???

segue anexo o arquivo de recebimento de dados do formulário e gravação no banco de dados.

Publicado em
6 RESPOSTAS - 3 ÚTEIS
U. Caetano
U. Caetano
Moderator

segue uma função que eu utilizo para gravar e outra para exibir os dados,

    function GravarData ($Data){
            if ($Data == ""){
                return  "";
            }            
            $Dados = explode("/", $Data);
            $Data_Mysql = "{$Dados[2]}-{$Dados[1]}-{$Dados[0]}";
            return $Data_Mysql;
        }
        
        function ExibirData ($Data){
            if ($Data == "" OR $Data == "0000-00-00"){
                return "";            
            }
            $Dados = explode("-", $Data);
            $Data_Exibe = "{$Dados[2]}/{$Dados[1]}/{$Dados[0]}";
            return $Data_Exibe;
        }

esta linha faz exibir os dados

<?php echo ExibirData($Data); ?> trocar ExibeData para GravarData quando for gravar  no DB

Ler mais
Publicado em de U. Caetano
Romualdo R.
Romualdo R.
User
Autor

Desculpe incomodar mais, é que agora apresenta o erro: "Call to undefined function GravarData()..."

Devo estar fazendo algo errado, vou postar apenas o trecho que usei a função:

?php
if(substr(basename($_SERVER['PHP_SELF']), 0, 11) == "imEmailForm") {
    include '../res/x5engine.php';
    $form = new ImForm();Form();...

...$form->setField('Dia', $_POST['imObjectForm_1_20'], '', false);
    $form->setField('Mês', $_POST['imObjectForm_1_21'], '', false);
    $form->setField('Ano', $_POST['imObjectForm_1_22'], '', false);
    $hab_validade=GravarData($_POST['val_hab']);
    $form->setField('Validade:', $hab_validade, 'hab_validade', false);

Inseri a função no arquivo "x5engine.php".

Ler mais
Publicado em de Romualdo R.
U. Caetano
U. Caetano
Moderator

Faça um arquivo chamado function.php e coloque as funções que lhe mandei, depois faça assim no seu arquivo.

include "function.php";

é para resolver.

Ler mais
Publicado em de U. Caetano
Romualdo R.
Romualdo R.
User
Autor

obrigado! Não apresenta mais o erro da função, mas ainda não grava no banco de dados.

Deveria ter uma opção no proprio WebsiteX5 para conversão de data na hora de gravar no MySql, ou pelo menos a opção de um formato de data compatível com o banco de dados. fica a sugestão para um próximo update.

Ler mais
Publicado em de Romualdo R.
Romualdo R.
Romualdo R.
User
Autor

Estou pensando em mudar o código para apresentar no formulário ano-mês-dia, não é o que o meu cliente quer mas não posso mais atrasar a entrega do site.

Ler mais
Publicado em de Romualdo R.
U. Caetano
U. Caetano
Moderator

Romualdo, compreendi, pode ser alguma lógica na programação, depois de uma olhada com atenção pois esta rotina eu uso em todos meus projetos e funciona normalmente sem nenhum erro.

Eu utilizo o Website x5 para sites institucionais, quando o cliente quer um site admnistravel ai eu faço tudo em PHP, CSS com bootstrap que ai fica mais seguro e fácil manutenção.

att,

Uilian

Ler mais
Publicado em de U. Caetano