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

Alteração no banco de dados fail

Faço as alterações das informações mas elas não são inseridas no banco de dados. Verifiquei que o meu post é enviado, mas quando vou olhar no meu banco não ta la.

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='usado'" : "";
?>

        <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 name="descricao" class="form-control"><?=$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 class="form-control" name="categoria_id">
                  <?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-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">Produto <?=$nome;?> alterado com sucesso!</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

<?php

  function insereProduto($conexao, $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); // envia uma consulta Mysqli
    return $resultadoDaInsercao;
  }

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

  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 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}'";
    $resultadoDaInsercao = mysqli_query($conexao, $query);
    return mysqli_query($conexao, $query);
  }

  function removeProduto($conexao, $id) {
    $query = "delete from produtos where id = {$id}";
    $resulado = mysqli_query($conexao, $query);
    return mysqli_fetch_assoc($resultado);
  }
?>
2 respostas
solução!

Tem um erro na linha abaixo:

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

Faltou o cifrão. O correto é:

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

Obrigado!