elianecpa 0 Denunciar post Postado Maio 29, 2012 Pessoal bom dia! Tenho dois problema, é o seguinte tenho um formulario de notas (php - MySql). 1 - Os professores gostariam de digitar virgula(,) no lugar de ponto(.) ex 5,66 e não 5.66, os campos são decimais. acho que para resolver teria que converter a (,) em (.) na hora de salvar, mas não sei como fazer isto. 2 - Tem como usar o enter no lugar do tab. obrigada Eliane Compartilhar este post Link para o post Compartilhar em outros sites
andre otto 15 Denunciar post Postado Maio 29, 2012 strreplace Compartilhar este post Link para o post Compartilhar em outros sites
elianecpa 0 Denunciar post Postado Maio 29, 2012 strreplace Você pode me mostrar um exemplo de como usar. Compartilhar este post Link para o post Compartilhar em outros sites
Douglas Noronha 0 Denunciar post Postado Maio 30, 2012 <?php $num = 5.45; print str_replace(".",",",$num); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Flamaury 0 Denunciar post Postado Maio 30, 2012 Eliane, acredito que o str_replace inicialmente não vai resolver o seu problema, uma vez que essa função php é usada na impressão do resultado, e se entendi bem o que você esta querendo é trocar o ponto pela virgula no momento de inserir o valor da nota no formulario. Se for realmente isso eu tive um problema similar no momento de inserir valor financeiro ($) em um form, e resolvi assim. No formulário usei uma função que inseria automaticamente os pontos e virgulas. função: <script type="text/javascript"> //inserir ponto e virgula em valores function moeda(z) { v = z.value; v=v.replace(/\D/g,"") //permite digitar apenas números v=v.replace(/[0-9]{12}/,"inválido") //limita pra máximo 999.999.999,99 v=v.replace(/(\d{1})(\d{8})$/,"$1.$2") //coloca ponto antes dos últimos 8 digitos v=v.replace(/(\d{1})(\d{5})$/,"$1.$2") //coloca ponto antes dos últimos 5 digitos v=v.replace(/(\d{1})(\d{1,2})$/,"$1,$2") //coloca virgula antes dos últimos 2 digitos z.value = v; } </script> formulário: <form name="cadastrar_folha" id="cadastrar_folha" action="" method="post" enctype="multipart/form-data" > <fieldset> <label> <span>Fixo</span> <input type="text" name="fixo" maxlength="14" onKeyUp="moeda(this);" /> </label> <input type="hidden" name="cadastro" value="ok" /> <input type="submit" name="Cadastrar" value="Cadastrar" class="cadastro_btn" /> </fieldset> </form> PHP <?php if(isset($_POST['cadastro']) && $_POST['cadastro'] == 'ok'){ //CONVERSAO DO VALOR, SENDO RETIRADO OS PONTOS, E DEPOIS CONVERTENDO A VIRGULA EM PONTO $fixo = strip_tags(trim($_POST['fixo'])); $valor = strip_tags(trim($_POST['fixo'])); $ponto = preg_replace("/[.]/" , "" , $valor); $fixo = preg_replace("/(\D)/i" , "." , $ponto); //inserção dos dados no BD $cadastra_folha = mysql_query("INSERT INTO nome_da_sua_tabela_no_BD (campos da sua tabela) VALUES('´variaveis que passam os valores sendo a do valor a $fixo')") or die(mysql_error()); if($cadastra_folha >= '1'){ echo "Cadastro de valores efetuado com sucesso!"; }else{ echo "Erro ao cadastrar os valores!"; } } ?> No seu caso, como o valor digitado será uma nota e nao valor em reais ($), exclua da função moeda as linhas abaixo: v=v.replace(/(\d{1})(\d{8})$/,"$1.$2") //coloca ponto antes dos últimos 8 digitos v=v.replace(/(\d{1})(\d{5})$/,"$1.$2") //coloca ponto antes dos últimos 5 digitos Se posteriormente você precisar exibir essas notas, depois de recuperar os valor no BD e transferilos para uma variavel qualquer, faça a exibição usando a função php NUMBER_FORMAT, conforme abaixo: Se o valor vor em reais ($): <?php echo number_format($variavel, '2', ',', '.');?> Ser for a nota (so com virgula: <?php echo number_format($variavel, '2', ',', '');?> Bom, é isso. Espero ter ajudado. FLAMAURY Eliane, Só mais uma detalhe; na sua tabela no BD, o campo que recebe a nota ou valor em reais ($) deve ser do tipo varchar. Flamaury Compartilhar este post Link para o post Compartilhar em outros sites
elianecpa 0 Denunciar post Postado Maio 30, 2012 Obrigada Flamaury, é isto mesmo que eu quero, vou tentar fazer. Compartilhar este post Link para o post Compartilhar em outros sites
Flamaury 0 Denunciar post Postado Maio 30, 2012 Obrigada Flamaury, é isto mesmo que eu quero, vou tentar fazer. Eliane, se no BD não der certo com tipo varchar, use o campo da nota com o tipo text. Abraços, Flamaury Compartilhar este post Link para o post Compartilhar em outros sites