Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Fatal Error - Não consigo Inserir produtos no banco

Mensagem de Erro: Fatal error: Uncaught Error: Call to a member function insereProduto() on null in C:\xampp\htdocs\dashboard\www\ALURA\LOJA\adicionar-produto.php:26 Stack trace: #0 {main} thrown in C:\xampp\htdocs\dashboard\www\ALURA\LOJA\adicionar-produto.php on line 26


        <?php require_once("cabecalho.php"); ?>
        <?php require_once("logica-usuario.php");?>


           <?php

            verificaUsuario();

            $categoria = new Categoria(); 
            $categoria->setId($_POST["categoria_id"]);

            $produto = new Produto();
              $produtaDAO = new ProdutoDAO($conexao);      

            $produto->setNome($_POST["nome"]);
            $produto->setPreco($_POST["preco"]);
            $produto->setDescricao($_POST["descricao"]);
            $produto->setCategoria($categoria);
            if(array_key_exists('usado', $_POST)) {
                    $produto->setUsado("true");
            } else {
                   $produto->setUsado("false");
            }
            var_dump($produto);

            if ($produtoDAO->insereProduto($produto)){ ?>
                <p class="text-sucess">O produto <?= $produto->getNome()?> foi adicionado com sucesso e seu preço é <?= $produto->getPreco()?>!!!</p>

                <?php } else { 
                        $msg = mysqli_error($conexao);?>
                        <p class="text-danger"> O produto <?= $produto->getNome()?> não foi adicionado: <?=$msg?></p>
                <?php
                }
        ?>
    <?php include("rodape.php"); ?>
<?php

  class ProdutoDAO{

      private $conexao;

      function __construct($conexao){
          $this->conexao = $conexao;
      }


    // SELECIONAR PRODUTOS DO BANCO
    function listaProduto(){

    $produtos = array();

      $resultado = mysqli_query($this->conexao,"select pp.*, cc.nome as categoria_nome from produtos as pp join categorias as cc on pp.categoria_id = cc.id");

      while($produtos_array = mysqli_fetch_assoc($resultado)){


      $categoria = new Categoria();
      $categoria->setNome($produtos_array["categoria_nome"]);

      $produto = new Produto();
      $produto->setId($produtos_array['id']);
      $produto->setNome($produtos_array['nome']);
      $produto->setPreco($produtos_array['preco']);
      $produto->setDescricao($produtos_array['descricao']);
      $produto->setCategoria($categoria);
      $produto->setUsado($produtos_array['usado']);

      array_push($produtos, $produto);

        }
        return $produtos;
    }

    // INSERIR PRODUTO NO BANCO 
    function insereProduto(Produto $produto){
            $query = "insert into PRODUTOS (nome, preco, descricao, categoria_id, usado) values ('{$produto->getNome()}', {$produto->getPreco()}, '{$produto->getDescricao()}',{$produto->getCategoria()->getId()},{$produto->getUsado()})";
            echo $query;
            return  mysqli_query($this->conexao, $query);
    }

    //DELETAR PRODUTO 
    function removeProduto($id){

        $query = "delete from produtos where id = {$id}";
        return mysqli_query($this->conexao, $query);
    }

    // SELECIO OS PRODUTOS PARA ALTERALOS
    function buscaProduto($id){

        $query = "select * from produtos where id = {$id}";
        $resultado = mysqli_query($this->conexao, $query);
        $produto_buscado = mysqli_fetch_assoc($resultado);    

           $categoria = new Categoria();
        $categoria->setId($produto_buscado['categoria_id']);


        $produto = new Produto();

          $produto->setId($produto_buscado["id"]);
          $produto->setNome($produto_buscado["nome"]);
          $produto->setPreco($produto_buscado["preco"]);
          $produto->setDescricao($produto_buscado["descricao"]);
          $produto->setCategoria($categoria);
          $produto->setUsado($produto_buscado["usado"]);

        return $produto;
    }

    //UPDATE PRODUTOS
    function alteraProdutos(Produto $produto){
        $query = "update produtos set nome = '{$produto->getNome()}', preco = {$produto->getPreco()}, descricao = '{$produto->getDescricao()}', categoria_id = {$produto->getCategoria()->getId()}, usado = {$produto->getUsado()} where id = {$produto->getId()}";
        echo $query;
        return mysqli_query($this->conexao, $query);
    }


  }
?>

Quem poder me ajudar, agradeço desde já.

1 resposta
solução!

Resolvido Em um momento eu chamei a variável de ProdutaDAO e quando chamo a mesmo coloquei como ProdutoDAO