Bom dia segue as minhas dúvidas: No Adiciona Produto aparece os seguintes erros:
Notice: Undefined index: id in C:\xampp\htdocs\loja\produto-formulario.php on line 6
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\loja\banco-produto.php on line 22
Segue o código:
<?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);
?>
<h1>Formulário de Produto</h1>
<form action="adiciona-produto.php"method="post">
<table class="table">
<tr>
<td>Nome:</td>
<td><input class="form-control" type="text" name="nome" value="<?=$produto['nome']?>"></td>
</tr>
<tr>
<td>Preço:</td>
<td><input class="form-control" type="number" name="preco"></td>
</tr>
<tr>
<td>Descrição:</td>
<td><textarea class="form-control"name="descricao"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="checkbox" name="usado" value="true">Usado
</tr>
<tr>
<td>Categoria</td>
<td>
<select name="categoria_id" class="form-control">
<?php foreach($categorias as $categoria) : ?>
<option value="<?=$categoria['id']?>">
<?=$categoria['nome']?>
</option>
<?php endforeach ?>
</select>
</td>
</tr>
<tr>
<td><button class="btn btn-primary" type="submit">Cadastrar</button></td>
</tr>
</table>
</form>
<?php include("rodape.php")?>
Já na tela Alterando Produto onde era para aparecer o nome do produto aparece:
<br /><b>Notice</b>: Undefined variable: produto in <b>C:\xampp\htdocs\loja\produto-altera-formulario.php</b> on line <b>13</b><br />
E na Descrição aparece:
<br />
<b>Notice</b>: Undefined variable: produto in <b>C:\xampp\htdocs\loja\produto-altera-formulario.php</b> on line <b>21</b><br />
Meu código produto-altera-formulario.php
<?php include("cabecalho.php");
include("conecta.php");
include("banco-categoria.php");
$categorias = listaCategorias($conexao);
?>
<h1>Alterando produto</h1>
<form action="altera-produto.php" method="post">
<table class="table">
<tr>
<td>Nome</td>
<td> <input class="form-control" type="text" name="nome" value="<?=$produto['nome']?>"></td>
</tr>
<tr>
<td>Preço</td>
<td><input class="form-control" type="number" name="preco" value="<?=$produto['preco']?>"></td>
</tr>
<tr>
<td>Descrição</td>
<td><textarea class="form-control" name="descricao"><?=$produto['descricao']?></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="checkbox" name="usado" value="true"> Usado
</tr>
<tr>
<td>Categoria</td>
<td>
<select name="categoria_id" class="form-control">
<?php foreach($categorias as $categoria) : ?>
<option value="<?=$categoria['id']?>">
<?=$categoria['nome']?>
</option>
<?php endforeach ?>
</select>
</td>
</tr>
<tr>
<td>
<button class="btn btn-primary" type="submit">Alterar</button>
</td>
</tr>
</table>
</form>
<?php include("rodape.php"); ?>
Meu código altera-produto.php
<?php include("cabecalho.php");
include("conecta.php");
include("banco-produto.php");
$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];
$categoria_id = $_POST['categoria_id'];
$id = $_POST['id'];
$usado = $_POST['usado'];
if(array_key_exists('usado', $_POST)) {
$usado = "true";
} else {
$usado = "false";
}
if(alteraProduto($conexao, $id, $nome, $preco, $descricao, $categoria_id, $usado)) { ?>
<p class="text-success">O produto <?= $nome ?>, <?= $preco ?> foi alterado.</p>
<?php } else {
$msg = mysqli_error($conexao);
?>
<p class="text-danger">O produto <?= $nome ?> não foi alterado: <?= $msg?></p>
<?php
}
?>
<?php include("rodape.php"); ?>
Código banco-produto.php
<?php
function listaProdutos($conexao){
$produtos = array();
$resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on p.categoria_id=c.id");
while($produto = mysqli_fetch_assoc($resultado)) {
array_push($produtos,$produto);
}
return $produtos;
}
function insereProduto($nome, $preco, $descricao, $categoria_id, $usado) {
$query = "insert into produtos (nome, preco, descricao, categoria_id, usado)
values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}, {$usado})";
$resultadoDaInsercao = 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 removeProduto($conexao,$id) {
$query="delete from produtos where id= {$id}";
return mysqli_query($conexao,$query);
}
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);
}