Ir para conteúdo

POWERED BY:

Arquivado

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

New Job

[Resolvido] Desconto progressivo

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

$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

×

Informação importante

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