2
respostas

Dúvida no Ex. 6 da Aula 9 - Herança

Estou com um problema para adicionar e listar do banco de dados, fui testando por partes para ver aonde seria o problema , e a princípio é o ProdutoDao, vou postar o código, se puder me ajudar.

function listaProdutos(){

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

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

            $categoria = new Categoria();
            $categoria->setNome($produto_atual['categoria_nome']);

            if($produto_atual['tipoProduto'] == "Livro"){
                $produto = new Livro($produto_atual['nome'], $produto_atual['preco'], $produto_atual['descricao'], $categoria, $produto_atual['usado']);
                $produto->setIsbn($produto_atual['isbn']);

            } else {
                $produto = new Produto($produto_atual['nome'], $produto_atual['preco'], $produto_atual['descricao'], $categoria, $produto_atual['usado']);
            }
                $produto->setId($produto_atual['id']);

            array_push($produtos, $produto);
        }

        return $produtos;
    }

    function insereProdutos(Produto $produto){

        if($produto->temIsbn()){
            $isbn = $produto->getIsbn();
        } else {
            $isbn = "";
        }

        $tipoProduto = get_class($produto);

        $nome = mysqli_real_escape_string($this->conexao, $nome);
        $descicao = mysqli_real_escape_string($this->conexao, $descricao);
        $preco = mysqli_real_escape_string($this->conexao, $preco);

        $query = "insert into produtos (nome, preco, descricao, categoria_id, usado, isbn, tipoProduto) values ('{$produto->getNome()}', '{$produto->getPreco()}', '{$produto->getDescricao()}', '{$produto->getCategoria()->getId()}', '{$produto->getUsado()}', '{$isbn}', '{$tipoProduto}')";

        $resultadoDaInsercao = mysqli_query($this->conexao, $query);

        return $resultadoDaInsercao;
    }
2 respostas

Qual erro está retornando na tela?

function insereProdutos(Produto $produto){

        if($produto->temIsbn()){
            $isbn = $produto->getIsbn();
        } else {
            $isbn = "";
        }

        $tipoProduto = get_class($produto);

        $nome = mysqli_real_escape_string($this->conexao, $nome);
        $descicao = mysqli_real_escape_string($this->conexao, $descricao);
        $preco = mysqli_real_escape_string($this->conexao, $preco);

        $query = "insert into produtos (nome, preco, descricao, categoria_id, usado, isbn, tipoProduto) values ('{$produto->getNome()}', '{$produto->getPreco()}', '{$produto->getDescricao()}', '{$produto->getCategoria()->getId()}', '{$produto->getUsado()}', '{$isbn}', '{$tipoProduto}')";

        $resultadoDaInsercao = mysqli_query($this->conexao, $query);

        return $resultadoDaInsercao;
    }

Você não tem as variáveis $nome, $descricao e $preco no momento que as "limpa" com o mysqli. Talves você quisesse pegar $produto->getNome()... não?