Calculate the total in the bank slip

0

Maybe with the image give to understand, I have second image, 2 products, at the time of generating the ticket it only takes the value of the first product, how to do to redeem the total correctly?

ThePHPcode:

$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);

     });
 });
    
asked by anonymous 14.04.2016 / 16:20

1 answer

0

There are 2 ways to do this. With php and 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, since I did not test with your DB.

  • SQL

With sql you can set up a query that makes that sum directly from the DB.

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

But I could not figure out where I could put and how to mount this query because I do not know your database. And from what I noticed your cart is mounted only by session which makes it even harder to mount this query

Anyway php should resolve.

If you have any errors, post it in the comment I try to sort it.

    
15.04.2016 / 15:44