New Job 0 Denunciar post Postado Junho 1, 2010 Bom dia pessoal. Estou com a seguinte dúvida ao montar um carrinho de compras. Tenho a seguinte situação: Pedido: Quantidade | Nome | Valor unitário | Subtotal 02 produto 1 10,00 20,00 01 produto 2 10,00 10,00 TOTAL = 30,00 Até ai perfeito! Porém gostaria de estipular um desconto progressivo de acordo com a quantidade de produtos solicitados. Ex: compra 1 produto = desconto 0% compra 2 produto = desconto 10% compra 3 produto = desconto 20% As contas da porcentagem está tudo pronto, porém o que eu não estou conseguindo é fazer a soma do TOTAL de produtos comprados para poder estipular o desconto. Segue o code que monta o carrinho <?php $f=0; $chave_cesta = @array_keys($_SESSION["cesta"]); $_SESSION["itens_carrinho"] = sizeof($chave_cesta); for($i=0; $i<sizeof($chave_cesta); $i++) { $fundo = ($f % 2) == 1 ? "#FFFFFF" : "#FFFFFF"; $f++; $indice = $chave_cesta[$i]; $sql = sql_exec("SELECT cod_produto, des_produto, valor FROM produtos WHERE cod_produto = ".$indice); $row = mysql_fetch_assoc($sql); $valor = $row["valor"]; $subtotal = $valor * $_SESSION["cesta"][$indice]; $valor_total_produtos += $subtotal; ////////////descontos//////////////////// //se compra só um if ( $valor_total_produtos == 138.00 ) { $desc = "não tem desconto desconto!"; $_SESSION["valor_itens"] = $valor_total_produtos; } //se compra 2 elseif ( $valor_total_produtos == 276.00 ) { $porcentagem = 5; // porcentagem $defineporc = ($porcentagem/100); // cálculo $desconto = ($defineporc*$valor_total_produtos); $totalcomdesconto = number_format($valor_total_produtos-$desconto, 2, ',', ''); $desc = "Você ganhou 5% de desconto!"; $_SESSION["valor_itens"] = $totalcomdesconto; } ?> <tr bgcolor="<?=$fundo?>"> <td height="20"><input type="checkbox" name="check[]" id="check[]" value="<?=$indice?>"></td> <td height="25" align="center"><input type="text" name="a_prod[<?=$indice?>]" value="<?=$_SESSION["cesta"][$indice]?>" size="1" maxlength="3" class="campo_form"></td> <td class="texto"><?=stripslashes($row["des_produto"])?></td> <td align="right" class="texto"><?=reais($valor)?></td> <td align="right" class="texto"><?=reais($subtotal)?></td> </tr> <? } ?> Alguém ai pode me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
borsatti 2 Denunciar post Postado Junho 1, 2010 oh, fiz um exemplo para você, espero que ajude. <?php $valores = "10"; $quantidade = "5"; if ($quantidade > 1 && $quantidade < 5) { $desconto = (5*$quantidade); } else if($quantidade >= 5) { $desconto = "20"; } $valorDesconto = ($valores*$desconto) /100; echo "Você recebeu o desconto de R$".$valorDesconto; ?> Compartilhar este post Link para o post Compartilhar em outros sites
New Job 0 Denunciar post Postado Junho 1, 2010 Boa tarde amigo. Cara essa parte do desconto eu já tinha pronta. O problema para mim está em definir o TOTAL DE PRODUTOS COMPRADOS. Pois eu não tenho esta variável. O produto fica assim: Quantidade: <input type="text" name="a_prod[<?=$indice?>]" value="<?=$_SESSION["cesta"][$indice]?>" size="1" maxlength="3" class="campo_form"> Como somar todos estes campos do form? Compartilhar este post Link para o post Compartilhar em outros sites
borsatti 2 Denunciar post Postado Junho 1, 2010 cara, cada vez que ele poem o produto no carrinho voce grava uma variavel de sessao, nao grava ? então, da um count nela ou um sizeof Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Junho 1, 2010 o número de produtos no carrinho pode ser obtido com a seguinte linha: echo "Você comprou " . sizeof($_SESSION['cesta']) . " produtos."; Compartilhar este post Link para o post Compartilhar em outros sites
New Job 0 Denunciar post Postado Junho 1, 2010 Bom acho que estou no caminho, ja consegui definir uma variável para a quantidade de produtos. Basta fazer a soma agora. Produto A <?=$quantos = $_SESSION["cesta"][$indice];?> Produto B <?=$quantos = $_SESSION["cesta"][$indice];?> Produto C <?=$quantos = $_SESSION["cesta"][$indice];?> Fica assim Produto A - 1 Produto B - 2 Produto C - 5 Preciso agora é somar essa variável $quantos Estou tentando fazer com a função count, mas não está rolando.... Compartilhar este post Link para o post Compartilhar em outros sites
borsatti 2 Denunciar post Postado Junho 1, 2010 tentou a sizeof() ? mas o que o evandro falou ta certo.. coloque echo sizeof($_SESSION['cesta']); Compartilhar este post Link para o post Compartilhar em outros sites
New Job 0 Denunciar post Postado Junho 1, 2010 o número de produtos no carrinho pode ser obtido com a seguinte linha: echo "Você comprou " . sizeof($_SESSION['cesta']) . " produtos."; Evandro. Deste modo ele lista somente o numero de "tipos de produtos" e não o total Se você comprou por exemplo um tênis, uma meia e dois sapatos o resultado é 3, porém o resultado esperado é 4. To quebrando a cabeça aqui!!! Ps. obrigado pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Junho 1, 2010 O armazenamento dentro da cesta deveria ficar assim: $_SESSION => Array: cesta => Array: [idProduto] => Quantidade [idProduto] => Quantidade ... a consulta de preços deveria ser feita assim: $sql = 'SELECT `idProduto`,`preco_unitario` FROM `protudos` WHERE `idProduto` IN (' . implode(',',array_keys($_SESSION['cesta'])) . ')'; Isso retornará uma tabela contendo id e valor de produto. Próximo passo, iterar em cada produto da cesta acrescendo duas variáveis: Subtotal e Itens $rs = mysql_query($sql); // Recuperamos a tabela contendo os preços $tabela_valores = array(); while(false !== ($row = mysql_fetch_assoc($rs))) $tabela_valores[$row['idProduto']] = $row['preco_unitario']; /* Neste momento, $tabela_valores é uma matriz no formato idPdroduto=>preco_unitario */ $subTotal = 0; $itens = 0; foreach($_SESSION['cesta'] as $id=>$qtd){ $subTotal += $tabela_valores[$id]; $itens =+ $qtd; } Está feito. O valor total do carrinho está dentro de $subTotal e a quantidade total de itens comprados está dentro de $itens. Nota: Apenas UMA consulta ao banco. Compartilhar este post Link para o post Compartilhar em outros sites
New Job 0 Denunciar post Postado Junho 1, 2010 Evandro, não rolou como você anteriormente, continua retornando o numero de "tipos" de produtos. Estou tentando fazer como está aqui em cima. Alguma idéia para me retornar o TOTAL de $quantos? Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Junho 1, 2010 Aonde está sendo armazenado o total de cada produto? Compartilhar este post Link para o post Compartilhar em outros sites
New Job 0 Denunciar post Postado Junho 1, 2010 Deste modo: Produto A - <?=$quantos = $_SESSION["cesta"][$indice];?> - 1,00 Produto B - <?=$quantos = $_SESSION["cesta"][$indice];?> - 2,00 Produto C - <?=$quantos = $_SESSION["cesta"][$indice];?> - 1,00 Fica assim Produto A - 1 - 1,00 SUBTOTAL = 1,00 Produto B - 2 - 2,00 SUBTOTAL = 4,00 Produto C - 5 - 1,00 SUBTOTAL = 5,00 TOTAL = 10,00 Preciso é somar a quantidade total de produtos comprados tentei fazer assim: $totalprodutos = count($quantos); Mas não foi, ele soma somente o total do Produto A. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Junho 1, 2010 Você está sobrescrevendo a variável $quantos. O que quero saber é, quando eu clico em COMPRAR um produto, aonde a quantidade desse produto está sendo armazenada?? Compartilhar este post Link para o post Compartilhar em outros sites
New Job 0 Denunciar post Postado Junho 2, 2010 Você está sobrescrevendo a variável $quantos. O que quero saber é, quando eu clico em COMPRAR um produto, aonde a quantidade desse produto está sendo armazenada?? Opa. segue abaixo como é feito o armazenamento: //ADICIONA NO CARRINHO if ( isset($_POST["adicionar"]) ) { foreach ( $_POST["prod"] as $prod => $qtde ) { if ( $qtde != 0 ) { $cesta[$prod] = $qtde; } } $_SESSION["cesta"] = $cesta; } Alguém ai pode me dar uma mão? Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Junho 2, 2010 $itens = 0; foreach($_SESSION['cesta'] as $produto) $itens += $produto; Compartilhar este post Link para o post Compartilhar em outros sites
New Job 0 Denunciar post Postado Junho 2, 2010 $itens = 0; foreach($_SESSION['cesta'] as $produto) $itens += $produto; Meu ídolo! Funcionou! Vou montar agora o desconto de acordo com os produtos. Qualquer nova dúvida posto aqui! Muito obrigado! Compartilhar este post Link para o post Compartilhar em outros sites