<?php
/*
Classe TCarrinho
*/
class TCarrinho {
var $item_codigo = array();
var $item_quantidade = array();
var $item_lista = 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,$lista)
{
//Inicializando parametro
$posicao = -1;
$achou = $this->ObtemPosicao($codigo,$posicao);
if (!$achou){
$this->item_codigo[] = $codigo;
$this->item_quantidade[] = $quantidade;
$this->item_lista[] = $lista;
}
} /* 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() */
/*
ObtemNovoPrecoItem
Este metodo obtem o novo preço do ítem baseado no preço calculado antes do carrinho
*/
function ObtemListaItem($codigo){
$posicao = -1;
$achou = $this->ObtemPosicao($codigo,$posicao);
if ($achou) {
return $this->item_lista[$posicao];
}else{
return "erro ao obter Novo Preço do item";
}
} /* ObtemNovoPrecoItem() */
/*
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.
Tenho um carrinho de compras simples.
Gostaria de colocar um botão para adicionar uma unidade de todos os produtos de uma só vez no carrinho.
CVomo eu faço?
carrinho.php
<?php //Verificando se a variavel de sessão foi criada if (!session_is_registered("MeuCarrinho")){ session_register("MeuCarrinho"); $MeuCarrinho = new TCarrinho(); $_SESSION[MeuCarrinho] = serialize($MeuCarrinho); $MeuCarrinho = unserialize($_SESSION[MeuCarrinho]); } $_SESSION[MeuCarrinho] = serialize($MeuCarrinho); $MeuCarrinho = unserialize($_SESSION[MeuCarrinho]); if (!empty($op)){ switch ($op) { case "adicionar": if (!empty($id_prod)){ $Query = "select id from produtos where id = $id_prod"; $R_Query = $MySQL->query($Query); if (mysql_num_rows($R_Query)>0) { foreach($_POST['quan'] as $numero=>$arquivo) { $MeuCarrinho->AdicionarItem($id_prod,$arquivo,$id_lista); } } } break; case "excluir": $MeuCarrinho->RemoverItem($id_prod); break; case "atualizar": $MeuCarrinho->AtualizarCarrinho($_POST); break; case "finalizar": if ($MeuCarrinho->QuantosItens()>0) { echo "<script>document.location='CarrinhoFinal.php?acao=gravar_pedido&preco_total=$preco_total'</script>"; } break; } } if ($MeuCarrinho->QuantosItens()==0) { echo "<table align='center'> <tr><td align=center><p><p><h2>Lista Vazia</h2><p><p></td></tr> <tr><td align=center><p><p><a href=pedidos_fazer.php?acao=mostra_produtos><h2>Mostar Produtos</h2></a><p><p></td></tr> </table>"; } else { $QuerySQL = " select p.id, p.foto, p.nome, p.preço, p.quantidadecaixa, p.grupo, g.nome, p.fornecedor from produtos p inner join grupos g on p.grupo = g.id_grupo " . $MeuCarrinho->QuerySQL_ObtemListaDeItens(). ""; $Resultado = $MySQL->query($QuerySQL); ?> <form method="post" action="carrinho.php?op=atualizar"> <table BORDER=0 CELLSPACING=2 CELLPADDING=4 WIDTH="95%" align="center"> <tr BGCOLOR="#0080C0"><td align="center" colspan="9"><b><font color="#FFFFFF">Pedido</font></b></td></tr> <tr BGCOLOR="#004080"> <td align="center"><b><font color="#FFFF99">Lista</font></b></td> <td align="center"><b><font color="#FFFF99">Foto</font></b></td> <td align="center"><b><font color="#FFFF99">Produto</font></b></td> <td align="center"><b><font color="#FFFF99">Grupo</font></b></td> <td align="center"><b><font color="#FFFF99">QTD na Caixa</font></b></td> <td align="center"><b><font color="#FFFF99">PREÇO UNITÁRIO</font></b></td> <td align="center"><b><font color="#FFFF99">Quantidade</font></b></td> <td align="center"><b><font color="#FFFF99">TOTAL</font></b></td> <td align="center"> </td> </tr> <? $preco_total = 0.00; while(list($id, $foto, $nome, $preço, $quantidadecaixa, $grupo, $nome_grupo, $fornecedor) = mysql_fetch_row($Resultado)) { //Computando preço total $preco_total = $preco_total + $MeuCarrinho->ObtemSubTotalDeUmItem($id,$preço); session_register("preco_total"); include("../global/funcoes_php/foto_ver.php"); echo " <tr> <td align='center'>".$MeuCarrinho->ObtemListaItem($id)."</td> <td align='center'><font size=-1>". $foto2 ."</font></td> <td align='left'><font size=-1>". $nome ."</font></td> <td align='left'><font size=-1>". $nome_grupo ."</font></td> <td align='center'><font size=-1>". $quantidadecaixa ."</font></td> <td align='center'>R$ ". number_format($preço, 2, '.', '')." </td> <td align='center'><font size=-1><input type=TEXT name=". $id ." size=2 value=". $MeuCarrinho->ObtemQuantidadeItem($id) ."></font></td> <td align='center'>R$ ". number_format($MeuCarrinho->ObtemSubTotalDeUmItem($id,$preço), 2, '.', '') ."</td> <td align='center'><b><a href=carrinho.php?op=excluir&id_prod=$id&id_fornece=$fornecedor>Excluir</a></b></td> </tr> "; } ?> <tr><td align="center" colspan="9"> <font color="#FF0000"><b>VALOR TOTAL DO PEDIDO R$ <?=number_format($preco_total, 2, '.', '');?></b></font></td> </tr> <tr><td align="center" colspan="9"> <input type="hidden" name="id_prod" value="<?=$id_produto;?>"> <input type="hidden" name="id_fornece" value="<?=$id_fornece;?>"> <input type="hidden" name="id_lista" value="<?=$id_lista;?>"> <input type="submit" value="Atualizar" name="Atualizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"><br> </td> </tr> </table> </form> <table align="center" width="800"> <tr> <td align="right"> <form method="post" action="pedidos_fazer.php?acao=mostra_produtos"> <input type="hidden" name="id_prod" value="<?=$id_produto;?>"> <input type="hidden" name="id_fornece" value="<?=$id_fornece;?>"> <input type="hidden" name="id_lista" value="<?=$id_lista;?>"> <input type="submit" value="<< Voltar as Compras" name="voltar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </form> </td> <td align="left"> <form method="post" action="carrinho.php?op=finalizar" name='FORM'> <input type="hidden" name="id_lista" value="<?=$id_lista;?>"> <input type="hidden" name="preco_total" value="<?=number_format($preco_total, 2, '.', ''); ?>"> <input type="submit" value="Finalizar Compra >>" name="Finalizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </form> </td> </tr> </table> <? } ?>TCarrinho.php<?php /* Classe TCarrinho */ class TCarrinho { var $item_codigo = array(); var $item_quantidade = array(); var $item_lista = 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,$lista) { //Inicializando parametro $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if (!$achou){ $this->item_codigo[] = $codigo; $this->item_quantidade[] = $quantidade; $this->item_lista[] = $lista; } } /* 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() */ /* ObtemNovoPrecoItem Este metodo obtem o novo preço do ítem baseado no preço calculado antes do carrinho */ function ObtemListaItem($codigo){ $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if ($achou) { return $this->item_lista[$posicao]; }else{ return "erro ao obter Novo Preço do item"; } } /* ObtemNovoPrecoItem() */ /* 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 */ ?>Link para o comentário
Compartilhar em outros sites
2 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.