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

O remover não funciona mais no servidor

Subi a aplicação para um servidor gratuito sem problemas, porém o "remove produto" não funciona mais. Aparece a mensagem: removido com sucesso, mas não remove. banco-produto.php

<?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 c.id=p.categoria_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, categoria_id, usado) values ('{$nome}',{$preco},'{$descricao}',{$categoria_id},{$usado})";
    return mysqli_query($conexao, $query);
}

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 buscaProduto($conexao, $id) {
    $query = "select * from produtos where id = {$id}";
    $resultado = mysqli_query($conexao, $query);
    return mysqli_fetch_assoc($resultado);

}

function removeProduto($conexao, $id){
    $query="delete from produtos where id = {$id}" ;
    return mysqli_query($conexao, $query);

}

remove-produto.php

<?php include("conecta.php"); 
include("banco-produto.php"); 
$id = $_GET['id'];
removeProduto($conexao, $id);
header("Location:produto-lista.php?removido=true");
die();
?>

O que pode ser?

6 respostas

Oi Adriano, tudo bom?

Tenta verificar ro que está sendo retornado pela sua função removeProduto. Algo como:

<?php include("conecta.php"); 
include("banco-produto.php"); 
$id = $_GET['id'];

var_dump(removeProduto($conexao, $id));
echo "<br/>";
var_dump(mysqli_error($conexao));
die();

header("Location:produto-lista.php?removido=true");
die();
?>

Assim, ao tentar remover um produto você verá no seu navegador o que foi retornado pela função removeProduto e possiveis erros no mysql depois para seu script =)

Compartilha com a gente o retorno!

Abraço.

Apareceu o seguinte erro: bool(false) string(146) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"

O que pode ser?

Parece que a gente ta com algum problema de sintaxe na nossa query. O que é estranho mesmo porque me parece tudo ok. Faz assim, da um dump na query logo antes dela ser executada pra gente ver exatamente oq estamos executando no banco =)

Algo como:

function removeProduto($conexao, $id){
    $query="delete from produtos where id = {$id}" ;
var_dump($query);
die();
    return mysqli_query($conexao, $query);

}

Aparece o seguinte erro: string(32) "delete from produtos where id = "

solução!

Olhando o resultado da query parece que não estamos passando o $id pra ela. Até onde eu sei, esse id é definido na url de remoção na listagem de produtos. Da uma olhada lá, vê se esse link possui o id definido mesmo. Algo como:

            <a href="remove-produto.php?id=<?=$produto['id']?>" class="btn btn-danger">remover</a>

Verifica se seu $produto está vindo com id =)

Valeu André. Funcionou.