Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.preco, 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, $preco, $quantidadecaixa, $grupo, $nome_grupo, $fornecedor) = mysql_fetch_row($Resultado)) {
//Computando preco total
$preco_total = $preco_total + $MeuCarrinho->ObtemSubTotalDeUmItem($id,$preco);
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($preco, 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,$preco), 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 preco por unidade do produto tendo em mãos o codigo dele.
*/
function ObtemPreco($codigo){
$Sql = mysql_query("select preco 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;
}/*
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);/*
ExcluirTodosItens
Este metodo retira todos os itens contidos no carrinho de compras
*/
function ExcluirTodosItens(){
$this->item_quantidade = null;
$this->item_codigo = null;/*
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";
}/*
ObtemNovoPrecoItem
Este metodo obtem o novo preço do ítem baseado no preco 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,$preco){
$posicao = -1;
$achou = $this->ObtemPosicao($id,$posicao);
if ($achou) {
return ($this->item_quantidade[$posicao]*$preco);
}else{
return "erro ao obter sub total do item";
}/*
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]];
}} / Classe TCarrinho /
?>
Carregando comentários...