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

Dúvida no Ex. 3 da Aula 6 - Deletando produtos

Olá, pessoal! Estou tentando identificar o erro ao tentar remover um produto da lista, cuja mensagem é: Notice: Undefined index: id in C:\xampp\htdocs\ludelux\remove-produto.php on line 5 O código da página remove-produto segue abaixo:

<?php
include ("cabeçalho.php");
include ("banco-produto.php");
include ("conexão.php")

$id = $_GET['id'];
removeProduto($conexão, $id);
?>
<p class="text-success"> Produto $id?> removido com sucesso!</p>

<?php<include ("rodapé.php");
?>

Na página produto-lista.php, o link para a remoção ficou:

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

Já a função removeProduto está assim:

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

O que poderá estar acontecendo? Já revisei os códigos várias vezes, mas não consegui identificar o meu erro. Desde já, grato pela ajuda!

5 respostas
solução!

Oi José, eu estava passeando pelo fórum quando vi seu post.

Vi no seu código algumas coisas que merecem atenção:

1 - Quando criamos arquivos, não usamos acentuação. Vi que seu arquivo se chama conexão.php e quando deveria se chamar conexao.php. Por mais que funcione com acento, a convenção do mundo da programação é usar sem acento. Isso por causa do inglês, sem falar que dependendo de onde você hospede sua aplicação pode haver problema na interpretação do acento. Sendo assim, vamos combinar que arquivo é sempre em minúsculo e sem acento, certo?

2 - No seu arquivo remove-produto.php temos a seguinte linha:

include ("conexão.php")

Onde está o ponto e vírgula no final da instrução? Diferente de Javascript, em PHP ele é obrigatório.

3 - Seu código foi postado sem usar formatação especial, logo, ele fica ilegível. Eu, como moderator, alterei seu post colocando a formatação especial para que ele exiba corretamente seu código. Há um botão com dicas de formatação chamado formatação que pode ajudá-lo. Ou se quiser, edite seu post e veja como envolve seu código.

4 - $id = $_GET['id']; é esta linha que está dando problema. Significa que você esta tentando obter um parâmetro que não foi enviado na requisição! Sabe por que ele não foi enviado? Veja o seu link que remove:

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

Está quase perfeito, mas onde está o parâmetro ID?

Alterando:

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

Espero que isso seja suficiente para você começar 2016 detonando em PHP!

Abraço do Flávio Almeida

Amigão, valeu, mesmo!!!! Que falha básica a minha!!! RSRSRS Agora tudo funciona a contento!!!! Um abração!

Feliz 2016 José e com muito php! Um abraço da equipe do Alura!

Com certeza! E com o Alura, o melhor site de cursos online!!!

eu estava com o mesmo problema mas não tinha nada errado na linha. Quando atualizei a pagina o erro apareceu diferente apareceu esse.

Fatal error: Cannot redeclare listaProdutos() (previously declared in C:\xampp\htdocs\ALURA\CURSOS\PHP mysql 1\banco-produto.php:2) in C:\xampp\htdocs\ALURA\CURSOS\PHP mysql 1\banco-produto.php on line 9

<?php
function listaProdutos($conexao){
    $produtos = array();
    $resultado = mysqli_query($conexao, "select * from produtos");
    while ($produto = mysqli_fetch_assoc($resultado))    {
        array_push($produtos, $produto);
    }
    return $produtos;
}

function insereProduto ($conexao, $nome, $preco){
    $query = "insert into produtos (nome, preco) values ('{$nome}',{$preco})";
    return mysqli_query($conexao,$query);
}
function removeProduto($conexao, $id) {
    $query="DELETE from produtos where id = {$id}";
    return mysqli_query($conexao,$query);
}

a linha 9 é o final da primeira função onde só possui o "}"