roger_php 0 Denunciar post Postado Outubro 4, 2007 Nossa estou penando e não acho uma solução.....Gostaria que quando o usuário fosse digitar num input text o número já fosse formatado em valor monetário...mas o problema maior é quando vou gravar no BD, pois ele não aceita virgulas....existe alguma solução? Compartilhar este post Link para o post Compartilhar em outros sites
osk 0 Denunciar post Postado Outubro 4, 2007 roger o mysql aceita virgula sim, post seu code! Compartilhar este post Link para o post Compartilhar em outros sites
Carlos Junior - NowBrasil 0 Denunciar post Postado Outubro 4, 2007 aceita sim, qual o tipo de campo que esta usando ?se você usar virgula acho que pode te atrapalhar, usa ponto depois você da um number_format() "passa os parametros na hora de imprimir".no mysql pode usar varchar mesmo ou doubla(20,2)ae ele grava assim: 2000.00e com o number_format(paramentros...), você pode imprimir assim:2.000,00e consegue depois fazer um select usando o SUM pra somar tudo se precisar.espero ter ajudado, abraços! Compartilhar este post Link para o post Compartilhar em outros sites
Alessandro_ 0 Denunciar post Postado Outubro 4, 2007 Eu fiz uma função que trata os valores antes de armazenar no banco, independente como o usuário digitar, usando "ponto" ou "virgula" é tratada. Assim é possivel usar uma mascara em javascript no front-end. function entradaMonetaria($valor){//By Alessandro Gonzalez $situacao = substr_count($valor, "."); $situacao += substr_count($valor, ","); if($situacao > 0){ $subs = array (",","."); $valor = str_replace($subs,"",$valor); $decimal = substr($valor, -2); $valor = substr($valor, 0, -2); $valor = $valor.".".$decimal; return $valor; } else { return $valor; }} http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Vlw Compartilhar este post Link para o post Compartilhar em outros sites
Thiago D.Silva 0 Denunciar post Postado Fevereiro 15, 2011 ao utilizar o codigo no drewanweaver CS5 o mesmo gera a seguinte mensagem de erro "Ocorreu um erro de JavaScript durante a execução de analyzeServerBehavior em InsertRecord.htm." no caso estou intercalando sua função, mais um Javascript: function entradaMonetaria($valor){ //By Alessandro Gonzalez $situacao = substr_count($valor, "."); $situacao += substr_count($valor, ","); if($situacao > 0){ $subs = array (",","."); $valor = str_replace($subs,"",$valor); $decimal = substr($valor, -2); $valor = substr($valor, 0, -2); $valor = $valor.".".$decimal; return $valor; } else { return $valor; } } Javascript que acrescenta virgula e ponto. <script> function moeda(campo, e) { var SeparadorDecimal = "," var SeparadorMilesimo = "." var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return true; // Chave inválida len = campo.value.length; for(i = 0; i < len; i++) if ((campo.value.charAt(i) != '0') && (campo.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(campo.value.charAt(i))!=-1) aux += campo.value.charAt(i); aux += key; len = aux.length; if (len == 0) campo.value = ''; if (len == 1) campo.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) campo.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } campo.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) campo.value += aux2.charAt(i); campo.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; } </script> consegue entender algo relacionado? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 15, 2011 Usar varchar para armazenar um dado numérico não faz o minimo sentido. Os tipos de campos existem para ser usados corretamente. O que é número fica em campo do tipo numérico. Isso evita dores de cabeça futuras Compartilhar este post Link para o post Compartilhar em outros sites