Ir para conteúdo

Arquivado

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

Hamon

Números decimais na multiplicação

Recommended Posts

Olá, pessoal, estou com uma grande dúvida e dor de cabeça. Estou criando um sisteminha... e nele tenho alguns inputs que devem ser preenchidos pelo usuario, depois de enviar deverá aparecer todos deverá aparecer uma multiplicação no final, que seria entre uma QUANTIDADE e um PREÇO ($quantidade * $preco) ou pegando por post seria esses valores (2 * 1.500,00) só que ele não aparece o resultado correto (mesmo trocando "," por ".") em vez de obter o resultado de 3.000 eu só consigo o resultado de 3,0 (com number format) e 3 sem number format. A pergunta é a seguinte: Como fazer com que o resultado final da minha multiplicação seja 1.500,00? (esse exemplo que dei só funcionaria caso eu colocasse no preço como 1500, usando o number format. Mas não posso depender que o usuario faça isso.)

 

CÓDIGO:


  <?php 
	
		include "conexao.php";
		
		@$data=$_POST['data'];
		@$nome=$_POST['nome'];
		@$quantidade=$_POST['quantidade'];
		@$resultado=$_POST['quest'];
		@$preco=$_POST['preco'];
		@$enviar=$_POST['enviar'];
		
		@$preco_final= $quantidade * $preco; 
		
		echo number_format($preco_final, 2, ',', '.')."<br/><br/>";
		 
		 		
		
		echo $data." ".$nome." ".$quantidade." ".$resultado." ".$preco." ".$preco_final;

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve garantir que 1.500,00 se transforme em 1500.00, com isto a multiplicação dará certo. Basta usar str_replace.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tudo deveria estar correndo normal a menos que haja erro nos dados de entrada.

Sugiro debugar os inputs antes de executar o script.

var_dump($_POST);

Se estiver utilizando algum tipo de máscara no input, filtre os dados não numéricos antes de executar a operação.

Caso não ainda assim não consiga resolver, posta o resultado do var_dump.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como utilizar o var_dump?

 

Insira na página que recebe o formulário, deste jeito:

var_dump($_POST);

Preencha o formulário corretamente, submeta e poste aqui o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Lucas, fiz como dito e apareceu este resultado na minha tela:

 

array(6) { ["data"]=> string(10) "21/02/2016" ["nome"]=> string(7) "Revista" ["quantidade"]=> string(1) "2" ["preco"]=> string(5) "14,90" ["quest"]=> string(5) "saida" ["enviar"]=> string(6) "enviar" }

Compartilhar este post


Link para o post
Compartilhar em outros sites

(desculpa o double post) Seguinte, acabei de fazer uns testes e verifiquei que por exemplo, se eu por em QUANTIDADE o numero 2 e no preço 1000 (sem ponto) ele faz certinho a conta. Mas eu queria que desse para por no campo de preço o ponto, envez de precisar ser tudo junto. Outro exemplo é que caso existam centavos no meio, eu deveria por assim: 1500.40(mil e quinhentos e 40 centavos). Mas eu queria que fosse dessa forma 1.500,40

Compartilhar este post


Link para o post
Compartilhar em outros sites

(desculpa o double post) Seguinte, acabei de fazer uns testes e verifiquei que por exemplo, se eu por em QUANTIDADE o numero 2 e no preço 1000 (sem ponto) ele faz certinho a conta. Mas eu queria que desse para por no campo de preço o ponto, envez de precisar ser tudo junto. Outro exemplo é que caso existam centavos no meio, eu deveria por assim: 1500.40(mil e quinhentos e 40 centavos). Mas eu queria que fosse dessa forma 1.500,40 (o usuario deveria digitar dessa forma, assim sendo iria ocorrer a multiplicação (ja usando o number_format) e então eu usaria novamente o number_format para trocar as "," por ".", para poder inserir os registros no banco de dados)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, bom dia. Consegui uma função na internet que quando eu digitio por exemplo: 1.500,95 ele transforma a virgula em ponto, pronto era oq eu queria... maaassss, na hora de enserir 1.500.95 (tudo com pontos) o banco de dados não aceita, ele só aceita 1.500 em DECIMAL (7,3). Alguem pode me ajudar? Somente isso que necessito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tchê, postar 500 vezes não adianta nada se você não parar 10 segundos para ler o que já foi postado... no segundo post eu te disse exatamente o que você tinha que fazer, não sabe usar o str_replace? Beleza, existe um negócio mágico, se chama MANUAL, dá uma olhada lá:

http://php.net/str_replace

 

Leu o negócio mágico e não conseguiu? Beleza, posta TODOS as suas tentativas e a gente ajuda.

 

Agora simplesmente ficar postando esperando que alguém vá fazer o seu trabalho, esquece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ESerra, desculpa pelos posts. Mas seguinte, já consegui oq eu queria usando uma funçao. Mas agora eu gostaria de saber como inserir um valor que existam centavos no banco de dados, por exemplo: 1.543.32

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples, o padrão correto é:

xxxxxxxxxxxxxxxxxxxxxxxxxxx.xx:

Colocando isto de forma de mobral:

Separar de milhar = NÃO EXISTE

Separador de centavos = PONTO

 

Como está o seu número atualmente?

1.543.32

Separador de milhar = PONTO

Separador de centavos = PONTO

 

Como o seu número deve ser:

1543.32

Separador de milhar = NÃO EXISTE

Separador de centavos = PONTO

 

Como conseguir isto? Simples, assumindo que o valor original é 1.500,95:

Primeiro use str_replace para subtituir o PONTO por nada, então o número ficará como 1500,95

Após isto use str_replace de novo para substituir a vírgula por ponto, ficando então 1500.95

Pronto, a partir daí o resultado será o esperado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, muito obrigado, você me tirou muitas duvidas, até mesmo as que eu não pedi! Obrigado cara, você ajudou em 50% do meu projeto! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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