Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

A minha descrição não esta aparecendo e meu remover não esta removendo

Bom, tava implementando uma discrição para o meu projeto, coloquei alguma escrita na minha descrição,blz,adicionou o produto com sua descrição.No banco de dados,aparece que a Descricao esta NULL. Logo, quando eu fui listar, esperava no minimo um vazio, mas ocorre um erro que diz, "Notice: Undefined variable: descricao in C:\xampp\htdocs\Alura-Estilo\lista-produtos.php on line 48" . Quando eu vi isso, tentei remover o produto, mas não estava removendo o produto.

-----Codigo: adiciona-produto.php

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

$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];

//$conexao = mysqli_connect('localhost', 'root', '', 'bd_loja');

   if(insereProduto($conexao, $nome, $preco)) { ?>
    <p class="text-success">O produto <?= $nome; ?>, <?= $preco; ?> adicionado com sucesso!</p>
<?php } else {
    $msg = mysqli_error($conexao);
?>
    <p class="text-danger">O produto <?= $nome; ?> não foi adicionado: <?= $msg ?></p>
<?php
}
?>

---- Codigo: banco-produtos.php


//---------------LISTAR PRODUTOS--------------------------------------------
    function listarProdutos($conexao)
    {
    $produtos = array();
    $resposta = mysqli_query($conexao," SELECT * FROM produtos");

        while($produto = mysqli_fetch_assoc($resposta))//Enquanto pegue todos da tabela tb_produtos
        {
            array_push($produtos,$produto) . "<br/>";
        }

        return $produtos;
    }


//---------------INSERIR PRODUTOS--------------------------------------------    
    function inserirProdutos($conexao,$produtos,$produto)
    {
     $query = "INSERT INTO produtos(nome,preco,descricao) VALUES ( '{$nome}','{$preco}','{$descricao}')";
     $resutadoInsercao = mysqli_query($conexao,$query);

     return $resutadoInsercao; 

    }




//---------------REMOVER PRODUTOS--------------------------------------------    
 function removerProdutos($conexao,$id)
 {

 $query="DELETE FROM produtos WHERE id={$id}";

return mysqli_query($conexao,$query);

 }

-----Codigo:listar-produto.php


<?php include("cabecalho.php"); 
      include("conexao.php"); 
      include("banco-produtos.php");

 ?>


<h1> Lista </h1>

        <?php
         $produtos = listarProdutos($conexao); 
        ?>

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

           <p class="alert-success">Produto apagado com sucesso.</p>

  <?php } ?>


<!--Tabela----------------->
        <table class="table">
               <tr>
                       <th>Nome do Produto</th>
                       <th>Preço</th>
                    <th>Descrição</th>
                       <th>Excluir</th>

               </tr>
        </table>




        <?php
        foreach ($produtos as $produto) 
        {
        ?>


            <table class="table table-striped table-bordered">
               <tr>
                    <td><?= $produto['nome']?></td>
                    <td id="space"><?= $produto['preco']?></td>
                    <td><?= $descricao['descricao']?></td>

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

               </tr>

           </table>

<!------------------------->

        <?php
        }
        ?>

---Codigo: remover-produto.php


<?php
$id = $_POST['id'];

removerProdutos($conexao,$id);

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

die();
?>

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

<?php
include("rodape.php");
?>
1 resposta
solução!

Boa tarde Pedro, tudo bem ? Fazendo uma breve análise do seu código pude identificar que você está cometendo um pequeno erro no arquivo listar-produto.php, na função listar produto você passa um array chamado Produtos como retorno, e no seu arquivo listar-produto.php você está exibindo uma variavel $descricao['descricao'] que não existe de acordo com sua lógica, essa variavel deve chamar $produto['descricao], por isso está sendo exibido o Notice que você relatou na sua descrição. O fato da descrição estar como null no banco acredito que seja porque você está chamado a função insereProduto do seu arquivo adiciona-produto.php e nessa função você não está inserindo a variavel $descricao, contudo não posso afirmar porque você não disponibilizou o código que faz a chamada da função que insere o produto. Já referente ao fato de não estar conseguindo remover o produto, como eu não conheço seu banco de dados vou apenas dar um algumas dicas pra você verificar: verifique através do console do desenvolvedor disponibilizado pelo navegador se o id contido no botão remover está correto (se ele estiver null ou undefined provavelmente é esse o problema). Verifica se o nome do campo que guarda o identificador é realmente id no seu banco. Verifique se a variavel conexão está declarada dentro do arquivo remover-produto.php, pois não possui nenhum require ou include do arquivo conexao.php. Espero ter ajudado bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software