esta dando esse erro no produto-altera-formulario.php e banco-produto.php
( ! ) Notice: Undefined index: id in C:\wamp64\www\loja\loja\produto-altera-formulario.php on line 7
Call Stack
# Time Memory Function Location
1 0.0010 243752 {main}( ) ...\produto-altera-formulario.php:0
( ! ) Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp64\www\loja\loja\banco-produto.php on line 25
Call Stack
# Time Memory Function Location
1 0.0010 243752 {main}( ) ...\produto-altera-formulario.php:0
2 0.0030 268464 buscaProduto( ) ...\produto-altera-formulario.php:8
3 0.0030 268880 mysqli_fetch_assoc ( ) ...\banco-produto.php:25
banco-produto.php codigo:
<?php
function InsereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado){
$query = "insert into produtos (nome, preco, descricao, categoria_id, usado) values('{$nome}', {$preco}, '{$descricao}', {$categoria_id}, {$usado})";
return mysqli_query($conexao, $query);
}
function listaProdutos($conexao){
$produtos = array(); // criei uma array pra colocar todos os produtos la em $produtos
$resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id");// resultado da query é os produtos vindos do banco no caso sem o while ele vai imprimir somente o primeiro produto da lista de produtos do banco de dados.
while($produto = mysqli_fetch_assoc($resultado)){
array_push($produtos, $produto); // array_push joga todos os produtos do banco $produto => $produtos joga nessa array.
}
return $produtos;
}
function removeProduto($conexao, $id){
$query = "delete from produtos where id = {$id}";
return mysqli_query($conexao, $query);
}
function buscaProduto($conexao, $id){
$query = "select * from produtos where id = {$id}";
$resultado = mysqli_query($conexao, $query);
return mysqli_fetch_assoc($resultado);
}
function alteraProduto($conexao, $id, $nome, $preco, $descricao, $categoria_id, $usado){
$query = "update produtos set nome = '{$nome}', preco ={$preco} , descricao = '{$descricao}', categoria_id ={$categoria_id} , usado ={$usado} where id = '{$id}'";
return mysqli_query($conexao, $query);
}
produto-altera-formulario.php codigo:
<html>
<?php include("cabecalho.php");
include ("conecta.php");
include ("banco-categoria.php");
include ("banco-produto.php");
$id = $_GET['id'];
$produto = buscaProduto($conexao, $id);
$categorias = listaCategorias($conexao);
$usado = $produto['usado'] ? "checked='checked'" : "";
?>
<h1>Alterando Produto</h1>
<form action="altera-produto.php" method="post">
<input type="hidden" name="id" value="<?=$produto['id']?>">
<table class="table">
<tr> <!-- linha de uma tabela HTML -->
<td>Nome:</td>
<td><input class="form-control" type="text" name="nome" value="<?=$produto['nome']?>"/></td> <br> <!-- <td> ordena o primeiro campo -->
</tr>
<tr><!--linhas -->
<td>Preço:</td><!--Colunas -->
<td><input class="form-control" type="number" name="preco" value="<?=$produto['preco']?>"></td> <br> <!-- class form-control deixa o campo com o tamanho inteiro -->
</tr>
<tr><!--linhas -->
<td>Descrição:</td><!--Colunas -->
<td><textarea class="form-control" name="descricao"><?=$produto['descricao']?></textarea> <!-- class form-control deixa o campo com o tamanho inteiro -->
</tr>
<tr>
<td></td>
<td><input type="checkbox" name="usado" <?=$usado?> value="true">Usado</td>
</tr>
<tr><!--linhas -->
<td>Categoria:</td><!--Colunas -->
<td>
<select name="categoria_id" class="form-control">
<?php foreach ($categorias as $categoria) :
$essaEhACategoria = $produto['categoria_id'] == $categoria['id'];
$selecao = $essaEhACategoria ? "selected='selected'" : "";
?>
<option value="<?=$categoria['id']?>" <?=$selecao?>>
<?=$categoria['nome']?>
</option><!-- class form-control deixa o campo com o tamanho inteiro -->
<?php endforeach?>
</select>
</td>
</tr>
<tr>
<td>
<button class="btn btn-primary" type="submit">Alterar</button>
</td>
</tr>
</table>
</form>
<?php include ("cabecalho.php") ?>
</html>
alguém pode me ajudar a concertar o erro e a entender o que aconteceu por favor?