Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
eu criei um arquivo php que armazena dados no banco de dados só que dando vo armazena as datas eles ficam ao contrario eu queria fazer elas ficarem no jeito certo.
Meu codigo:
<?php
//função para validar os dados
function validarDados(&$msg, $NomeRemetente, $EndRemetente, $NomeDestinatario, $EndDestinatario, $Mensagem){
$resultado = true; $msg = $msg . "Nome do remetente invalido.<BR>";
$resultado = false;}
if (empty($EndRemetente)){
$msg = $msg . "Endereço do remetente invalido.<BR>";
$resultado = false; } $msg = $msg . "Nome do destinatario invalido.<BR>";
$resultado = false;
}
if (empty($EndDestinatario)){
$msg = $msg . "Endereço do destinatario invalido.<BR>";
$resultado = false;
}
if (empty($Mensagem)){
$msg = $msg . "Menssagem invalida.<BR>";
$resultado = false;
}
return $resultado;
}
$NomeRemetente = $_POST["NRemetente"];
$EndRemetente = $_POST["ERemetente"];
$NomeDestinatario = $_POST["NDestinatario"];
$EndDestinatario = $_POST["EDestinatario"];
$DataEntrega = $_POST["data"];
$TipoFlor = $_POST["flor"];
$Mensagem = $_POST["mensagem"];
//pegar a data do sistema
$DataPedido = date("Y-m-d ");
//validar os dados
$msg = "";
if (validarDados($msg, $NomeRemetente, $EndRemetente, $NomeDestinatario, $EndDestinatario, $Mensagem) ) {
//função para conectar ao banco
$conexao = mysql_connect("localhost", "root", "") or die ("Erro ao conctar com o banco de dados." . mysql_error() );
//função para escolher o banco de dados
mysql_select_db("bdfloricultura") or die ("Erro ao selecionar o banco de dados." . mysql_error() ) ;
//Inserir os dados ao banco de bados
$sql = "INSERT INTO pedidos (nomeRemetente, enderRemetente, nomeDestinatario, enderDestinatario, mensagem, idFlor, dtPedido, dtEntrega)"
. "VALUES ('$NomeRemetente', '$EndRemetente', '$NomeDestinatario', '$EndDestinatario', '$Mensagem', $TipoFlor, '$DataPedido', '$DataEntrega') ";
//execurar no banco de dados
mysql_query($sql) or die ( mysql_errno() ) ;
echo "DADOS INSERIDOS COM SUCESSO.";
}else{
//ERRO
echo "ERRO. $msg";
}
?>O certo é ao contrário mesmo.
Você precisa criar uma "função" para tratar a data que inverta de
30/04/2014 para 2014-04-30 para salvar no banco
e outra função para transformar
2014-04-30 em 30/04/2014 para mostrar para o usuário
Se você alterar a forma de dados no mysql de date para varchar, o mysql vai gravar no nosso padrão 30/04/2014 mas vai entender os dados como uma frase e não uma data.
amigo deu certo não, eu substitui : $DataPedido = date("Y-m-d ");
pela parte que vc falo e deu erro
eu so presizo salvar no banco na ordem certa, não a nessecidade de mostrar ao usuario
Se é isso que você quer...
altere no banco de dados o tipo de dados para o campo desejado de "date" para "char(10)", use então
$DataPedido = date("d/m/Y")
Lembrando que como será uma string no banco, você não vai poder comparar datas, na hora de realizar consultas, pode lhe dar dor de cabeça depois
No banco deixa o campo como date, assim, poderá usar as funções nativas do mysql para manipular esses dados. Use a seguinte função para alterar a ordem:
function escreve_data($data) {
$data = explode('/', $data);
$ano = $data[2];
$mes = $data[1];
$dia = $data[0];
return $ano . '-' . $mes . '-' . $dia;
}
// Maneira de usar
$DataPedido = escreve_data($_POST["data"]);Salve,
Para Salvar da maneira correta:
Vem: dd/mm/YYYY
$data = implode("-", array_reverse(explode("/", $_POST['data'])));
Sai: YYYY-mm-dd
Vem YYYY-mm-dd
$data = implode("/", array_reverse(explode("-", $_POST['data'])));
Sai dd/mm/YYYY
,
meu chara eu fiz do jeito que vc falo mas não deu certo não:
<?php
//função para validar os dados
function validarDados(&$msg, $NomeRemetente, $EndRemetente, $NomeDestinatario, $EndDestinatario, $Mensagem){
$resultado = true; $msg = $msg . "Nome do remetente invalido.<BR>";
$resultado = false;}
if (empty($EndRemetente)){
$msg = $msg . "Endereço do remetente invalido.<BR>";
$resultado = false; } $msg = $msg . "Nome do destinatario invalido.<BR>";
$resultado = false;
}
if (empty($EndDestinatario)){
$msg = $msg . "Endereço do destinatario invalido.<BR>";
$resultado = false;
}
if (empty($Mensagem)){
$msg = $msg . "Menssagem invalida.<BR>";
$resultado = false;
}
return $resultado;
}
function escreve_data($data) {
$data = explode('/', $data);
$ano = $data[2];
$mes = $data[1];
$dia = $data[0];
return $ano . '-' . $mes . '-' . $dia;
}
$NomeRemetente = $_POST["NRemetente"];
$EndRemetente = $_POST["ERemetente"];
$NomeDestinatario = $_POST["NDestinatario"];
$EndDestinatario = $_POST["EDestinatario"];
$DataEntrega = $_POST["data"];
$TipoFlor = $_POST["flor"];
$Mensagem = $_POST["mensagem"];
//pegar a data do sistema
$DataPedido =escreve_data($_POST["data"]);
//validar os dados
$msg = "";
if (validarDados($msg, $NomeRemetente, $EndRemetente, $NomeDestinatario, $EndDestinatario, $Mensagem) ) {
//função para conectar ao banco
$conexao = mysql_connect("localhost", "root", "") or die ("Erro ao conctar com o banco de dados." . mysql_error() );
//função para escolher o banco de dados
mysql_select_db("bdfloricultura") or die ("Erro ao selecionar o banco de dados." . mysql_error() ) ;
//Inserir os dados ao banco de bados
$sql = "INSERT INTO pedidos (nomeRemetente, enderRemetente, nomeDestinatario, enderDestinatario, mensagem, idFlor, dtPedido, dtEntrega)"
. "VALUES ('$NomeRemetente', '$EndRemetente', '$NomeDestinatario', '$EndDestinatario', '$Mensagem', $TipoFlor, '$DataPedido', '$DataEntrega') ";
//execurar no banco de dados
mysql_query($sql) or die ( mysql_errno() ) ;
echo "DADOS INSERIDOS COM SUCESSO.";
}else{
//ERRO
echo "ERRO. $msg";
}
?>
Pinguim CPT quando eu fiz do seu jeito a data apareceu zerada
O que não deu certo? O que apareceu?
(!) Notice: Undefined offset: 2 em C: \ wamp \ www \ novo \ banco.php na linha 29 Chamada Stack # Tempo Memória Função Localização 1 0,0010 153344 {Main} () .. \ Banco.php : 0 2 0,0010 154072 escreve_data () .. \ Banco.php : 47
(!) Notice: Undefined offset: 1 em C: \ wamp \ www \ novo \ banco.php na linha 30 Chamada Stack # Tempo Memória Função Localização 1 0,0010 153344 {Main} () .. \ Banco.php : 0 2 0,0010 154072 escreve_data () .. \ Banco.php : 47
DADOS COM SUCESSO INSERIDOS.
Imprima esta variável: $_POST["data"]
Atente-se ao name no input, se realmente é data, testei aqui a função e está funcionando perfeitamente.
tem como vc posta o codigo que vc testo aki ?
talves digitei alguma coisa errado
Somente simulei outra data:
function escreve_data($data) {
$data = explode('/', $data);
$ano = $data[2];
$mes = $data[1];
$dia = $data[0];
return $ano . '-' . $mes . '-' . $dia;
}
// troquei o post que recebe os dados do form por uma data no formato que suponho estar recebendo
$DataPedido =escreve_data("30/04/2014");
// resultado = 2014-04-30aki a data continuou ao contrario do mesmo jeito
Qual formato está recebendo a data?
Para gravar no banco você precisa do padrão americano yyyy-mm-dd. Acho que você gostaria do padrão brasileiro dd/mm/yyyy. Para resgatar o valor do banco e exibir no padrão brasileiro, use da seguinte forma:
$data = date("d/m/Y", strtotime($rs['data']));