Ir para conteúdo
Fórum Script Brasil
  • 0

Duvidas de como listar os produtos em codigo em OOP


mestre fyoda

Pergunta

<?php

class Produto {

var $codigo;
var $descricao;
var $preço;
var $quantidade;

    function Produto($codigo,$descricao,$preço,$quantidade) {
        $this->codigo = $codigo;
        $this->descricao = $descricao;
        $this->preço = $preço;
        $this->quantidade = $estoque;
    }

    function getCodigo() {
        return this->codigo;
    }

    function getQuantidade() {
        return this->getQuantidade;
    }

    function setQuantidade($quantidade) {
        this->quantidade = $quantidade;
    }

    function getSubTotal() {
        return this->preço * this->quantidade;
    }
}


class CarrinhoDeCompras() {

var $carrinho;

    //Coloca o novo Carrinho de Compras na sessão
    function CarrinhoDeCompras() {
        session_start();
        $_SESSION["carrinho"] = new Array();
    }

    //Atualiza os dados da sessão
    function atualizaDados() {
        $_SESSION["carrinho"] = $this->carrinho;
    }

    //Pega os dados da sessão
    function getCarrinho() {
        $this->carrinho = $_SESSION["carrinho"];
    }

    //Adiciona um item no carrinho de compras
    function adicionaItem($produto) {
        //Pega os dados atualizados da sessão
        $this->getCarrinho();
        $codigo = $produto->getCodigo();
        //Seo produto ainda não está no carrinho adicione
        if ($this->arrinho[codigo] != null) {
            $this->carrinho[codigo] = $produto;
        }
        //Caso contrário, apenas incremente a quantidade do produto já existente
        else {
            $quantidade = $produto->getQuantidade() + 
            $carrinho[$codigo]->getQuantidade();
            $this->carrinho[$codigo]->setQuantidade($quantidade);
        }
        //Atualiza os dados da sessão
        $this->atualizaDados();
    }

    //Remove um item do carrinho de compras
    function removeItem($produto) {
        $this->getCarrinho();
        $codigo = $produto->getCodigo();
        unset($this->carrinho[codigo]);
        $this->atualizaDados();
    }
    
    //Calcula o subTotal do produto
    function subTotal($produto) {
        $this->getCarrinho();
        $codigo = $produto->getCodigo();
        return $produto->getSubTotal();
    }

    //Pega o valor total das compras do usuário
    function getTotal() {
        $this->getCarrinho(); 
        $total = 0;
        foreach($this->carrinho as $produto) {
            $total += $produto->getSubTotal();
        }
        return $total;
    }

}

?>

Como eu faço para listar os produtos no carrinho de compra ?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá mestre fyoda,

Testei o seu código, e não obtive um resultado, pois este código está com muitas falhas...

A função para você ver um carrinho de compras é esta aqui, basta colocar ela na classe CarrinhoDeCompras:

function verCarrinho() {
        $this->getCarrinho();
        $car = array();
        foreach($this->carrinho as $produto) {
            $car[] = array( 'codigo' => $produto->getCodigo(),
                            'descricao' => $produto->descricao,
                            'preço' => $produto->getSubTotal(),
                            'quantidade' => $produto->getQuantidade()
                          );
        }
        return $car;
    }
Para você ver o resultado de como sairá esta função, basta colocar um simples código de teste como este:
$a = new CarrinhoDeCompras();
$prod = new Produto(0002,"Descrição teste","1.00",2);
$a->adicionaItem($prod);
print "<pre>";
var_dump($a->verCarrinho());
print "</pre>";
E gostaria de te ajudar a consertar algumas falhas que contém em seu código, segue abaixo umas dicas aí: Primeiramente gostaria de ressaltar, que variáveis em PHP somente podem conter letras de a-z e números, e nada de caracteres como C-Cedilha, conforme colocou em seu código na variável $preço. E também, quando for chamar alguma variável que cotenha na classe(Exemplo: Codigo, Descricao), você chama a variável $this, que se refere a variáveis da classe. Exemplo:
print $this->valor;
Você apenas esqueceu de colocar o Cifrão ($) no This em algumas as variáveis ;) Na linha 61, que se refere:
//Seo produto ainda não está no carrinho adicione
        if ($this->carrinho[$codigo] != null) {
Troque por:
//Seo produto ainda não está no carrinho adicione
        if ($this->carrinho[$codigo] == null) {
Pois você a função que ele realiza ao ver que não existe este código, é adicionar ao carrinho, e não substituir um já existente. E na linha 66 à 68, que se refere:
$quantidade = $produto->getQuantidade() +
            $carrinho[$codigo]->getQuantidade();
            $this->carrinho[$codigo]->setQuantidade($quantidade);

Contém erros, que eu infelizmente não consegui resolver para te ajudar... (Olha a hora também 12:29AM... rs, sono danado)

Espero que alguém possa te ajudar nesta parte.

Espero ter ajudado...

Link para o comentário
Compartilhar em outros sites

  • 0

<?php
session_start();
class Produto {

var $codigo;
var $imagem;
var $descricao;
var $presente;
var $preço;
var $quantidade;

    function Produto($codigo, $imagem, $descricao, $presente, $quantidade, $preço) {
        $this->codigo = $codigo;
        $this->imagem = $imagem;
        $this->descricao = $descricao;
        $this->presente = $presente;
        $this->quantidade = $quantidade;
        $this->preço = $preço;
    }

    function getCodigo() {
        return $this->codigo;
    }

    function getQuantidade() {
        return $this->quantidade;
    }

    function setQuantidade($quantidade) {
        $this->quantidade = $quantidade;
    }

    function getSubTotal() {
        return $this->preço * $this->quantidade;
    }
}


class CarrinhoDeCompras {

var $carrinho;

    //Coloca o novo Carrinho de Compras na sessão
    function CarrinhoDeCompras() {
        $_SESSION["carrinho"] = Array();
    }

    //Atualiza os dados da sessão
    function atualizaDados() {
        $_SESSION["carrinho"] = $this->carrinho;
    }

    //Pega os dados da sessão
    function getCarrinho() {
        $this->carrinho = $_SESSION["carrinho"];
    }

    //Adiciona um item no carrinho de compras
    function adicionaItem($produto) {
        //Pega os dados atualizados da sessão
        $this->getCarrinho();
        $codigo = $produto->getCodigo();
        //Seo produto ainda não está no carrinho adicione
        if (!isset($this->carrinho[$codigo])) {
            $this->carrinho[$codigo] = $produto;
            //Atualiza os dados da sessão
        }
        $this->atualizaDados();
    }

    //Remove um item do carrinho de compras
    function removeItem($produto) {
        $this->getCarrinho();
        $codigo = $produto->getCodigo();
        unset($this->carrinho[$codigo]);
        $this->atualizaDados();
    }
    
    //Aletra a quantidade do carrinho de compras
    function alteraQuantidade($produto, $quantidade) {
        $this->getCarrinho();
        $codigo = $produto->setQuantidade($quantidade);
        $this->atualizaDados();
    }    
    
    //Pega o valor total das compras do usuário
    function getTotal() {
        $this->getCarrinho(); 
        $total = 0;
        foreach($this->carrinho as $produto) {
            $total += $produto->getSubTotal();
        }
        return number_format($total, 2, ",", ".");
    }
    
    function verCarrinho() {
        $this->getCarrinho();
        $car = array();
        foreach($this->carrinho as $produto) {
            echo"<tr>
                     <td valign='middle' align='center'><img src='imagens_produto/". $produto->imagem ."' width='80' height='80' /></td>
                     <td valign='middle'>". $produto->descricao ."</td>
                     <td valign='middle' align='center'><input type='text' class='qtd' name='qtd[".$produto->getCodigo()."]' value='".$produto->quantidade."'/></td>";
                   if( $produto->presente == "N" )
              echo"<td valign='middle' align='center'><input type='checkbox' name='presente' align='absmiddle'/><img src='imagens/presente.png' alt='Para Presente' value='S'>";
                   else if( $produto->presente == "S" )
              echo"<td valign='middle' align='center'><input type='checkbox' name='presente' align='absmiddle' checked='checked' value='S'/><img src='imagens/presente.png' alt='Para Presente'></td>";
              echo"<td valign='middle' align='center'><a href='cart.php?acao=del&cod=". $produto->getCodigo() ."'><img src='imagens/cart_remove.png' border='0' /></td>
                     <td valign='middle' align='center'>R$ ". number_format($produto->preço, 2, ",", ".") ."</td>
                     <td valign='middle' align='center'>R$ ". number_format($produto->getSubTotal(), 2, ",", ".") ."</td>
                </tr>";
        }
    }
}

?>
Antes realmente estava com muitos problemas agora tem apenas 1 deles, quando deleto da erro
Fatal error: Call to a member function getCodigo() on a non-object in C:\Servidor PHP\www\class_ecommerce.php on line 74.
alguém poderia me ajudar a arrumar o erro que esta dando quando deleta e poderia me ajudar a fazer a parte que falta para atualizar todas as quantidades ?
<?
    include("con_sql.php");
    include("class_ecommerce.php");

    $acao = $_GET["acao"];
    $carrinho = new CarrinhoDeCompras();

    if( $acao == "adi" ){
        $prod = new Produto(2, "principal.png", "Descrição teste", "N", 2, "12.00");
        $carrinho->adicionaItem($prod);
        $prod = new Produto(3, "principal.png", "Computador Dual Core", "S", 4, "1000.00");
        $carrinho->adicionaItem($prod);
    }
    else if( $acao == "del" ){
        $cod_produto = $_GET["cod"];
        $carrinho->removeItem($cod_produto);
    }
    else if( $acao == "atu" ){
    }

?>

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...