boa noite, segui a instruções do vídeo e mesmo eu criando a coluna com tipo boolean, quando eu passo o valor de usado entre aspas "true"ou "false" eu recebo um erro dizendo que estes não são valores inteiros. A solução foi simples, retirei as aspas. E, ao contrário do que aconteceu no vídeo, true foi convertido pra 1 e false pra 0.
Ai quando tiro as "" funciona so true que é convertido para 1, mais o false da erro.
Produto bala não pode ser cadastrado: Incorrect integer value: 'false' for column 'usado' at row 1
adiciona-produto.php
<?php include './cabecalho.php'; ?>
<?php include './conexao.php'; ?>
<?php include './banco-produto.php'; ?>
<?php
$nome = $_POST["nome"];
$preco = $_POST["preco"];
$descricao = $_POST['descricao'];
$categoria = $_POST['categoria_id'];
if(array_key_exists('usado', $_POST)){
$usado = "true";
} else {
$usado = "false";
}
if (inserirProdutos($conexao, $nome, $preco, $descricao, $categoria, $usado)) {
?>
<p class="text-success">produto <?= $nome ?>,<?= $preco ?> adicionado com sucesso</p>
<?php
} else {
$msg = mysqli_error($conexao);
?>
<p class="text-danger">Produto <?= $nome ?> não pode ser cadastrado: <?= $msg ?></p>
<?php } ?>
<?php include './rodape.php'; ?>
produto-formulario.php
<?php include './cabecalho.php'; ?>
<?php include './conexao.php';?>
<?php include './banco-categoria.php';?>
<?php
$categorias = listaCategoria($conexao);
?>
<h1>Formulario</h1>
<form action="adiciona-produto.php" method="post">
<table class="table">
<tr class="text-left">
<td>Nome:</td>
<td><input type="text" class="form-control" name="nome" required="Preencher o nome"/></td>
</tr>
<tr class="text-left">
<td>Preço:</td>
<td><input type="number" class="form-control" name="preco" required="preencher o preço"/></td>
</tr>
<tr class="text-left">
<td>Descrição:</td>
<td><textarea class="form-control" name="descricao"></textarea></td>
</tr>
<tr class="text-left">
<td>Categoria:</td>
<td>
<select name="categoria_id" class="form-control">
<?php foreach ($categorias as $categoria) {?>
<option value="<?= $categoria['id']; ?>"> <?= $categoria['nome']; ?></option>
<?php } ?>
</select>
</td>
</tr>
<tr class="text-left">
<td></td>
<td><input type="checkbox" name="usado" value="true">Usado</td>
</tr>
<tr class="text-left">
<td>
<button class="btn bg-primary" type="submit">Enviar</button>
</td>
</tr>
</table>
</form>
<?php include './rodape.php'; ?>
banco-produto
<?php
function listaProduto($conexao) {
$produtos = [];
$resultado = mysqli_query($conexao, "select p.*, c.nome as categoria_nome "
. "from produtos as p join categoria as c on c.id = p.categoria_id");
while ($produto = mysqli_fetch_assoc($resultado)) {
array_push($produtos, $produto);
}
return $produtos;
}
function inserirProdutos($conexao, $nome, $preco, $descricao, $categoria_id, $usado) {
if (!empty($nome) && !empty($preco) && is_numeric($preco)) {
$query = "insert into produtos(nome, preco, descricao, categoria_id, usado) values('{$nome}','{$preco}', '{$descricao}', '{$categoria_id}', '{$usado}')";
$resultado = mysqli_query($conexao, $query);
return $resultado;
}
return false;
}
function deletaProduto($conexao, $id) {
$query = "delete from produtos where id = {$id}";
return mysqli_query($conexao, $query);
}