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

Dúvida no Ex. 3 da Aula 8 - DAO - Data Access Object

Oi pessoal, tudo bem?

Estou com uma duvida, no meu exercicio está aparecendo o erro igual ao do video, o parametro conexao é nulo. Já coloquei o require_once("conecta.php") em produto-lista / adiciona-produto e mesmo assim o erro continua.

Erro Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\wamp\www\loja\class\ProdutoDAO.php on line 13

//classe ProdutoDAO ... <?php

class ProdutoDAO{

private $conexao;

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

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

while($produto_atual = mysqli_fetch_assoc($resultado)) { $produto = new Produto; $categoria = new Categoria;

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

$produto->setId($produto_atual['id']); $produto->nome = $produto_atual['nome']; $produto->setPreco($produto_atual['preco']); $produto->descricao = $produto_atual['descricao']; $produto->categoria = $categoria; $produto->usado = $produto_atual['usado']; array_push($produtos, $produto); } return $produtos; }

function insereProduto(Produto $produto) { $query = "insert into produtos (nome, preco, descricao, categoria_id, usado) values ('{$produto->nome}', {$produto->getPreco()}, '{$produto->descricao}', {$produto->categoria->getId()}, {$produto->usado})"; var_dump($query); return mysqli_query($this->conexao, $query); }

function alteraProduto($produto) { $query = "update produtos set nome = '{$produto->nome}', preco = {$produto->getPreco()}, descricao = '{$produto->descricao}', categoria_id= {$produto->categoria_id}, usado = {$produto->usado} where id = '{$produto->getId()}'"; return mysqli_query($this->conexao, $query); }

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

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

//Classe produto lista

<?php require_once("conecta.php"); require_once("cabecalho.php"); require_once("banco-produto.php"); ?>

<?php $produtoDao = new ProdutoDAO($conexao); $produtos= $produtoDao->listaProdutos(); var_dump($produtos); foreach($produtos as $produto) : ?>

<?= $produto->nome ?> <?= $produto->getPreco() ?> <?= $produto->valorComDesconto() ?> <?= substr($produto->descricao, 0, 40) ?> <?= $produto->categoria->getNome()?> alterar remover <?php endforeach ?>

<?php include("rodape.php"); ?>...

1 resposta
solução!

descobri !! ... depois de uma hora rachando a cuca ...

traduzi sem querer na hora de pensar ...o magic method é construct e não constructor

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

=)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software