guigosnet 0 Denunciar post Postado Julho 12, 2009 galera to com um probleminha no meu cadastro em php, mysql . gostaria de deixa uma mascara de dd/mm/aaaa no meu textfield, e gravar no mysql como faço essa mascara? Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Rodrigo Cardoso 2 Denunciar post Postado Julho 12, 2009 Mascara em php : if(preg_match('/([0-9]{2})-([0-9]{2})-([0-9]{4})/',$data)) echo 'Formato de data Valido'; else echo 'Formato de data Invalido'; Na hora de inserir no mysql insira no formato yyyy/mm/dd $var = preg_replace('/([0-9]{2})-([0-9]{2})-([0-9]{4})/','\\3-\\2-\\1',$data); Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Julho 12, 2009 Quando você fala em máscara, você quer dizer enquanto vai sendo digitado vai aparecendo a formatação? Se for isto é com Javascript que se faz. Posso mover seu tópico para lá. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Red FeniX 4 Denunciar post Postado Julho 12, 2009 Fernando Robrigo Cardoso, Só uma observação: Quando inserir no BD, é melhor que o campo da tabela esteja em DATE e a data a ser gravada em formatdo yyyy-mm-dd. Isso ajuda a organizar um ORDER BY numa consulta SQL, pois se houver 01/01/2010 e 31/12/2009, o ORDER BY DESC vai colocar a 31/12/2009 na frente da 01/01/2010, enquanto que em formato yyyy-mm-dd, o 2010-01-01 vai vir na frente de 2009-12-31. Falo Compartilhar este post Link para o post Compartilhar em outros sites
guigosnet 0 Denunciar post Postado Julho 12, 2009 Poisé pessoal estou precisando , quando digite a data no formulario, e depois a função se vira pra gravar o formato certo, entende? Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Julho 12, 2009 Então pode ser esta função aqui. function FormataData ( $data ){ // passe a data no formato DD/MM/AAAA e retorna AAAA-MM-DD $x = implode('-', array_reverse(explode('/',$data))); return $x; } Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Rodrigo Cardoso 2 Denunciar post Postado Julho 13, 2009 Fernando Robrigo Cardoso, Só uma observação: Quando inserir no BD, é melhor que o campo da tabela esteja em DATE e a data a ser gravada em formatdo yyyy-mm-dd. Isso ajuda a organizar um ORDER BY numa consulta SQL, pois se houver 01/01/2010 e 31/12/2009, o ORDER BY DESC vai colocar a 31/12/2009 na frente da 01/01/2010, enquanto que em formato yyyy-mm-dd, o 2010-01-01 vai vir na frente de 2009-12-31. Falo Pois é, foi o que eu disse no 'final' do meu post : Mascara em php : if(preg_match('/([0-9]{2})-([0-9]{2})-([0-9]{4})/',$data)) echo 'Formato de data Valido'; else echo 'Formato de data Invalido'; Na hora de inserir no mysql insira no formato yyyy/mm/dd $var = preg_replace('/([0-9]{2})-([0-9]{2})-([0-9]{4})/','\\3-\\2-\\1',$data); Eu apenas fiz um teste para validação, pois @guigosnet queria uma máscara em formato dd/mm/yyyy, e recomendei logo em seguida para usar yyyy/mm/dd no db.Nada impedi do usuario digitar dd/mm/yyyy e usar yyyy/mm/dd no db. sakow?! (edit) @guigosnet Tanto a minha função quanto a do matias_rezende vão funcionar, mas recomendo a do matias_rezende para inversão na data, pois ER é mais lento. Leia meu post acima : POST 2 []'s flws Compartilhar este post Link para o post Compartilhar em outros sites
guigosnet 0 Denunciar post Postado Julho 14, 2009 não entendi como se aplica esta função é uma coisa tao simples, tenho q dar tanta volta assim, para ajudar o user digitar a data?rs Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Julho 14, 2009 Não tem volta nenhuma... Vou fazer um exemplo completo... ainda é cedo e tô de bom humor hoje. <input type="text" name="data" id="data" /> Neste input o usuário digitou a data de hoje assim 14/07/2009. O método do seu formulário é post. No action do seu formulário, você faz assim... function FormataData ( $data ){ // passe a data no formato DD/MM/AAAA e retorna AAAA-MM-DD $x = implode('-', array_reverse(explode('/',$data))); return $x; } $data = FormataData($_POST['data']); echo 'A data formatada ficou assim - '.$data; Vai imprimir 2009-07-14. Agora se o que você quer é que, enquanto o usuário vai digitando vai sendo colocada a barra, daí é com javascript... Assim é UMA das formas de fazer. <script> function MascaraData(data) { if(document.getElementById(data).value.length == 2) document.getElementById(data).value += '/'; if(document.getElementById(data).value.length == 5) document.getElementById(data).value += '/'; } </script> <input type="text" name="data" id="data" onkeyup="MascaraData(this.id)" /> Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
lidy-wolf 0 Denunciar post Postado Julho 14, 2009 Ola amigo, olha so ja tive esse probleminha. rsrsrs Vou posta aki um codigo javascrit de mascara para varios valores. Tipo cpf, rg, dt, cep e tals. Esse codigo você coloka no HEAD <script language=javascript> //MÁSCARA DE VALORES function txtBoxFormat(objeto, sMask, evtKeyPress) { var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla; if(document.all) { // Internet Explorer nTecla = evtKeyPress.keyCode; } else if(document.layers) { // Nestcape nTecla = evtKeyPress.which; } else { nTecla = evtKeyPress.which; if (nTecla == 8) { return true; } } sValue = objeto.value; // Limpa todos os caracteres de formatação que // já estiverem no campo. sValue = sValue.toString().replace( "-", "" ); sValue = sValue.toString().replace( "-", "" ); sValue = sValue.toString().replace( ".", "" ); sValue = sValue.toString().replace( ".", "" ); sValue = sValue.toString().replace( "/", "" ); sValue = sValue.toString().replace( "/", "" ); sValue = sValue.toString().replace( ":", "" ); sValue = sValue.toString().replace( ":", "" ); sValue = sValue.toString().replace( "(", "" ); sValue = sValue.toString().replace( "(", "" ); sValue = sValue.toString().replace( ")", "" ); sValue = sValue.toString().replace( ")", "" ); sValue = sValue.toString().replace( " ", "" ); sValue = sValue.toString().replace( " ", "" ); fldLen = sValue.length; mskLen = sMask.length; i = 0; nCount = 0; sCod = ""; mskLen = fldLen; while (i <= mskLen) { bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/") || (sMask.charAt(i) == ":")) bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " ")) if (bolMask) { sCod += sMask.charAt(i); mskLen++; } else { sCod += sValue.charAt(nCount); nCount++; } i++; } objeto.value = sCod; if (nTecla != 8) { // backspace if (sMask.charAt(i-1) == "9") { // apenas números... return ((nTecla > 47) && (nTecla < 58)); } else { // qualquer caracter... return true; } } else { return true; } } </script> E esse outro nos campos q você for usa. <input name="dt" type="text" id="dt" onKeyPress="return txtBoxFormat(this, '99/99/9999', event);" maxlength="10" > você pode usar essa codigo para varias coisas para isso é so muda o '99/99/9999' pro formato q quise. Tipo cpf 999.999.999-99 Espero ter ajudado. ^^ Compartilhar este post Link para o post Compartilhar em outros sites