Ir para conteúdo

POWERED BY:

Arquivado

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

elianecpa

[Resolvido] virgula no lugar de ponto

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.