Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, tenho que enviar um form e o campo de valor poderá submeter apenas números.
Caso seja digitado "." e ou "," terá que ser desconsiderado no envio... Exemplo se for digitado: 1.000,00 deverá ser submetido 100000.
Alguém tem sabe como tratar isso?
Grato.
Usa a função str_replace
Veja mais neste link: http://llucasdesenvolvimento.com/mundoweb/funcoes-php-str_replace/
Ok, vou testar! Abração.
Tentei isso, mas não rolou, ele envia a string money no form...
<?php
$string = ('money');
$novastring = str_replace(".", "", $string);
echo $novastring;
?>
<form action="[https://www16.bancodobrasil.com.br/site/mpag/](https://www16.bancodobrasil.com.br/site/mpag/)" method="post" name="pagamento">
<input type="hidden" name="dtVenc" value="<?php echo date("dmY");?>">
<input type="hidden" name="urlRetorno" value="retorno.php">
<input type="hidden" name="valor" value="<?php echo $novastring; ?>">
<label >Valor:</label><input type="text" maxlength="15" name="money" /><br/><br/>
<input type="submit" class="submit" value="Doar">seguinte
em $string vai o valor em si ou seja: 10.00
em novastring vai os parâmetros a ser procurado substituído e em qual variável
$valor = $_POST['valor'];
$string = ($valor);
$novastring = str_replace(".", "", $string);
echo $novastring;Me desculpe pela insistência, mas acho que não compreendi, ainda não rolou, veja se é isso:
<?php
$money = $_POST['money'];
$string = ($money);
$novastring = str_replace(".", "", $string);
?>
<form action="[https://www16.bancodobrasil.com.br/site/mpag/](https://www16.bancodobrasil.com.br/site/mpag/)" method="post" name="pagamento">
<input type="hidden" name="valor" value="<?php echo $novastring;?>">
<label >Valor:</label><input type="text" maxlength="6" name="money" /><br/><br/>isso, neste teu código ele trocara os pontos por nada ou seja 10.00 = 1000
ele recebe os dados do form neste caso o valor, e trata a variável e logo imprime ela
Ele está enviando o campo valor nulo...?
como assim? no codigo pelo que entendi faz assim:
form para o usuario - digita um valor exemplo: 25.66 e submete este formulario a uma pagina php que ira receber estes dados
a variavel money recebe o valor digitado no form, e logo abaixo verifica se há pontos se sim retira esses pontos imprimindo 2566
é essa a duvida?
Eu tenho que submeter esse campo valor tratado, quando eu envio ele ainda não tratou, acho que é isso...
então mais os dados você manda para uma pagina php e nessa insere no banco correto?
Acho que vou ter que usar Javascript mesmo, para tratar em tempo de execução... ou vou ter que pegar de um form e jogar em outro...
pode ser, mais quando se submete ele tem que ir para algum lugar, e é neste lugar que se trata as variaveis tirando ponto e virgula entendeu?
Entendi, só que quando eu submeto ele pega o valor na hora do envio da variável $novastring e ainda não processou, bom pelo menos é a unica explicação que vejo... Quando aperto submit o Banco processa os dados passados e me retorna o erro.
No lado server, "PHP" não utilize str_replace.
Imagina se você tivesse que substituir todo texto que não seja númerico por vazio? Haja linha de código.
Use expressão regular:
<?php
$post = $_POST['sua_variavel'];
$padrao = '/[^(0-9)]/';
$substitui = '';
echo preg_replace($padrao, $substitui, $post);
?>Raphael, como usaria isso no meu form, envie o campo digitado no form tratado, ou seja quando apertar submit ele envie apenas os números para ser processado pelo action do Banco?
<form action="[https://www16.bancod...m.br/site/mpag/](https://www16.bancodobrasil.com.br/site/mpag/)" method="post" name="pagamento">
<label >Valor:</label><input type="text" maxlength="6" name="valor" /><br/><br/> (enviar apenas os números ditados neste campo)
Valeu!
O envio será feito normalmente, com os caracteres digitados pelo usuário. Quando der o submit, o código vai pegar esse campo, verifica se existem os caracteres especificados ("." e ",") e substituirá por vazio...
<html>
<head>
<title>TESTE</title>
<script type="text/javascript">
function validate(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
var regex = /[0-9]/;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
</script>
</head>
<form action="https://www16.bancod...m.br/site/mpag/" method="post" name="pagamento">
<label for="valor">Valor:</label>
<br />
<input type="text" onkeypress='validate(event)' name="valor" />
<br />
<input type="submit" value="Enviar" />
</form>
<?php
/* Página que recebe a requisição
$valor = $_POST['valor'];
$padrao = '/[^(0-9)]/';
$substitui = '';
$replace = preg_replace($padrao, $substitui, $valor);
$valorMudado = !empty($replace) ? $replace : 0 ;
echo $valorMudado;
*/
?>Essa (action="https://www16.bancod...m.br/site/mpag/"), seria a página que faz a requisição? deveria ter explicado que não tenho acesso a ela!
Essa (action="https://www16.bancod...m.br/site/mpag/"), seria a página que faz a requisição? deveria ter explicado que não tenho acesso a ela!
A action, é a página para onde o formulário vai enviar os dados.
Veja isso pra abrir seu entendimento: http://www.bb.com.br/docs/pub/emp/empl/dwn/Orientacoes23Out07.pdf
Página 10
Rapha, entendido, obrigado, o form que estou usando é baseado nesse manual. A única coisa que não consegui foi a formatação desse campo para o envio.
Meu conhecimento em programação é superficial, deu pra perceber, restringir os caracteres do lado do cliente resolve, mas não é o que eu queria.
Posta o form completo pra eu lhe mostrar como é feito isso!
Segue código, obrigado!
<?php $cStructure->setTitle('Doe Agora'); ?>
<?php $breadcrumb->add('Doe Agora', 'doe-agora', 1); ?>
<?php
// Passando os dados obtidos pelo formulário para as variáveis abaixo
$result = mysql_query("SELECT * FROM debitoBB LIMIT 0, 30");
if (!$result) {
echo 'Não é possível usar débito ou boleto no momento: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
$resp = $row[0]+1;// numeros
mysql_query("UPDATE debitoBB SET codTrans='".$resp."' WHERE 1");
?>
<script language="javascript">
function HabCampos() {
if (document.getElementById('periodo_sim').checked) {
document.getElementById('campos').style.display = "";
document.getElementById('campos1').style.display = "";
document.getElementById('campos2').style.display = "";
document.getElementById('campos3').style.display = "";
document.getElementById('campos4').style.display = "";
document.getElementById('textfield').focus();
}
else {
document.getElementById('campos').style.display = "none";
document.getElementById('campos1').style.display = "none";
document.getElementById('campos2').style.display = "none";
document.getElementById('campos3').style.display = "none";
document.getElementById('campos4').style.display = "none";
}
}
</script>
<div>
<div style="height:60px" >
<img src='http://www.apabb.org.br/images/bb.jpg' alt='Pagamento on-line Banco do Brasil' width="50" height="50" border='0' />
</div>
<div>
<h1>Doar usando Banco do Brasil</h1>
<form action="https://www16.bancodobrasil.com.br/site/mpag/" method="post" name="pagamento">
<input type="hidden" name="idConv" value="311318">
<input type="hidden" name="refTran" value="2545148<?php echo $row[0]; ?>">
<input type="hidden" name="dtVenc" value="<?php echo date("dmY");?>">
<input type="hidden" name="urlRetorno" value="retorno.php">
<label >Valor: R$</label><input type="text" size="8" maxlength="6" name="valor" /><br/>
<input name="tpPagamento" id="periodo_sim" type="radio" value="2" onClick="HabCampos()"/>Boleto Bancário
<input name="tpPagamento" id="periodo_nao" type="radio" value="3" onClick="HabCampos()"/>Débito On-line<br/>
<label id="campos" style="display:none">Nome:<br />
<input type="text" maxlength="60" name="nome" id="textfield"/></label><br/>
<label id="campos1" style="display:none">Enderço:<br />
<input type="text" maxlength="60" name="endereco" id="textfield"/></label><br/>
<label id="campos2" style="display:none">CEP:<br />
<input type="text" maxlength="8" name="cep" id="textfield"/></label><br/>
<label id="campos3" style="display:none">Cidade:<br />
<input type="text" maxlength="18" name="cidade" id="textfield"/></label><br/>
<label id="campos4" style="display:none">UF<br />
<select name="uf">
<option value="">Selecione o estado</option>
<option value="ac">Acre</option>
<option value="al">Alagoas</option>
<option value="ap">Amapá</option>
<option value="am">Amazonas</option>
<option value="ba">Bahia</option>
<option value="ce">Ceará</option>
<option value="df">Distrito Federal</option>
<option value="es">Espirito Santo</option>
<option value="go">Goiás</option>
<option value="ma">Maranhao</option>
<option value="ms">Mato Grosso do Sul</option>
<option value="mt">Mato Grosso</option>
<option value="mg">Minas Gerais</option>
<option value="pa">Pará</option>
<option value="pb">Paraíba</option>
<option value="pr">Paraná</option>
<option value="pe">Pernambuco</option>
<option value="pi">Piauí</option>
<option value="rj">Rio de Janeiro</option>
<option value="rn">Rio Grande do Norte</option>
<option value="rs">Rio Grande do Sul</option>
<option value="ro">Rondônia</option>
<option value="rr">Roraima</option>
<option value="sc">Santa Catarina</option>
<option value="sp">Sao Paulo</option>
<option value="se">Sergipe</option>
<option value="to">Tocantins</option>
</select></label><br/>
<input type="submit" class="submit" value="DOAR">
</form>
</div>
</div>Pega o código em http://raphael.eti.br/bb-ecomerce.rar e com ele nós vamos trabalhando.
Acontece que não possuo os dados que você tem na BD para testes.
Testa aew!
Rafa, o link tá quebrado!
Abs,
Ricardo
>
Rafa, o link tá quebrado!
Abs,
Ricardo
Desculpa, agora ta corrigido, foi falta de atenção :natallaugh:
Caro,
Não sei se no PHP é a mesma coisa, mas no ASP eu utilizaria o "Replace", que substituiria o caracter enviado por "".
No caso ficaria replace(variavel, ".", "")
Você pode também utilizar o Javascript pra impedir o uso destes caracteres, logo no cadastro dos mesmos.
E no campo, do formulário, você chamaria desta forma
<INPUT type='text' size='15' name='cdems' maxlength='6' onkeypress='return SomenteNumero(event);'>
Neste caso, mesmo se o usuário digitar esses caracteres, ele não será cadastrado.
Abraços