Ir para o conteúdo
rexmage

Problema de carrinho de compras

Mensagens Recomendadas

rexmage

Boas pessoal,

Surgiu-me aqui um problema e eu não estou a ver como corrigir. Precisava ai de uma ajuda vossa. Então o problema é o seguinte:

Tenho um projecto com tintas que adiciona-se quantidades de várias cores.

Cada cor, é chamado "color_IDPRODUTO_IDCOR => QUANTIDADE".

Quando chega à função, ele faz isto

 foreach ($_POST as $key => $value) {
  if($value != ''){
   if(preg_match('/color_/',$key)){
   
    $partir_key = explode('_' , $key);
   
    $produto = $partir_key[1];
    $cor = $partir_key[2];
    $quantidade = $value;
   
    //echo $produto.' - '.$cor.' - '.$quantidade.'<br/><br/>';
    add_to_carrinho($produto, $cor, $quantidade);
   }
  }
 }

Depois dentro da função add_to_carrinho

//TIPO 1 (ID, COR, QUANTIDADE)
function add_to_carrinho($produto, $cor, $quantidade) {
 $carrinho = $_SESSION["carrinho"];
 
 if( count($carrinho) == 0 ){
  array_push($_SESSION["carrinho"], $produto.'_'.$cor.'_'.$quantidade);
 }else{
 
  foreach($carrinho as $key => $valor) {
   $carrinho_idvalue    = explode("_" ,$valor);
   $carrinho_produto_id  = $carrinho_idvalue[0];    
   $carrinho_cor_id    = $carrinho_idvalue[1];    
   $carrinho_quantidade_id = $carrinho_idvalue[2];
  
  
   $todos_prods = array();
   array_push( $todos_prods, $carrinho_cor_id);
  }
 
  $todos_prods = $_SESSION["carrinho"];
 
  if( in_array($produto , $todos_prods) ){
   if($cor == $carrinho_cor_id){
    $quantidade_old = $carrinho_quantidade_id;
    $new_value = $quantidade_old + $quantidade;
   
    unset($_SESSION["carrinho"][$key]);
    array_push($_SESSION["carrinho"], $produto.'_'.$cor.'_'.$new_value);
   }else{
    array_push($_SESSION["carrinho"], $produto.'_'.$cor.'_'.$quantidade);
    //echo  $produto.'_'.$cor.'_'.$quantidade.'<br/>';
   }
  }else{
   if($carrinho_quantidade_id == $quantidade){ }else{
    array_push($_SESSION["carrinho"], $produto.'_'.$cor.'_'.$quantidade);
   }
  }
 }
}

OBJECTIVO FINAL: adicionar produtos ao carrinho com a seguinte estrutura: array(PROD_COR_QUANTIDADE);

PROBLEMA: Se for adicionar uma cor que não exista no carrinho de compras, ele funciona 100%. NO entanto se adicionar uma cor existente, ele cria uma nova cor no carrinho, mas é a mesma.

Alguma ideia ?

Tnks

Editado por brunoais
geshi

<?PHP echo "Bo0m"; ?>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MoshMage
ele cria uma nova cor no carrinho, mas é a mesma.

consegues-nos dar um

var_dump($produto);
var_dump($todos_prods);
var_dump($cor);
var_dump($new_value);
var_dump($quantidade);

E outro var_dump qualquer que seja necessário? É que não consegui perceber o que queres dizer com "ele cria uma nova cor no carrinho, mas é a mesma."


If all Else fails, use Else If;

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

no que toca à solução usada, só vou comentar que eu nunca faria desse modo.

agora, para resolver o teu problema usando o teu "modelo" :

function add_to_carrinho($produto, $cor, $quantidade) {
   $inserted = false;
   foreach ($_SESSION['carrinho'] as $key => $entrada) {
       list($eproduto, $ecor, $equantidade) = explode("_", $entrada);
       if ($eproduto == $produto && $ecor == $cor) {
           $_SESSION['carrinho'][$key] = $produto.'_'.$cor.'_'.($equantidade + $quantidade);
           $inserted = true;
       }
   }

   if (!$inserted)
       $_SESSION["carrinho"][] = $produto.'_'.$cor.'_'.$quantidade;
}

  • Voto 1

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rexmage

Resolvido HappyHippyHippo, obrigado!

Posso só perguntar-te como farias ?

pensei em usar tipo: $_SESSION['carrinho']['PROD_ID']['COR_ID']['QUANTIDADE_ID'], mas não seria mais lento o acesso ?

Obrigado de qualquer forma, resolveu o problema que tinha.


<?PHP echo "Bo0m"; ?>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

a diferença no tempo de acesso é despresável (senão menor), em comparação com o código/processo de "partir" o ID para se poder manusear a informação necessária


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.