Jump to content


Photo

Adicionar O Mesmo Item No Carrinho Com Cor Diferente


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 nandotrade

nandotrade

    12 Horas

  • Usuários
  • 124 posts
  • Sexo:Não informado

Posted 10/05/2007, 22:41

Peguei um exemplo de carrinho para montar pedidos de uma representada.
No modelo que busquei cada item selecionado do banco de dados é montado num form com os campos necessários ao carrinho...
Inicialmente serviria perfeitamente para as características dos produtos, mas agora entrará um produto que terá a varíável COR.
Sendo assim, agora posso ter a seguinte situação:

CODIGO = 1
QTD = 2
DESCRICAO = BALDE
PREÇO = 10,00
IPI = 0,05
COR = BRANCO

CODIGO = 1
QTD = 10
DESCRICAO = BALDE
PREÇO = 8,00
IPI = 0,05
COR = VERDE

Só que no form, onde é informado o produto, foto, preço etc, a cor é um campo SELECT com diversas cores, para não ter de criar uma combinação de cores que pode vir a fazer adicionar 200 itens no banco de dados.

A necessidade é criar o carrinho com sessão, onde o cliente tem apenas o código do primeiro produto, depois seleciona a cor desejada, e manda pro carrinho. De lá do carrinho e clica em retornar para a lista de produtos, seleciona novamente o mesmo produto, informa a quantidade e a nova cor.

Ex.?:
<input type="hidden" name="txtprod[<? echo $indice;?>][CODIGO]" value="<? echo $prim_cod; ?>">
<input type="hidden" name="txtprod[<? echo $indice;?>][QTD]" value="<? echo $prim_qtd; ?>">
<input type="hidden" name="txtprod[<? echo $indice;?>][DESCRICAO]" value="<? echo $prim_desc; ?>">
<input type="hidden" name="txtprod[<? echo $indice;?>][PRECO]" value="<? echo $prim_preco; ?>">
<input type="hidden" name="txtprod[<? echo $indice;?>][IPI]" value="<? echo $prim_ipi; ?>">
<input type="hidden" name="txtprod[<? echo $indice;?>][COR]" value="<? echo $prim_cor; ?>">
(OBS: este último campo é um select da cor OK.)

Ao clicar em submit, todos os produtos desta lista são enviados para o script carrinho:

//********* SCRIPT CARRINHO ***********************
include ("../config.php");
//INICIALIZA A SESSÃO
session_start();
//VERIFICA SE TEM PRODUTO NO CARRINHO PARA PUXAR
if(count($_SESSION[cesta]) > 0) {
//PEGA A CHAVE DO ARRAY
$chave = array_keys($_SESSION[cesta]);
//PEGA OS DADOS DA SESSÃO
for($i=0; $i<sizeof($chave); $i++) {
//ÍNDICE
$indice = $chave[$i];
//ATRIBUI
$cesta[$indice][CODIGO] = $_SESSION[cesta][$indice][CODIGO];
$cesta[$indice][IPI ] = $_SESSION[cesta][$indice][IPI];
$cesta[$indice][DESCRICAO]= $_SESSION[cesta][$indice][DESCRICAO];
$cesta[$indice][PRECO] = $_SESSION[cesta][$indice][PRECO];
$cesta[$indice][QTDE] = $_SESSION[cesta][$indice][QTDE];
$cesta[$indice][COR] = $_SESSION[cesta][$indice][COR];

}//FECHA FOR
}//FECHA IF
//VERIFICA SE A OPÇÃO ATUALIZAR FOI SELECIONADA
if($_POST[opc_atualizar]) {
$v_atualiza = $_POST[a_prod]; //RECEBE OS PRODUTOS CHECADOS PARA ATUALIZAÇÃO
$chave = array_keys($v_atualiza); //PEGA A CHAVE DO ARRAY
//EXIBE
for($i=0; $i<sizeof($chave); $i++) {
$indice = $chave[$i]; //PEGA O INDICE DO PRODUTO
$_SESSION[cesta][$indice][QTDE] = $v_atualiza[$indice][QTDE]; //ALTERA A QUANTIDADE DO PRODUTO SELECIONADO
}//FECHA FOR
}//FECHA IF

//VERIFICA SE A OPÇÃO EXCLUIR FOI SELECIONADA
elseif($_POST[opc_excluir]) {
$excluir = $_POST[check]; //RECEBE OS PRODUTOS CHECADOS PARA EXCLUSÃO
//EXIBE
for($i=0; $i<sizeof($excluir); $i++) {
$indice = $excluir[$i]; //PEGA O INDICE DO PRODUTO
unset($_SESSION[cesta][$indice]); //DESTRÓI A VARIÁVEL ESPECIFICADA
}//FECHA FOR
}//FECHA IF

//RECEBE O PEDIDO DO USUÁRIO
elseif($_POST[opc_efetivar]) {
$v_prod = $_POST[txtprod]; //RECEBE AS VARIÁVEIS
$chave = array_keys($v_prod); //PEGA A CHAVE DO ARRAY
//EXIBE
for($i=0; $i<sizeof($chave); $i++) {
$indice = $chave[$i];
if(!empty($v_prod[$indice][QTDE])) {
//GRAVA NO ARRAY CESTA
$cesta[$indice][CODIGO] = $v_prod[$indice][CODIGO];
$cesta[$indice][IPI] = $v_prod[$indice][IPI];
$cesta[$indice][DESCRICAO]= $v_prod[$indice][DESCRICAO];
$cesta[$indice][PRECO] = $v_prod[$indice][PRECO];
$cesta[$indice][QTDE] = $v_prod[$indice][QTDE];
$cesta[$indice][COR] = $v_prod[$indice][COR];
}//FECHA IF
}//FECHA FOR
//GRAVA NA SESSÃO
$_SESSION[cesta] = $cesta;
}//FECHA ELSE

Como faço para quando o usuário voltar na página de seleção de produtos, selecionar o mesmo (ÍNDICE) apenas mudando a quantidade e a cor do produto, e adicioná-lo na sessão com outra númeração maior de indice ou diferente das já utilizadas?




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq