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

Estou com dúvida no curso de PHP, MySQL e Fundamentos da Web, no exercício 3 do capítulo Deletando produtos.

Bom galera, ao clicar no link de remoção eu recebo o seguinte erro:

Notice: Undefined index: id in D:\wamp\www\loja\removeProduto.php on line 6

Porém ao rever meu código não consegui identificar o erro pois eu declarei a variável.. No aguardo de uma luz hahaha, valeu galera.

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

$id = $_GET['id'];
removeProduto($conexao, $id);
?>

<p class="text-success">Produto <?=$id?> removido!</p>

<?php
include("rodape.php");
?>
7 respostas

Você passou o ID por URL ou por Formulário? Vc no código diz que passou por URL $_GET, mas verifique senão passou via Submit Form.

<html>
<head>
 <meta charset="utf-8"/>
 <body>
  <?php include("cabecalho.php"); ?>
  <h1>Formulario de Produtos</h1>
  <form action="add-produto.php">
    <table>
        <tr>
            <td>Nome:</td> 
            <td><input class="form-control" type ="text" name="nome" /> <br/></td>
        </tr>
        <tr>
            <td>Preço:</td> 
            <td><input class="form-control" type="number" name="preco" /> <br/></td>
        </tr>
        <tr>
            <td><input class ="btn btn-primary" type="submit" value="Cadastrar"/></td>
        </tr>
    </table>    
  </form>
  <?php include("rodape.php"); ?>
 </body> 
</head> 
<html>

Esse é o meu código de adicionar produtos, durante a aula vi que não houve a necessidade de declarar a id, e achei que ao realizar a conexão com o banco ele identificaria a id, porém estou com esse erro.

remover

Achei o erro Carlo, tinha esquecido de declarar realmente a id ali.

Obrigado.

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

Ops mandei errado no de cima.

Olá! Vinícius

O link para a remoção do produto, na listagem de produtos, está correto como colocou acima:

Remover

No atributo class você pode usar btn btn-danger e também text-danger, é sua opção. Só que o btn btn-danger deixa a aparência do link como se fosse um botão. Mas isso é só aparência mesmo, com certeza o bootstrap tem outros valores para class.

A outra opção para o link de remoção seria assim, de acordo com a dica que o professor deu na vídeo aula:

Remover

ARQUIVO banco-produto.php(função de remoção)

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

return mysqli_query($conexao, $query); }

ARQUIVO remove-produto.php

<?php include("cabecalho.php"); include("conecta.php"); include("banco-produto.php");

$id = $_POST['id'];

removeProduto($conexao, $id);

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

die(); ?>

ARQUIVO produto-lista.php

Fiz de acordo com a dica do alterar se não me engano. Coloquei a mensagem de remoção para ser exibida na página da listagem de produtos.

Como pode ver abaixo, o 'removido' vem do arquivo 'remove-produto.php', ...

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

... através da função header().

Agora segue o código do início do arquivo produto-lista.php

<?php include("cabecalho.php"); include("conecta.php"); include("banco-produto.php"); ?>

<?php

if(array_key_exists("removido" , $_GET) && $_GET["removido"] == "true"){ ?>

Produto removido com sucesso!

<?php }

Espero ter ajudado.


Vinícius, quando postei acima, o código virou uma chamada para um link mesmo de remoção, segue novamente, espero que funcione desta vez. Esse é o código do link para remoção de produto, que estou usando.

<td>
                  <form action="remove-produto.php" method="post">
                        <input type="hidden" name="id" value="<?=$prod['id']?>"/>      
                        <button class="btn btn-danger">Remover</button>
                  </form>
            </td>
solução!

Obrigado Juliana!!