1
resposta

Estou recebendo um Fatal error ao editar o produto

Ao tentar editar um produto recebo a mesangem abaixo,

Warning: Undefined array key "id" in D:\ALURA\PDI\PHP_MySQL\editar-produto.php on line 18

Fatal error: Uncaught TypeError: Repositorio\ProdutoRepositorio::buscar(): Argument #1 ($id) must be of type int, null given, called in D:\ALURA\PDI\PHP_MySQL\editar-produto.php on line 18 and defined in D:\ALURA\PDI\PHP_MySQL\src\Repositorio\ProdutoRepositorio.php:93 Stack trace: #0 D:\ALURA\PDI\PHP_MySQL\editar-produto.php(18): Repositorio\ProdutoRepositorio->buscar(NULL) #1 {main} thrown in D:\ALURA\PDI\PHP_MySQL\src\Repositorio\ProdutoRepositorio.php on line 93

/** Função buscar */

public function buscar(int $id): Produto
    {
        $sql = "SELECT * FROM produtos WHERE id = ?";
        $statement = $this->pdo->prepare($sql);
        $statement->bindValue(1, $id);
        $statement->execute();

        $dados = $statement->fetch(PDO::FETCH_ASSOC);
        return $this->formarObjeto($dados);

    }
/** Parte do código editar-produto.php */

<?php

global $pdo;

use Repositorio\ProdutoRepositorio;

require "src/conexao-bd.php";
require "src/Modelo/Produto.php";
require "src/Repositorio/ProdutoRepositorio.php";

$produtoRepositorio = new ProdutoRepositorio($pdo);

if (isset($_POST['editar'])) {
    $produto = new Produto($_POST['id'], $_POST['tipo'], $_POST['nome'], $_POST['descricao'], $_POST['preco'], $_POST['imagem']);
    $produtoRepositorio->atualizar($produto);
    header('Location: admin.php');
} else {
    $produto = $produtoRepositorio->buscar($_GET['id']);

}

?>
1 resposta

Oii, Alexander, dá uma olhada se você adicionou no formulário o id:

<input type="hidden" name="id" value="<?= $produto->getId()?>">

Pq se você não tiver adicionado, pode ser por isso que não tenha chegado no seu método