Boa tarde,
estou recebendo esse erro:
Warning: Undefined array key "id" in C:\xampp\htdocs\PHP - Alura\D - Php-web\admin\editar-artigo.php on line 8
Fatal error: Uncaught TypeError: Artigos::exibirId(): Argument #1 ($id) must be of type string, null given, called in C:\xampp\htdocs\PHP - Alura\D - Php-web\admin\editar-artigo.php on line 8 and defined in C:\xampp\htdocs\PHP - Alura\D - Php-web\src\Artigo.php:50 Stack trace: #0 C:\xampp\htdocs\PHP - Alura\D - Php-web\admin\editar-artigo.php(8): Artigos->exibirId(NULL) #1 {main} thrown in C:\xampp\htdocs\PHP - Alura\D - Php-web\src\Artigo.php on line 50
alguém consegue me ajudar?
editar-artigo.php
<?php
require_once '../conexao.php';
require_once '../src/Artigo.php';
require_once '../src/Redireciona.php';
$artigo = new Artigos($mysql);
$art = $artigo->exibirId($_GET['id']);
redireciona('/PHP - Alura/D - Php-web/admin/editar-artigo.php');
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<link rel="stylesheet" type="text/css" href="../style.css">
<meta charset="UTF-8">
<title>Editar Artigo</title>
</head>
<body>
<div id="container">
<h1>Editar Artigo</h1>
<form action="editar-artigo.php" method="post">
<p>
<label for="titulo">Digite o novo título do artigo</label>
<input class="campo-form" type="text" name="titulo" id="titulo"
value="<?php echo $art['titulo']; ?>" />
</p>
<p>
<label for="conteudo">Digite o novo conteúdo do artigo</label>
<textarea class="campo-form" type="text" name="conteudo" id="titulo">
<?php echo $art['conteudo']; ?>
</textarea>
</p>
<p>
<input type="hidden" name="id" value="" />
</p>
<p>
<button class="botao">Editar Artigo</button>
</p>
</form>
</div>
</body>
</html>
Artigo.php
<?php
/* A finalidade desse arquivo que abriga a classe Artigos é de escrever o código PHP pe irá automatizar
a donstrução e edição de posts na pagina do blog e fazer a conexão com banco de dados
*/
require_once '../conexao.php';
class Artigos
{
// Inicia a variável $mysql
private $mysql;
// Cria a função construtora
public function __construct(mysqli $mysql)
{
$this->mysql = $mysql;
}
/*
Método para enviar os dados para o banco de dados, esse método está relacionado
com o arquivo adiciona-artigo.php
*/
public function adicionar(string $titulo, string $conteudo): void
{
$insereArtigo = $this->mysql->prepare('INSERT INTO artigos (titulo, conteudo) VALUES(?, ?);');
$insereArtigo->bind_param('ss', $titulo, $conteudo);
$insereArtigo->execute();
}
// Método criado para excluir os artigos na pagina excluir-artigos
public function remover(string $id): void
{
$removerArtigo = $this->mysql->prepare('DELETE FROM artigos WHERE id = ?');
$removerArtigo->bind_param('s', $id);
$removerArtigo->execute();
}
public function exibirArtigos(): array
{
// Realiza consulta no banco de dados
$resultado = $this->mysql->query('SELECT id, titulo, conteudo FROM artigos');
// O método fetch_all retorna um array associativo com valor inteiro
$artigos = $resultado->fetch_all(MYSQLI_ASSOC);
return $artigos;
}
public function exibirId(string $id): array
{
// Realiza consulta no banco de dados
$selecionaArtigo = $this->mysql->prepare('SELECT id, titulo, conteudo FROM artigos WHERE id = ?');
// O método bind_param() irá associar o id com o ponte de interrogação
$selecionaArtigo->bind_param('s', $id);
// Para executar a utilizaremos o método execute()
$selecionaArtigo->execute();
/* O método execute precisa do método get_result() para ser executado, e iremos retornar como um método
associativo, utilizaremos o fetch_assoc() para declarar esse retorno
*/
$artigo = $selecionaArtigo->get_result()->fetch_assoc();
return $artigo;
}
}