Bom, após fazer todas as alterações mandadas pelo instrutor recebo o seguinte erro ao tentar adicionar um produto em meu banco de dados:
insert into produtos (nome, preco, descricao) values ('Chocolate', 100, 'De caramelo', 1, true)
O produto Chocolate não foi adicionado: Column count doesn't match value count at row 1
Não faço ideia como resolver aqui :(
Pagina do formulário:
<?php include("cabecalho.php");
include ("banco-categoria.php");
include ("conecta.php");
$categorias = listaCategorias($conexao);
?>
<h1>Formulário de cadastro</h1>
<form action="adiciona-produto.php" method="post">
<table class="table">
<tr>
<td>Nome</td>
<td><input type="text" name="nome" class="form-control" /></td>
</tr>
<tr>
<td>Preço</td>
<td><input type="number" name="preco" class="form-control" /></td>
</tr>
<tr>
<td>Descrição</td>
<td><textarea name="descricao" class="form-control"></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">
<?php foreach($categorias as $categoria) : ?>
<option value="<?=$categoria['id']?>"><?=$categoria['nome']?></option>
<?php endforeach ?>
</select>
</td>
</tr>
<tr>
<td><input type="submit" value="Cadastrar" /></td>
</tr>
</table>
</form>
<?php include("rodape.php"); ?>
Página que adiciona os produtos ao banco:
<?php include("cabecalho.php");
include("conecta.php");
include("banco-produto.php"); ?>
<?php
$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];
$categoria_id = $_POST['categoria_id'];
if(array_key_exists('usado', $_POST)) {
$usado = "true";
} else {
$usado = "fals";
}
if(insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado)) { ?>
<p class="text-success">O produto <?= $nome; ?>, <?= $preco; ?> adicionado com sucesso!</p>
<?php } else {
$msg = mysqli_error($conexao);
?>
<p class="text-danger">O produto <?= $nome; ?> não foi adicionado: <?= $msg ?></p>
<?php
}
?>
<?php include("rodape.php"); ?>
Função que conecta ao banco e envia os dados:
<?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($conexao, $nome, $preco, $descricao, $categoria_id, $usado) {
$query = "insert into produtos (nome, preco, descricao) values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}, {$usado})";
$resultadoDaInsercao = mysqli_query($conexao, $query);
echo $query;
return mysqli_query($conexao, $query);
}
function removeProduto($conexao, $id) {
$query = "delete from produtos where id = {$id}";
return mysqli_query($conexao, $query);
}