Ir para conteúdo

POWERED BY:

Arquivado

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

bcs_ptx

Soma com ponto e virgulas

Recommended Posts

Boa tarde pessoal, fiz um script aqui de soma, mas quando coloco números como 1.500,00 + 1.500,00, invés do resultado ser 3.000,00 mostra 3, oque fazer o para ele seguir o padrão certo?

 

no banco os campos estão como decimal 10,0

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza,

 

Transforma os valores em double, depois formata novamente para o formato de moeda BR.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blza mas como? esse é meu script para ser mais fácil de alguém me esplicar

 

e no banco eu coloco como double?

 

<?php

	$valor_gerador = $_POST['valor_gerador'];
	$valor_a = $_POST['valor_a'];
	$valor_vd = $_POST['valor_vd'];
	$valor_ve = $_POST['valor_ve'];
	$valor_adic = $_POST['valor_adic'];
	$valor_outras_inf = $_POST['valor_outras_inf'];

	$valor_1 = $_POST['valor_1'];
	$valor_2 = $_POST['valor_2'];
	$valor_3 = $_POST['valor_3'];
	$valor_4 = $_POST['valor_4'];
	$valor_5 = $_POST['valor_5'];
	$valor_6 = $_POST['valor_6'];

	$soma = $valor_gerador + $valor_a + $valor_vd + $valor_ve + $valor_adic + $valor_outras_inf + $valor_1 + $valor_2 + $valor_3 + $valor_4 + $valor_5 + $valor_6;

	$descontos_nf = $_POST['descontos_nf'];
	$descontos_fin = $_POST['descontos_fin'];
	$rebat = $_POST['rebat'];

	$result = $soma;
	$result_5 = $soma - $soma * 5 / 100;
	$result_10 = $soma - $soma * 10 / 100;
	$result_15 = $soma - $soma * 15 / 100;
	$result_20 = $soma - $soma * 20 / 100;		
	$result_total;

		if($descontos_nf == 0 and $descontos_fin == 0 and $rebat == 0){

			$result_total = $soma;

		}else if($descontos_nf == 5 || $descontos_fin == 5 || $rebat == 5){

			$result_total = $result_5;

		}else if($descontos_nf == 10 || $descontos_fin == 10 || $rebat == 10){

			$result_total = $result_10;

		}else if($descontos_nf == 15 || $descontos_fin == 15 || $rebat == 15){

			$result_total = $result_15;

		}else if($descontos_nf == 20 || $descontos_fin == 20 || $rebat == 20){

			$result_total = $result_20;

		}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para que você não tenha que alterar o campo do BD, transforme os valores que você deseja somar para o formato de double depois transforme novamente para o formato para armazenar na base de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O correto seria salvar no banco de dados assim 1500.00, mas você pode "corrigir" isso no PHP

 

<?php

$value = str_replace( array( '.', ',' ), array( null, '.' ), '1.500,00' );

$value += $value;

echo number_format( $value, 2, ',', '.' ); // 3.000,00

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blza fiz assim, mas no banco continua salvando errado, eu coloquei 15.500,00 e no banco fica salvo como 16, o campo esta como decimal 15,2

 

$valor_gerador = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_gerador' ] );
	$valor_a = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_a' ] );
	$valor_vd = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_vd' ] );
	$valor_ve = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_ve' ] );
	$valor_adic = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_adic' ] );
	$valor_outras_inf = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_outras_inf' ] );

	$valor_1 = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_1' ] );
	$valor_2 = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_2' ] );
	$valor_3 = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_3' ] );
	$valor_4 = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_4' ] );
	$valor_5 = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_5' ] );
	$valor_6 = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_6' ] );

Compartilhar este post


Link para o post
Compartilhar em outros sites

blza, eu digitei no campo $valor_gerador 5.550,00 e com um echo apareceu 5550,00, mas no banco esta salvo no campo $valor_gerador como 6 e no $result_total que é a soma de todos os campos esta 5500, por que isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blza, quanto a isso está certo, o problema é que continua, quando eu coloco 10.500,00 no banco fica salvo com 10 invés de 1050000, por que isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites
CREATE TABLE `tbl_calcular` (                              
               `id_teste` int(10) unsigned NOT NULL AUTO_INCREMENT,     
               `valor_gerador` decimal(15,0) DEFAULT NULL,              
               `valor_a` decimal(15,0) DEFAULT NULL,                    
               `valor_vd` decimal(15,0) DEFAULT NULL,                   
               `valor_ve` decimal(15,0) DEFAULT NULL,                   
               `valor_adic` decimal(15,0) DEFAULT NULL,                 
               `valor_outras_inf` decimal(15,0) DEFAULT NULL,           
               `valor_1` decimal(15,0) DEFAULT NULL,                    
               `valor_2` decimal(15,0) DEFAULT NULL,                    
               `valor_3` decimal(15,0) DEFAULT NULL,                    
               `valor_4` decimal(15,0) DEFAULT NULL,                    
               `valor_5` decimal(15,0) DEFAULT NULL,                    
               `valor_6` decimal(15,0) DEFAULT NULL,                    
               `valor_liquido` decimal(15,0) DEFAULT NULL,              
               `descontos_nf` decimal(10,0) DEFAULT NULL,               
               `descontos_fin` decimal(10,0) DEFAULT NULL,              
               `rebat` decimal(10,0) DEFAULT NULL,                      
               PRIMARY KEY (`id_teste`)                                 
             ) ENGINE=MyISAM AUTO_INCREMENT=131 DEFAULT CHARSET=latin1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Note que você não colocou dígitos para "depois da vírgula", ou seja, consegue armazenar apenas números inteiros.

E isso aqui está errado:

10.500,00

 

O correto é:

10500.00

 

Mas como não há suporte à parte fracinária, não sei dizer o que acontece quando tenta-se inserir algum dado dessa maneira...

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.