1
resposta

Undefined index

Oi, tudo bem pessoal? Eu estou com erro que não consigo resolver.

( ! ) Notice: Undefined index: id in C:\wamp64\www\loja\produto-lista.php on line 26

A linha 26 é esta: a href="remove-produto.php?id=<?=$produto['id']?>" class="text-danger">remover

Se incluo o <?php include("remove-produto.php");?> na página aparece este erro: Fatal error: Cannot redeclare insereProduto() (previously declared in C:\wamp64\www\loja\banco-produto.php:3) in C:\wamp64\www\loja\banco-produto.php on line 6

Sou nova em PHP e não faço idéia do que está acontecendo. Gostaria da ajuda de vocês.

//Este é o arquivo da linha 26

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



<?php
    if(array_key_exists("removido", $_GET) && $_GET["removido"]=="true"){
?>
        <p class="alert-success">Produto removido com sucesso!</p>
<?php  
    }
?>



<table class="table table-striped table-bordered">
    <?php
        $produtos = listaProdutos($conexao);
        foreach ($produtos as $produto):
        ?>
        <tr>
            <td><?= $produto['nome'] ?></td>
            <td><?= $produto['preco'] ?></td>
            <td>
                <a href="remove-produto.php?id=<?=$produto['id']?>" class="text-danger">remover</a>
            </td>
        </tr>

        <?php
        endforeach
    ?> 
</table>

<?php include("footer.php"); ?>
//Este é o código da página remove-produto

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

?>

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


<?php include("footer.php");?>
//código do banco-produto.php

<?php

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

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 removeProduto($conexao, $id){
    $query = "delete from produtos where id = {$id}";
    return mysqli_query($conexao, $query);
}
1 resposta

Oi Ana, tudo bem? Vamos por partes, OK? Primeiro a mensagem de erro que fala " ( ! ) Notice: Undefined index: id in ... " diz que você tá acessando um índice no array e esse índice não foi definido. Isso pode acontecer por vários motivos, vamos ver por que já.

O outro erro que diz: Fatal error: Cannot redeclare insereProduto() ... informa que você está declarando uma função/classe mais de uma vez, mas não é isso exatamente, acontece que tanto no lista-produtos quanto no remove-produto você tem o include do banco-produto, então o PHP tenta incluir o arquivo duas vezes, causando esse problema de redeclaração da função. Conseguiu entender esse problema?

Certo, agora por que o id tá undefined no array de produtos? Bom, pode ser que o nome da tabela não seja exatamente id, minúsculo dessa forma. Pode ser que a campo id não existe na tabela.

Você consegue acessar a tabela pelo PHPMyAdmin e tirar um print da tabela e colocar um link pra esse print aqui? Usa o site pasteboard.co pra subir a imagem e pegar o link.