Ir para conteúdo

POWERED BY:

Arquivado

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

robson cavalcante

Pessoal... como trabalho data PHP e MYSQL?

Recommended Posts

Caros Amigos,Estou tentando inserir em um campo date no MySql, através de um formulário em PHP a data no padrão dd/mm/aaaa. Sendo que, o campo date grava as informações no padrão aaaa/mm/dd, distorcendo o que foi digitado.No meu formulário coloco todas as informações mais na hora em que mando ecrever dá um pau e volta na SQL, onde defini erro para escrever no banco.Gostaria de saber como posso fazer para que seja gravado da forma que é digitada.Sendo depois exibida em uma pagina em PHP da mesma forma dd/mm/aaaa.Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se voce criou um campo tipo data no mysql os dados vão ser gavados no formato aaa-mm-dd.... o que você pode fazer é usar uma função para pegar o digitado mudar para o padrão mysql e depois quando precisar fazer uma consulta utilize a função para fazer o inverso ...segue a funcao....NÃO FOI EU QUE ESCREVI APENAS ESTOU POSTANDO UM TRABALHO DE UMA COLEGA !!! Para simplificar tudo isso é que existe no MySQL a função DATE_FORMAT (pode ser usada como TIME_FORMAT)Sintaxe:DATE_FORMAT(data, formato) ou TIME_FORMAT(hora, formato)Em formato podemos ter:%a: dia da semana abreviado.%b: mês abreviado.%D: mês com sufixo ordinal.%d: dia do mês%H ou %I: formato 24 horas com dois dígitos.%h ou %I: hora formato 12 horas com dois dígitos.%i: minutos.%j: dia do ano.%k: formato 24 horas com um dígito.%l: formato 12 horas com um dígito.%M: nome do mês.%m: número do mês.%p: AM ou PM.%r: hora incluindo AM ou PM.%S: segundos com dois dígitos.%s: segundos com um dígito.%T: hora.%U: semana do ano.%W: nome do dia da semana.%w: dia da semana, onde domingo é 0.%Y: ano de quatro dígitos.%y: ano de dois dígitos.%%: caractere de porcentagem (%)Vamos supor que eu tenha uma tabela chamada cadastro com os campos codigo, nome, email, datacad. Partindo daí, vamos supor que eu necessite de uma lista ordenada por data com os nomes com linkados para o e-mail e antes dos nomes tem de ter as datas em formato brasileiro com horário. Veja:<?php// Seleciono os dados da tabela. Veja o ponto chave: apelido para o resultado da função$sql = "SELECT nome, email, DATE_FORMAT(data, '%d/%m/%Y - %H:%i') as datanova from cadastro order by data";$resultado = mysql_query($sql, $conexao)or die("Não foi possível selecionar usuários.");while ($row=mysql_fetch_array($resultado) {// Note que o campo colocado não é o campo data ou algo parecido com echo(DATE_FORMAT(data, '%d/%m/%Y - %H:%i') ). Eu coloco o apelido datanova.?><p><?php echo $row["datanova"]; ?><a href="mailto:<?php echo$row["email"]; ?>"><?php echo$row[nome]; ?></a></p><?php}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo wlemos...

 

Acho que não entendeu, seguinte, estou tendo problemas para a inclusão dos dados e não selecionar e escrever entendeu?

 

Vamos lá (Meu problema.. rs..):

 

Seguinte, eu tenho um fomrulário em HTML simples como isto: utilizo Java Script para a conferencia dos Campos obrigatórios...

<script language="JavaScript">function validaForm(){           d = document.cadastro_usuarios;           //validar nome           if (d.apelido.value == ""){                     alert("O campo " + d.apelido.name + " deve ser preenchido!");                     d.nome.focus();                     return false;           }           //validar user         if (d.senha.value == ""){                   alert("O campo " + d.senha.name + " deve ser preenchido!");                   d.user.focus();                   return false;         }         //validar senha         if (d.senha2.value == ""){                   alert("O campo " + d.senha2.name + " deve ser preenchido!");                   d.senha.focus();                   return false;         }         //validar nome completo         if (d.nome.value == ""){                   alert("O campo " + d.nome.name + " deve ser preenchido!");                   d.senha.focus();                   return false;         }         //validar email         if (d.email.value == ""){                   alert("O campo " + d.email.name + " deve ser preenchido!");                   d.email.focus();                   return false;         }         //validar email(verificao de endereco eletrônico)         parte1 = d.email.value.indexOf("@");         parte2 = d.email.value.indexOf(".");         parte3 = d.email.value.length;         if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9)) {                   alert ("O campo " + d.email.name + " deve ser conter um endereco eletronico!");                   d.email.focus();                   return false;         }         //validar data de nascimento         erro=0;         hoje = new Date();         anoAtual = hoje.getFullYear();         barras = d.datanasce.value.split("/");         if (barras.length == 3){                   dia = barras[0];                   mes = barras[1];                   ano = barras[2];                   resultado = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4) && (ano <= anoAtual && ano >= 1900));                   if (!resultado) {                             alert("Formato de data invalido!");                             d.datanasce.focus();                             return false;                   }         } else {                   alert("Formato de data invalido!");                   d.datanasce.focus();                   return false;         }         //validar cidade         if (d.cidade.value == ""){                   alert("O campo " + d.cidade.name + " deve ser preenchido!");                   d.cidade.focus();                   return false;         }         //validar estado         if (d.estado.value == ""){                   alert("O campo " + d.estado.name + " deve ser preenchido!");                   d.estado.focus();                   return false;         }         //validar curso         if (d.curso.value == ""){                   alert("O campo " + d.curso.name + " deve ser preenchido!");                   d.curso.focus();                   return false;         } }</script>                        <form method="post" onSubmit="return validaForm()" name="cadastro_usuarios" action="cadastro.php">                          <table align="center">                            <tr valign="baseline">                               <td nowrap align="right">Apelido:</td>                              <td><input type="text" name="apelido" value="" size="32"></td>                            </tr>                            <tr valign="baseline">                               <td nowrap align="right">Senha:</td>                              <td><input type="password" name="senha" value="" size="32"></td>                            </tr>                            <tr valign="baseline">                               <td nowrap align="right">Repita a senha:</td>                              <td><input name="senha2" type="password" id="senha2" value="" size="32"></td>                            </tr>                            <tr valign="baseline">                               <td nowrap align="right">Nome completo:</td>                              <td><input type="text" name="nome" value="" size="32"></td>                            </tr>                            <tr valign="baseline">                               <td nowrap align="right">Email:</td>                              <td><input type="text" name="email" value="" size="32"></td>                            </tr>                            <tr valign="baseline">                               <td nowrap align="right">Data de nascimento:</td>                              <td><input name="datanasce" type="text" value="" size="10" maxlength="10"></td>                            </tr>                            <tr valign="baseline">                               <td nowrap align="right">Cidade:</td>                              <td><input type="text" name="cidade" value="" size="32"></td>                            </tr>                            <tr valign="baseline">                               <td nowrap align="right">Estado:</td>                              <td> <select name="estado">                                  <option selected>Escolha o Estado</option>                                  <OPTION VALUE="AC">AC</OPTION>                                  <OPTION VALUE="AL">AL</OPTION>                                  <OPTION VALUE="AM">AM</OPTION>                                  <OPTION VALUE="AP">AP</OPTION>                                  <OPTION VALUE="BA">BA</OPTION>                                  <OPTION VALUE="CE">CE</OPTION>                                  <OPTION VALUE="DF">DF</OPTION>                                  <OPTION VALUE="ES">ES</OPTION>                                  <OPTION VALUE="GO">GO</OPTION>                                  <OPTION VALUE="MA">MA</OPTION>                                  <OPTION VALUE="MT">MT</OPTION>                                  <OPTION VALUE="MS">MS</OPTION>                                  <OPTION VALUE="MG">MG</OPTION>                                  <OPTION VALUE="PA">PA</OPTION>                                  <OPTION VALUE="PB">PB</OPTION>                                  <OPTION VALUE="PR">PR</OPTION>                                  <OPTION VALUE="PE">PE</OPTION>                                  <OPTION VALUE="PI">PI</OPTION>                                  <OPTION VALUE="RJ">RJ</OPTION>                                  <OPTION VALUE="RN">RN</OPTION>                                  <OPTION VALUE="RS">RS</OPTION>                                  <OPTION VALUE="RO">RO</OPTION>                                  <OPTION VALUE="RR">RR</OPTION>                                  <OPTION VALUE="SC">SC</OPTION>                                  <OPTION VALUE="SP">SP</OPTION>                                  <OPTION VALUE="SE">SE</OPTION>                                  <OPTION VALUE="TO">TO</OPTION>                                </select> </td>                            </tr>                            <tr valign="baseline">                               <td nowrap align="right">Curso:</td>                              <td><input type="text" name="curso" value="" size="32"></td>                            </tr>                            <tr valign="baseline">                               <td nowrap align="right"> </td>                              <td><input type="submit" value="Inserir Cadastro"></td>                            </tr>                          </table>                          <input type="hidden" name="id_usuario" value="">                          <input type="hidden" name="MM_insert" value="cadastro_usuarios">                        </form></td>                    </tr>                  </table>

Até aqui beleza.. .o fomulário chama um arquivo PHP que se chama cadastro.php

 

<?php   	    	 $data = date("Y-m-d");   	 $datanasce = substr($data,8,2) . "/" .substr($data,5,2) . "/" . substr($data,0,4);       	    	 $sql = "INSERT INTO usuarios(apelido, senha, senha2, nome, email, datanasce, cidade, estado, curso)       	 VALUES ('$apelido', '$senha', '$senha2', '$nome', '$email', '$datanasce', '$cidade', '$estado', '$curso')";   	 $conexao = mysql_connect("localhost","meu_login","minha_senha")          or die ("Configuração de Banco de dados errada.");           	 $db = mysql_select_db("meu_banco")      or die ("Banco de dados inexistente.");             	    	 $sql = mysql_query($sql)      or die ("Houve um erro na gravação dos dados, por favor, clique em voltar e verifique os campos obrigatórios.");         	 echo "Cadastro efetuado com sucesso!";          ?>
O meu problema é que o campo data não escreve no Banco de dados e pra completar a SQL retorna que houve um erro ao gravar os dados no banco de dados.. por favor.. alguém pode ajudar? é mesmo problema no campo data??

 

Abraços.. aguardo contatos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Robson não sei se entendi direito mas vamos la...

 

O mysql por padrão, no campo do tipo DATE grava data AAAA-MM-DD, ou seja

 

se o seu campo no bd fo DATE retira o tratamento

 

$datanasce = date("Y-m-d");

 

Grava assim...

 

 

Na hora de visualizar a data, lemabra no banco a data ta AAAA-MM-DD, então vamos transformar a data vinda do banco para ddd-mm-aaaa, para isso utilize

array_reverse... veja

 

 

$data_certa = implode("-", array_reverse(explode("-", $data_banco)));

 

Qualquer duvida posta

 

Adailton

<{POST_SNAPBACK}>

Cara seguinte... eu arrumo e deixo $datanasce = date("Y-m-d"); e tiro a linha debaixo com o tratamento?

 

E na hora de mostrar? eu uso $data_certa = implode("-", array_reverse(explode("-", $data_banco))); ?

 

Não entendi a hora de mostrar... como assim? abraços.

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.