Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não funcionou

apareceu o erro:

O produto Lápis não foi alterado: Table 'loja.produtos' doesn't exist

produto-altera-formulario.php

<?php include("cabecalho.php"); 
include("conecta.php");
include("banco_categorias.php");
include("banco_produtos.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>
                <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" <?=$usado?> value="true"> Usado</td>
            </tr>
            <tr>
                <td>Categoria</td>
                <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>
                    <?php endforeach ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td>
                    <button class="btn btn-primary" type="submit">Alterar</button>
                </td>
            </tr>
        </table>
    </form>
<?php include("rodape.php"); ?>

altera-produto.php

<?php include("cabecalho.php");         
 include("conecta.php");            
 include("banco_produtos.php"); 

$id = $_POST['id'];
$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];
$categoria_id = $_POST['categoria_id'];
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"); ?>

banco_produtos.php

<<?php  function Listar_Produtos($conexao) {
    $produtos = array();
    $resultado = mysqli_query($conexao, "select p.*, c.nome as categoria_nome from produto 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 produto (nome, preco, descricao, categoria_id, usado) values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}, {$usado})";
    $resultadoDaInsercao = mysqli_query($conexao, $query);
    return $resultadoDaInsercao;

    }    

    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);
    }


    function removeProduto($conexao, $id){
    $query = " DELETE FROM `produto` WHERE id = {$id}";
    $dadoApagado = mysqli_query($conexao, $query);
    return $dadoApagado;
    }

    function verificaUsado($conexao, $id){
    $query = " select usado FROM produto where id = {$id} " ;
    $resultado = mysqli_query($conexao, $query);
    return $mysqli_fetch_assoc($resultado);
    }

    function buscaProduto($conexao, $id){
        $query = "select * from produto where id = {$id}";
    $resultado = mysqli_query($conexao, $query);
    return mysqli_fetch_assoc($resultado);

    }


?>
2 respostas

Oi Raphael, tudo bem? O erro diz que a tabela Produtos não existe. O nome da tabela no seu SQL não está errado?

solução!

Olá Raphael, tudo bem?

A mensagem O produto Lápis não foi alterado: Table 'loja.produtos' doesn't exist informa que a tabela produtos não existe em seu banco de dados. No código SQL presente no método alteraProduto você está utilizando a tabela produtos. Segue sugestão:

function alteraProduto($conexao, $id, $nome, $preco, $descricao, $categoria_id, $usado) {
    $query = "update produto set nome = '{$nome}', preco = {$preco}, descricao = '{$descricao}', categoria_id={$categoria_id}, usado = {$usado} where id = {$id}";
    return mysqli_query($conexao, $query);
}