Tenho um carrinho de Compras, basico. Acontece que, na interface para uso dele, será o administrador que irá usá-lo para criar uma lista de produtos que será disponiblizadas para o seu cliente comprar.
Tipo assim: Tem o cadastro de produtos normal. Pore, nem todos os produtos o administrador colocará à dispozição dos seu clientes para que eles possam comprar. Então, estou usando um carrinho de compras para ele poder criar uma lista com os produtos desejados.
Acontece, que ele quer tambem, alterar o preço do produto no momento da colocação dele no carrinho, e, quando ele clika em voltar para escolher outro produto, la se vai embora o novo preço que ele colocou.
Como faço para resolver isso? Alguma ideia ou derepente uma nova forma de fazer essa lista?
<?php
/*
Classe TCarrinho
*/
class TCarrinho {
var $item_codigo = array();
var $item_quantidade = array();
/*
ObtemPosicao
Este metodo obtem a posicao de um item mediante ao seu codigo, retornando um valor booleano e gravando a posicao na variavel de referencia $posicao, caso o codigo do item esteja no carrinho.
*/
function ObtemPosicao($codigo,&$posicao){
//Percorrendo o vetor
for($i=0;$i<count($this->item_codigo);$i++) {
if ($this->item_codigo[$i] == $codigo) {
$posicao = $i;
return TRUE;
}
}
}/* ObtemPosicao() */
/*
ObtemPreco
Este metodo obtem o preço por unidade do produto tendo em mãos o codigo dele.
*/
function ObtemPreco($codigo){
$Sql = mysql_query("select preço from produtos where id = $codigo");
list($preco_uni) = mysql_fetch_row($Sql);
return $preco_uni;
//return mysql_result($sql,0,0);
}/* ObtemPreco() *
/*
AdicinarItem
Este metodo adiciona um item no carrinho
*/
function AdicionarItem($codigo,$quantidade)
{
//Inicializando parametro
$posicao = -1;
$achou = $this->ObtemPosicao($codigo,$posicao);
if (!$achou){
$this->item_codigo[] = $codigo;
$this->item_quantidade[] = $quantidade;
}
} /* AdicionarItem() */
/*
RemoverItem
Este metodo remove um item do carrinho de compra, passando o codigo do produto
*/
function RemoverItem($codigo)
{
//Inicializando parametro
$posicao = -1;
$achou = $this->ObtemPosicao($codigo,$posicao);
if ($achou){
//Removendo o elemento do vetor
array_splice($this->item_codigo, $posicao, 1);
array_splice($this->item_quantidade, $posicao, 1);
}
} /* RemoveItem() */
/*
QuantosItens
Este metodo retorna a quantidade de itens incluidas no carrinho de compras
*/
function QuantosItens() {
return count($this->item_quantidade);
} /* QuantosItens() */
/*
ExcluirTodosItens
Este metodo retira todos os itens contidos no carrinho de compras
*/
function ExcluirTodosItens(){
$this->item_quantidade = null;
$this->item_codigo = null;
} /* ExcluirTodosItens() */
/*
QuerySQL_ObtemListaDeItens
Este metodo gera uma parte do codigo SQL que sera usado para buscar os dados
do carrinho de compra (id, NOME e PREÇO). O comando SQL final tera como finalidade
de buscar no banco de dados apenas os dados dos itens incluidos no carrinho.
*/
function QuerySQL_ObtemListaDeItens(){
$itens = "where ";
$STR = "";
if ($this->QuantosItens()>0) {
$fixo = " id =";
for ($i=0;$i<$this->QuantosItens();$i++){
$STR = $STR . $fixo . " " . $this->item_codigo[$i];
if ($i+1<$this->QuantosItens()) {
$STR = $STR . " or ";
}
}
}
if (!$STR == "") {
return $itens . $STR;
}else{
//Caso não exista nenhum item no carrinho o codigo final SQL, procurara por um item que não existe na tabela de produtos, neste caso -1.
return "where id = -1";
}
} /* QuerySQL_ObtemListaDeItens() */
/*
ObtemQuantidadeItem
Este metodo obtem a quantidade de um Item
*/
function ObtemQuantidadeItem($codigo){
$posicao = -1;
$achou = $this->ObtemPosicao($codigo,$posicao);
if ($achou) {
return $this->item_quantidade[$posicao];
}else{
return "erro ao obter quantidade do item";
}
} /* ObtemQuantidaItem() */
/*
ObtemSubTotalDeUmItem
Este metodo retorna o subtotal de um item (QUANTIDADE * VALOR UNITARIO)
*/
function ObtemSubTotalDeUmItem($id,$preço){
$posicao = -1;
$achou = $this->ObtemPosicao($id,$posicao);
if ($achou) {
return ($this->item_quantidade[$posicao]*$preço);
}else{
return "erro ao obter sub total do item";
}
} /* ObtemSubTotalDeUmItem() */
/*
AtualizarCarrinho
Este metodo coleta todos as variaveis enviadas pelo FORMULARO (method="POST")
e atualiza as quantidades dos itens.
*/
function AtualizarCarrinho(&$VAR_ENVIADAS_PELO_BROWSER){
//Percorrendo a lista de itens e atualizando suas quantidades
for ($i=0;$i<$this->QuantosItens();$i++){
$this->item_quantidade[$i] = $VAR_ENVIADAS_PELO_BROWSER[$this->item_codigo[$i]];
}
} /* AtualizarCarrinho() */
} /* Classe TCarrinho */
?>
Pergunta
Carlos Rocha
Pessoal.
Bom dia!
Seguinte:
Tenho um carrinho de Compras, basico. Acontece que, na interface para uso dele, será o administrador que irá usá-lo para criar uma lista de produtos que será disponiblizadas para o seu cliente comprar.
Tipo assim: Tem o cadastro de produtos normal. Pore, nem todos os produtos o administrador colocará à dispozição dos seu clientes para que eles possam comprar. Então, estou usando um carrinho de compras para ele poder criar uma lista com os produtos desejados.
Acontece, que ele quer tambem, alterar o preço do produto no momento da colocação dele no carrinho, e, quando ele clika em voltar para escolher outro produto, la se vai embora o novo preço que ele colocou.
Como faço para resolver isso? Alguma ideia ou derepente uma nova forma de fazer essa lista?
Segue o carrinho que estou usando e a classe php.
carrinho.php
TCarrinho.phpLink para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.