Calculate the total in the bank bill

Asked

Viewed 263 times

0

Maybe with the image I can understand, I have according to the image, 2 products, at the time of generating the billet it only takes the value of the first product, how to redeem the total correctly?

carrinho

The PHP code:

$conn = conecta();
$total = 0;
$linha = Array();
foreach ($_SESSION['shop'] as $id => $qtd) {
    $cart = $conn->prepare("SELECT * FROM produtos WHERE  id=$id");
    $cart->setFetchMode(PDO::FETCH_ASSOC);
    $cart->execute();

    while ($linha = $cart->fetch()) {
        $preco = $linha['preco'];
        $linha['preco'] = str_replace(",",".",$linha['preco']);
        $_SESSION['preco'] = $linha['preco'];
        $sub =  $linha['preco'] * $qtd;
        $total += $linha['preco'] * $qtd;
        // $total += $preco;
        // ------------------------- DADOS DINÂMICOS DO SEU CLIENTE PARA A GERAÇÃO DO BOLETO (FIXO OU VIA GET) -------------------- //
       // Os valores abaixo podem ser colocados manualmente ou ajustados p/ formulário c/ POST, GET ou de BD (MySql,Postgre,etc)    //

       // DADOS DO BOLETO PARA O SEU CLIENTE
       $dias_de_prazo_para_pagamento = 5;
       $taxa_boleto = 2.95;
       $data_venc = date("d/m/Y", time() + ($dias_de_prazo_para_pagamento * 86400));
       // Prazo de X dias OU informe data: "13/04/2006";
       $valor_cobrado = $sub;
      // Valor - REGRA: Sem pontos na milhar e tanto faz com "." ou "," ou com 1 ou 2 ou sem casa decimal
       $valor_cobrado = str_replace(",", ".",$valor_cobrado);
       $valor_boleto = number_format($valor_cobrado+$taxa_boleto, 2, ',', '');
       $dadosboleto["nosso_numero"] = '12345678';
       // Nosso numero - REGRA: Máximo de 8 caracteres!
       $dadosboleto["numero_documento"] = '0123';
       // Num do pedido ou nosso numero
       $dadosboleto["data_vencimento"] = $data_venc;
      // Data de Vencimento do Boleto - REGRA: Formato DD/MM/AAAA
      $dadosboleto["data_documento"] = date("d/m/Y");
      // Data de emissão do Boleto
      $dadosboleto["data_processamento"] = date('d/m/Y');
      // Data de processamento do boleto (opcional)
      $dadosboleto["valor_boleto"] = $valor_boleto;
     // Aqui eu quero inserir o valor total da compra.
   }
}

And Javascript:

$(document).ready(function (e) {
    $('input').change(function (e) {
        id = $(this).attr('rel');
        $index = this.value;
        $preco = $('font#preco'+id)
                 .html().replace("R$ ",'');
                  console.log($preco);
        $val =   ($preco*$index).toFixed(2)
               .replace(/(\d)(?=(\d{3})+\.)/g, '$1,');;
        $('font#sub'+id).html('R$ '+$val);
        clearInterval(timer);

     });
 });
  • 2

    Clayton is welcome to Stackoverflow. It’s interesting to read the tour to better understand how the site works en.stackoverflow.com/tour. Can you edit your question? It’s a bit messy.

  • Sorry , I would like to pull the overall total and display in the variable $valor_boleto,I can only display the first product, not sum with the next product.

  • Friend, edit your question by putting a little more information, such as the error that is returning. But you have already tried to remove the line $total = number_format($total,2,".",".");?

1 answer

0


There are 2 ways to do this. With the php and with the sql.

  • PHP

        <?php
    
        $conn = conecta();
        $linha = Array();
    
        // criei um array chamado totalGarel que usaremos mais tarde
        $totalGeral = array();
    
        // apaguei o looping while pois ele não é necessário uma vez 
        //que você seleciona apena 1 id de cada produto por vez
    
        foreach ($_SESSION['shop'] as $id => $qtd) {
            $cart = $conn->prepare("SELECT * FROM produtos WHERE  id=$id");
            $cart->setFetchMode(PDO::FETCH_ASSOC);
            $cart->execute();
    
                $linha = $cart->fetch() 
               $preco = $linha['preco'];
               $preco = str_replace(",",".",$preco);
               $_SESSION['preco'] = $preco;
               $sub =  $preco * $qtd;
               $valor_cobrado = $sub;
              $valor_cobrado = str_replace(",", ".",$valor_cobrado);
    
            $totalGeral[] = $valor_cobrado;
    
        }
    
    
            // aqui vem a soma de todos os valores dos produtos selecionados
            $ValorTotalBoleto = array_sum($totalGeral);
    
            // REPARE QUE OS DADOS DO BOLETO ESTÃO FORA DO FOREACH
            // POIS OS DADOS SÃO ÚNICOS
    
             // DADOS DO BOLETO PARA O SEU CLIENTE
              $dias_de_prazo_para_pagamento = 5;
              $taxa_boleto = 2.95;
              $data_venc = date("d/m/Y", time() + ($dias_de_prazo_para_pagamento * 86400));
              // Prazo de X dias OU informe data: "13/04/2006";
    
    
              // aqui eu incluí o valor para ser somado com as taxas
            $valor_boleto = number_format($ValorTotalBoleto+$taxa_boleto, 2, ',', '');
    
            $dadosboleto["nosso_numero"] = '12345678';
              // Nosso numero - REGRA: Máximo de 8 caracteres!
              $dadosboleto["numero_documento"] = '0123';
              // Num do pedido ou nosso numero
              $dadosboleto["data_vencimento"] = $data_venc;
             // Data de Vencimento do Boleto - REGRA: Formato DD/MM/AAAA
             $dadosboleto["data_documento"] = date("d/m/Y");
             // Data de emissão do Boleto
             $dadosboleto["data_processamento"] = date('d/m/Y');
             // Data de processamento do boleto (opcional)
             $dadosboleto["valor_boleto"] = $valor_boleto;
            // Aqui eu quero inserir o valor total da compra.
    
    
        ?>
    

of course there may be some error, as I have not tested with your DB.

  • SQL

With sql you can mount a query to make this sum directly from DB.

    $soma = $conn->prepare("SELECT  SUM (preco) FROM produtos");

But I couldn’t imagine where I could put it and how to ride it query because I don’t know your database. And from what I realized your cart is only mounted by session which makes it even more difficult to mount this query

Anyway php should solve.

If there are any mistakes, post it in the comment that I try to fix it.

  • I’ll test here Andrei,!

  • Andrei Coelho thank you very much worked perfectly, worth even, if it is not ask much would be able to help me with this javascript,, but when sending to another page or updating the page it goes back to the initial value,is the same javascript above.

  • So @Clayton, it would be good for you to open a new question related to this, because I’m not a javascript professional. Remember when you post this question, put in the cart form so the area professional can help you. This is probably related to the upload form and/or php, because if the value is updating it means that javascipt is working correctly. In addition, it is important to post different problem questions separately as someone else in a future can use to solve another problem. I’m happy to help you. Abs!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.