Tudo funciona bem, a listagem dos produtos e tudo mais. Porem, assim que adiciona um produto ao carrinho, ele é adidionado. Ao adicionar o segundo produto ao carrinho, parece que o Objeto CarrinhoDao é perdido e criado um novo.
E, nesse caso, não consigo ter 2 produtos no carrinho.
Onde estou errando?
Sim,na primeira linha de todas as páginas tem session_start();
Pergunta
Carlos Rocha
Olá, estou tentando fazer com que haja apenas 1 instancia do objeto da minha classe Carrinho.
Mas por mais que eu tente, não dá certo!
Classe CarrinhoDao.php
CarrinhoConteudo.php
<h1 class="h1Centralizado"> Carrinho </h1> <?php require_once "controlls/util/Conexao.php"; require_once "controlls/models/Produtos.php"; require_once "controlls/models/Carrinho.php"; require_once "controlls/daos/ProdutosDao.php"; require_once "controlls/daos/CarrinhoDao.php"; require_once "controlls/util/PhpUtil.php"; $connection = new Conexao(); $conexao = $connection->abreConexao(); $produtoDao = new ProdutosDao($conexao); $phpUtil = new PhpUtil(); //Verificando se a variavel de sessão foi criada if(!isset($_SESSION["MeuCarrinho"])) { $CarrinhoDaoO = CarrinhoDao::getInstancia(); $_SESSION["MeuCarrinho"] = serialize($CarrinhoDaoO); } $CarrinhoDao = unserialize($_SESSION["MeuCarrinho"]); session_write_close(); print "<pre>"; print_r($CarrinhoDao->getCarrinho()); print "</pre>"; ?> <?php if(isset($_GET["acao"]) && $_GET["acao"] == "adicionar") { $novoProduto = $produtoDao->pesquisaProdutoEdicao($_GET["idProduto"]); if($novoProduto != null) { $CarrinhoDao->insereProduto($novoProduto, 1); } //header("Location: ?"); } ?> <?php if(isset($_GET["acao"]) && $_GET["acao"] == "excluir") { $CarrinhoDao->removeItem($_GET["indice"]); //header("Location: ?"); } ?> <?php /* f$CarrinhoDao->alteraItem(2, 123); */ $mensagem = "Deseja excluir este Produto?"; $imagem = "<img src='_img/bloquear.png' height=30px title='Excluir Produto' />"; echo "<table style='width:800px'"; echo " <tr>"; echo " <th>Produto</th>"; echo " <th>Tamanho</th>"; echo " <th>Preço Unitário</th>"; echo " <th>Quantidade</th>"; echo " <th>Preço Total</th>"; echo " <th>Remover</th>"; echo " </tr>"; foreach ($CarrinhoDao->getCarrinho() as $k=>$produto) { echo " <tr>"; echo " <td style='text-align:left'>".$produto[0]->getNome()."</td>"; echo " <td style='text-align:center'>".$produto[0]->getTamanho()."</td>"; echo " <td style='text-align:right'>".$phpUtil->formataMoeda($produto[0]->getPreco())."</td>"; echo " <td style='text-align:center'><input type='text' id='qtde' name='qtde' class='typetextpequeno' style='text-align:right' value='".$produto[1]."'></td>"; echo " <td style='text-align:right'>".$phpUtil->formataMoeda($produto[0]->getPreco() * $produto[1])."</td>"; echo " <td style='text-align:center'><a href='?acao=remove&indice=".$k."' onclick=\"return verifica('".$mensagem."')\" '>".$imagem."</a>"; echo " </tr>"; } echo "</table>"; print "<pre>"; print_r($CarrinhoDao->getCarrinho()); print "</pre>"; ?>Página de produtos
Tudo funciona bem, a listagem dos produtos e tudo mais. Porem, assim que adiciona um produto ao carrinho, ele é adidionado. Ao adicionar o segundo produto ao carrinho, parece que o Objeto CarrinhoDao é perdido e criado um novo.
E, nesse caso, não consigo ter 2 produtos no carrinho.
Onde estou errando?
Sim,na primeira linha de todas as páginas tem session_start();
Editado por Carlos RochaLink para o comentário
Compartilhar em outros sites
1 resposta 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.