bcs_ptx 0 Denunciar post Postado Dezembro 14, 2011 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
Wesley David 20 Denunciar post Postado Dezembro 14, 2011 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
bcs_ptx 0 Denunciar post Postado Dezembro 14, 2011 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
Wesley David 20 Denunciar post Postado Dezembro 14, 2011 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
bcs_ptx 0 Denunciar post Postado Dezembro 14, 2011 seria isso aqui para inserir no código? <?php $valor_a = $_POST['valor_a']; echo "R$" .number_format($valor_a, 2, ',', '.'); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Dezembro 14, 2011 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
bcs_ptx 0 Denunciar post Postado Dezembro 14, 2011 Valeu a ajuda gurizada, mas eu não estou conseguindo inserir essas informações no meu script que postei acima... Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Dezembro 14, 2011 Faça assim $valor_a = str_replace( array( '.', ',' ), array( null, ',' ), $_POST[ 'valor_a' ] ); Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Dezembro 14, 2011 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
Kakashi_Hatake 267 Denunciar post Postado Dezembro 14, 2011 Dê um echo nos valores e veja se o valor está correto, tipo 15500.00 Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Dezembro 14, 2011 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
Kakashi_Hatake 267 Denunciar post Postado Dezembro 14, 2011 Desculpa, foi erro meu na digitação $valor_a = str_replace( array( '.', ',' ), array( null, '.' ), $_POST[ 'valor_a' ] ); Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Dezembro 15, 2011 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
Henrique Barcelos 290 Denunciar post Postado Dezembro 15, 2011 Posta a estrutura da tabela aí... Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Dezembro 15, 2011 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
Henrique Barcelos 290 Denunciar post Postado Dezembro 15, 2011 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