Ir para conteúdo

Arquivado

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

DinhoPHP

Gravar data no BD MySQL

Recommended Posts

Quando capturo a data de um formulário HTML, não consigo gravá-la no meu banco de dados e no email eu recebo no formato: YYYY-MM-DD. Segue o código.

 

$dnas = $_POST['dnasc'];

 

$formcontent = ("Data de Nascimento: $dnas");

 

$recipient = "contato@emil.com.br";

$subject = "Formulário de Contato";
$mailheader = "INFORMAÇÕES CADASTRADAS";

 

$insert = $pdo->prepare("INSERT INTO tabela (dnasc) VALUES (:dnasc)");

 

$insert->bindValue(":dnasc", $dnas);

$insert->execute();

mail ($recipient , $subject, $formcontent , $mailheader) or die("Erro");
echo "<h1>Sua mensagem foi enviada com sucesso!</h1>";

 

E o resultado é: 00000-00-00 no BD e no email é a exibição correta do que foi postado, só que no formato YYYY-MM-DD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo....eu uso esta função...

function gravaData ($rData) {
if ($rData != '') {
return (substr($rData,6,4).'-'.substr($rData,3,2).'-'.substr($rData,0,2));
}else {
return '';
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, muito obrigado mas não entendi como utilizar rs. Pode ser um erro grotesco meu, mas tem como exemplificar melhor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente ele transforma uma 'date' pt-br em date 'en'

<?php


/**
  * Caso data não seja vazia
  *Entra 'DD/MM/YYYY' E RETORNA 'YYYY/MM/DD'
  *@param (string) (date-pt-br)
  *Ex: 		@param (string)  '06/10/1992' 
  *@return: @return (string) '1992-10-06'
***/
function gravaData ($rData) {   
    if ($rData != '') {   
        return (substr($rData,6,4).'-'.substr($rData,3,2).'-'.substr($rData,0,2));   
    }else {
        return '';
    }   
}

echo gravaData('06/10/1992'); //retorna:  '1992-10-06'

 

Mas tem varias abordagens , tem gente que faz com explode, tem gente que utiliza função nativa do MYSQL:

http://www.mysqltutorial.org/mysql-str_to_date/

 

 

Para entender individualmente a função você pode pegar partes menores.

http://php.net/manual/pt_BR/function.substr.php

( Retorna uma parte de uma string)

 

 

 

Leitura extra:

http://stackoverflow.com/questions/805828/using-mysqli-bind-param-with-date-and-time-columns

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel, agradeço pelos links que enviastes e a ajuda do rpmarques, só que descobri que o problema pode está ligado à algo mais, pois quando peço apenas para inserir dois campos no banco de dados MySQL, isto é feito com sucesso, agora quando existem mais, nenhuma linha no banco de dados é afetada, segue o código.

<?
//IDENTIFICAÇÃO
$nivel= $_POST['nivel'];
$nome = $_POST['nome'];
$dnas = $_POST['dnasc']; //$dnas = implode("-", array_reverse(explode("/", $dnas)));
$nac  = $_POST['nacionalidade'];
$nat  = $_POST['naturalidade'];
$sexo = $_POST['sexo'];
$cpf  = $_POST['cpf'];
//CONTATOS
$tel1 = $_POST['tel1'];
$cel1 = $_POST['cel1'];
$cel2 = $_POST['cel2'];
$email = $_POST['email'];
//LOGADOURO
$cep    = $_POST['cep'];
$rua    =  $_POST['rua'];
$bairro = $_POST['bairro'];
$complemento = $_POST['complemento'];
$cidade = $_POST['cidade'];
$estado = $_POST['uf'];
$ibge   = $_POST['ibge'];
//O PROFISSIONAL
$inicioprof  = $_POST['inicioprof'];
//$profissao   = $_POST['profissao']);
if(isset($_POST['profissao'])){
    $recprof = $_POST['profissao'];
    $profissao = implode(", ", $recprof);

}else{

}
//$habprof     = $_POST['habilidades_profissional']);
if(isset($_POST['habilidades_profissional'])){
    $rechabprof = $_POST['habilidades_profissional'];
    $habprof = implode(", ", $rechabprof);

}else{
}

$descrprof   = $_POST['descr_profissional'];

//INSERINDO DADOS NO BANCO DE DADOS
$insert = $pdo->prepare("INSERT INTO profissionais (nivel, nome, dnasc, nacionalidade, naturalidade, cpf, tel1, cel1, cel2, email, sexo, cep, rua, bairro, complemento, cidade, estado, inicioprof, profissao, habilidades_profissional, descr_profissional) VALUES (:nivel, :nome, :dnasc, :nacionalidade, :naturalidade, :cpf, :tel1, :cel1, :cel2, :email, :sexo, :cep, :rua, :bairro, :complemento, :cidade, :estado, :inicioprof, :profissao, :habilidades_profissional, :descr_profissional)");

$insert->bindValue(":nivel", $nivel);
$insert->bindValue(":nome", $nome);
$insert->bindValue(":dnasc", $dnas);
$insert->bindValue(":nacionalidade", $nac);
$insert->bindValue(":naturalidade", $nat);
$insert->bindValue(":cpf", $cpf);
$insert->bindValue(":tel1", $tel1);
$insert->bindValue(":cel1", $cel1);
$insert->bindValue(":cel2", $cel2);
$insert->bindValue(":email", $email);
$insert->bindValue(":sexo", $sexo);
$insert->bindValue(":cep", $cep);
$insert->bindValue(":rua", $rua);
$insert->bindValue(":bairro", $bairro);
$insert->bindValue(":complemento", $complemento);
$insert->bindValue(":cidade", $cidade);
$insert->bindValue(":estado", $estado);
//$insert->bindValue(":ibge", $ibge);
$insert->bindValue(":inicioprof", $inicioprof);
$insert->bindValue(":profissao", $profissao);
$insert->bindValue(":habilidades_profissional", $habprof);
$insert->bindValue(":descr_profissional", $descrprof);

$insert->execute();

/*CONTEÚDO À SER ENVIADO

$formcontent = utf8_decode("-----------------------"."\n"."Identificação"."\n"."Nível: $nivel"."\n"."Nome: $nome"."\n"."Data de Nascimento: $dnas"."\n"."Nacionalidade: $nac"."\n"."Naturalidade: $nat"."\n"."Sexo: $sexo"."\n"."\n"."Contatos"."\n"."Telefone: $tel1"."\n"."Celular: $cel1"."\n"."Celular: $cel2"."\n"."Email: $email"."\n"."\n"."Logadouro"."\n"."CEP: $cep"."\n"."Rua: $rua"."\n"."Bairro: $bairro"."\n"."Complemento: $complemento"."\n"."Cidade: $cidade"."\n"."Estado: $estado"."\n"."IBGE:$ibge"."\n"."O Profissional"."\n"."Iniciou em: $inicioprof"."\n"."Profissão: $profissao"."\n"."Habilidades: $habprof"."\n"."Descrição profissional: $descrprof"."\n"."--------------------------");

$recipient = "email@equipenovainfo.com.br";
$subject = "Formulário de Contato";
$from = "*************";
$mailheader = "INFORMAÇÕES CADASTRADAS";

mail ($recipient , $subject, $formcontent , $mailheader) or die("Erro");
echo "<h1>Sua mensagem foi enviada com sucesso!</h1>";

*/?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lendo com calma.

, não consigo gravá-la 

Esse problema realmente existe?

Ou ele está gravando 'correto' só que exibindo errado?

 

Pois novamente...

o 'default/padrão' é ingles.

 

 

Ou seja você precisa tratar a entrada e saida.

 

 

 

Testa ai em um script individual.

SELECT 
	DATE_FORMAT(NOW(),'%d/%m/%Y') AS 'Hoje PT_BR'
FROM DUAL;
SELECT 
   NOW()
FROM DUAL;

* Dual é uma tabela fantasma, ela existe em todos os bancos.

** Referencia: https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

 

 

 

Agora caso esteja armazenado errado no banco precisa rever seu Insert.

 

da um var_dump($_POST);

e veja se esta passando os campos corretos,habilita os erros como descrito no forum.

 

E da uma olhada nessa função:

http://php.net/manual/pt_BR/pdo.errorinfo.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, recebendo está.

 

array(23) { ["nome"]=> string(6) "Tamara" ["dnasc"]=> string(10) "1991-11-11" ["nacionalidade"]=> string(10) "Brasileiro" ["naturalidade"]=> string(12) "Nova Iguaçu" ["cpf"]=> string(14) "111.111.111-11" ["tel1"]=> string(10) "2133333335" ["cel1"]=> string(13) "21 98989-8999" ["cel2"]=> string(13) "21 98888-8888" ["email"]=> string(21) "samarabest@nil.com.br" ["sexo"]=> string(8) "Feminino" ["cep"]=> string(8) "26052710" ["rua"]=> string(10) "Rua Elvira" ["bairro"]=> string(12) "Vila de Cava" ["complemento"]=> string(10) "Campo Novo" ["cidade"]=> string(12) "Nova Iguaçu" ["uf"]=> string(2) "RJ" ["ibge"]=> string(7) "3303500" ["nivel"]=> string(1) "2" ["inicioprof"]=> string(7) "05/1999" ["profissao"]=> array(1) { [0]=> string(8) "manicure" } ["habilidades_profissional"]=> array(3) { [0]=> string(9) "decoracao" [1]=> string(7) "acrigel" [2]=> string(9) "porcelana" } ["descr_profissional"]=> string(16) "#bondedaslatifas" ["enviar"]=> string(6) "Enviar" }

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.