Jump to content
Fórum Script Brasil
  • 0

Calcular os subtotais


Clayton
 Share

Question

Bom dia , como posso fazer para calcular o total geral de todas as compras efetuadas ou seja a soma de todos os subtotais, como faço isso ?

  $conn = conecta();
  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()) {
                                   $foto = $linha['foto'];
                                   $nome = $linha['nome'];
                                   $descricao = $linha['descricao'];
                                   $tamanho = $linha['tamanho'];
                                   $cor = $linha['cor'];
                                   $preço = $linha['preço'];
                                   $linha['preço'] = str_replace(",",".",$linha['preço']);
                                   $sub = number_format($linha['preço'] * $qtd, 2, ',', '.');
                                   $total += $preço; 

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

você quer fazer a soma de todos os produtos do seu carrinho?

 

Se sim, você deve fazer um for ou como você fez ai um foreach para varrer todos os produtos e calcular o valor deles em uma variavel do carrinho que você iria guardar o total de produtos.

 

Exemplo

Digamos que você tem uma variavel array multidimensional que guarda o item e a quantidade preço e tal por exemplo vamos fazer alguns produtos:

3 produtos

Refrigerante de Cola 3,99 cada um mas foram pedidos 2, Pão de Forma 1,99 cada um e foi pedido apenas um  e Margarina 4,99 cada um e foi pedido 1

 

O Total deve ser R$14,96 desse carrinho até o momento, exemplo meio porco mas que você pode aplicar ao seu carrinho.

 

$carrinho = array(array());

$carrinho[0]['nome'] = "Refrigerante de Cola";
$carrinho[0]['preco'] = 3.99;
$carrinho[0]['qtd'] = 2;

$carrinho[1]['nome'] = "Pão de forma";
$carrinho[1]['preco'] = 1.99;
$carrinho[1]['qtd'] = 1;

$carrinho[2]['nome'] = "Margarina";
$carrinho[2]['preco'] = 4.99;
$carrinho[2]['qtd'] = 1;

$carrinho['total'] = 0;

foreach($carrinho as $value)
{
	$carrinho['total'] += $value['preco'] * $value['qtd'];
}


print "<pre>";
print_r($carrinho);
print "</pre>";

 

 

 

Link to comment
Share on other sites

  • 0

no javascript é assim q faz o cálculo

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

        });
        });

como fazer para somar todos os produtos do carrinho, o meu total é assim :    $total += $linha['preço'] * $qtd; , mas não traz o total de todos, pode dar um exemplo?a minha dúvida onde implemento esse foreach q você falou , se já existe um foreach.

1.thumb.png.b51880a4cf6306bf566b1f1f3ef5O

Observe a imagem e veja que no subtotal, eu tenho os preços separados eu queria somar todos os subtotais dos produtos que eu adicionar, para ter um total geral.

Edited by Clayton
Link to comment
Share on other sites

  • 0

cara para pegar o total dos subtotais basta somar todos os subtotais por exemplo acredito que esse seletor  " $('font#preço'+id) " seja aonde está o preço coloque um name único em todos as tags de preço por exemplo name="subtotal[]" e ai quando você for processar num post, ficaria mais ou menos assim:

 

 

$total = 0.0;

if(isset($_POST['subtotal']) && !empty($_POST['subtotal']))
{
	
	$precos_subtotais = $_POST['subtotal']; // só coloquei em uma variavel para exemplificar melhor

	foreach($precos_subtotais as $valor)
	{
	 $total += floatval($valor); //transformei em floatval para pegar os valores do POST que seriam strings para fazer a conta com o Double
	}
}

// vai sair o total de produtos que no exemplo que vc deu na foto seria:1494.00

 

Link to comment
Share on other sites

  • 0

Opa cara segue um exemplo de como você pode pegar o valor de valores em html com javascript e com um envio de formilario para o mesmo codigo para você poder processar o preço:

<?php  

$total = 0.0;

if(isset($_POST['total']) && !empty($_POST['total']))
{
	
	$precos_subtotais = $_POST['total']; // só coloquei em uma variavel para exemplificar melhor

	echo "<script>alert('O total é de '+".$precos_subtotais.");</script>";
}

// vai sair o total de produtos que no exemplo que vc deu na foto seria:1494.00

?>

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Contador</title>
</head>
<body>
		

		<form action="seuarquivodecontroller.php" method="POST" accept-charset="utf-8">
			<input type="hidden" name="total" id="total" value>
			<span class="preco">R$100,00</span>
			<span class="preco">R$100,00</span>
			<span class="preco">R$100,00</span>
			<span class="preco">R$100,00</span>
			<button type="submit" value="Enviar!"></button>
		</form>
<script>
	var total = 0.0;
	var precos = document.getElementsByClassName("preco")
	for(i = 0; i < precos.length;i++)
	{
		var valor = precos[i].innerHTML
		valor = valor.replace("R$", "");
		valor = valor.replace(",", ".");
		total += parseFloat(valor);
	}
	var pegaValorTotal = document.getElementById('total')
	pegaValorTotal.value = total;
</script>
</body>
</html>

 

Edited by eiglimar
Link to comment
Share on other sites

  • 0

Como eu chamo o javascript do total geral num input para exibir dentro de um echo $total_geral ? por exemplo o subtotal tá assim:

  echo '<td><div id="total" ><strong><font size="5" color="yellow" id="sub'.$linha['id'].'">R$ ' . $_SESSION['sub'] . '</font></strong></div></td>';

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...