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

Opção de alterar dados não to conseguindo alterar

Boa Noite Pessoal!....

Estou conseguindo fazer a tela de alteração de produto funcione em termos sem mensagem de erro mas não to conseguindo gravar as alterações quando vou verificar. Pesso ajuda produto-altera-formulario-php

<?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>
            <td>nome:</td>
            <td><input class="form-control" type="text" name="nome" value="<?=$produto['nome']?>"></td>
        </tr>
        <tr>
            <td>preco:</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
        </tr>    
         </tr>

         <td>Categoria</td>
    <td>
        <select class="form-control" name="categoria_id">
                    <?php foreach($categorias as $categoria) :
                    $essaEhACatetoria = $produto['categoria_id']== $categoria['id'];
                    $selecao = $essaEhACategoria ? "selected='selected'" : "";?>
                        <option value="<?=$categoria['id']?>" <?=$selecao?>><?=$categoria['nome']?></option>
                    <?php endforeach ?>
                </select>
        </select>
    </td>
</tr>
</tr>
                <td><button class="btn-primary" type="submit">Alterar</button>
                </td>
            </tr>
    </table>    
    <tr>
</tr>
</form>
<?php include("rodape.php");?>

altera-produto.php

<?php include("cabecalho.php");
      include("conecta.php");
      include("banco-categoria.php");
      include("banco-produto.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-produto.php

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);
3 respostas
solução!

O ID depois do where deve ficar fora das aspas

$query = "update produtos set nome = '{$nome}', preco = {$preco}, descricao = '{$descricao}', categoria_id = {$categoria_id}, usado = {$usado} where id={id}";

Obrigado Gabriel funcionou en termos...., mas agora está dando a mensangem produto não foi alterado ja revisei a video aula mas não estou conseguindo achar o motivo do por que da mensagem que produto não foi alterado.

Consegui resolver, a variável $id estava sem aspas simples....

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

Agora vou hospedar o site!...

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software