WebSite X5Help Center

 
Romualdo R.
Romualdo R.
User

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

Auteur : Romualdo R.
Visité 867, Followers 1, Partagé 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.

Posté le
6 RéPONSES - 3 UTILE
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

Lire plus
Posté le de U. Caetano
Romualdo R.
Romualdo R.
User
Auteur

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".

Lire plus
Posté le 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.

Lire plus
Posté le de U. Caetano
Romualdo R.
Romualdo R.
User
Auteur

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.

Lire plus
Posté le de Romualdo R.
Romualdo R.
Romualdo R.
User
Auteur

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.

Lire plus
Posté le 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

Lire plus
Posté le de U. Caetano