-
Total de itens
27 -
Registro em
-
Última visita
Tudo que ociceromartins postou
-
dutopfave, Como você tem variações de um mesmo produto, o ID do produto sempre será igual. Nesse caso, você precisará fazer dupla verificação. Verificar se o ID já consta no carrinho, se constar e o tamanho for igual, aumenta UM na quantidade. Se constar e o tamanho for diferente, adiciona o produto. Se não constar, simplesmente adiciona. Detalhe é que pra isso, você não pode usar o ID do produto como posição do array no carrinho. 1. Ou você usa índices sequenciais e atribui em cada índice as características do produto; 2. Ou se a única variação que você tiver, for tamanho, pra facilitar você pode usar "id-tam", como índice do array. Segue exemplo para primeira opção: <?php $produtoId = 10; $produtoTam = 41; $existe = false; foreach ($_SESSION['carrinho'] as $key => $carrinho) { // SE JA EXISTIR NO CARRINHO if ($carrinho['id'] === $produtoId) { // SE O TAMANHO FOR IGUAL, ADICIONA UM NA QUANTIDADE if ($carrinho['tamanho'] === $produtoTam) { $_SESSION['carrinho'][$key]['quantidade'] += 1; $existe = true; break; } // SE O TAMANHO FOR DIFERENTE, INSERE UMA NOVA POSICAO NO ARRAY else { $_SESSION['carrinho'][] = ['id' => $produtoId, 'tamanho' => $produtoTam, 'quantidade' => 1]; $existe = true; } } } // DEPOIS DE PERCORRER TODO O CARRINHO, SE NAO EXISTIR if (!$existe) { $_SESSION['carrinho'][] = ['id' => $produtoId, 'tamanho' => $produtoTam, 'quantidade' => 1]; } ?> Segue exemplo para segunda opção: <?php $produtoId = 10; $produtoTam = 41; // SE EXISTIR NO CARRINHO if (!empty($_SESSION['carrinho']["$produtoId-$produtoTam"])) { $_SESSION['carrinho']["$produtoId-$produtoTam"] += 1; } // SE NAO EXISTIR else { $_SESSION['carrinho']["$produtoId-$produtoTam"] = 1; } ?> No caso acima, pra você pegar os produtos e os respectivos tamanhos, bastaria fazer um foreach e dar um explode('-', $array). Na posição 0 você teria o ID, na posição 1 você teria o tamanho. Na minha opinião pessoal, a segunda alternativa só é mais viável, se você tiver somente essa variação no seu sistema. Do contrário, o ideal seria usar a primeira solução, visto que você poderá fazer quantas comparações quiser! Um abraço!
- 4 respostas
-
- php
- carrinho de compras
-
(e mais 1 )
Tags:
-
Fabiano, O projeto que está desenvolvendo é em PHP? Ou HTML e CSS puro? Se for em PHP ou qualquer outra linguagem processada, acredito que o mais viável seria você faz as condicionais na programação e entregar uma classe pra pintar com CSS. Exemplo em PHP: <?php $valor = 10; switch ($valor) { case 1: $cor = 'laranja'; break; case 2: $cor = 'verde'; break; case 3: $cor = 'azul'; break; default: $cor = 'rosa'; break; } ?> <div class="cor-<?= $cor; ?>"> Aqui vem o conteúdo da DIV. </div> No caso acima, você vai ter o retorno em classes, exemplo: cor-laranja cor-verde cor-azul cor-rosa Aí é só você criar as classes no CSS e trabalhar como quiser. Um abraço!