Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

13
respostas

Erro na lista de produtos

Amigos eu fiz alguma besteira no fim da aula 7. e por algum motivo minha lista aparece assim, http://prntscr.com/bxhndm, ou seja ela não mostra a lista toda apenas alguns, se eu adicionar um produto novo ele vai aparecer um outro produto abxio mas sem o botao de excluir e não ira mostrar os ultimos produtos adicionados.

Não consigo encontrar o erro, então estou colocando o código apra que possam me ajudar. eu alterei alguma coisa no botão aqui no produto formulario e la no produto lista tambem referente a função de remover e foi oque causou isso. Por favor me ajudem estou a 3 dias parados revendo o código...

Produto-formulario.php

<?php include("cabecalho.php"); ?>

    <h1>Formulário de cadastro</h1>

        <table class="table">
            <tr>
                <td>Nome</td>
                <td><input class="form-control" type="text" name="nome"></td>
            </tr>
            <tr>
                <td>Preço</td>
                <td><input class="form-control" type="number" name="preco"></td>
            </tr>
            <tr>
                <td>Descrição</td>
                <td><textarea name="descricao" class="form-control"></textarea> </td>
            </tr>
            <tr>
                <td>
                  <button class="btn btn-danger" type="submit">Cadastrar</button>
                </td>
            </tr>
        </table>
    </form>

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

produto - formulario.php

<?php include("cabecalho.php");
 include ("conecta.php");
 include_once ("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><?=substr($produto['descricao'], 0, 40)?></td>
            <td>
                <form action="remove-produto.php" method="post">
                    <imput type="hidden" name="id" value="<?=$produto?>">
                    <button class="btn btn-danger"> remover </button>
                </form>
            </td>
        </tr>
    <?php
    endforeach
    ?>
</table>




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

    <h1>Formulário de cadastro</h1>

        <table class="table">
            <tr>
                <td>Nome</td>
                <td><input class="form-control" type="text" name="nome"></td>
            </tr>
            <tr>
                <td>Preço</td>
                <td><input class="form-control" type="number" name="preco"></td>
            </tr>
            <tr>
                <td>Descrição</td>
                <td><textarea name="descricao" class="form-control"></textarea> </td>
            </tr>
            <tr>
                <td>
                  <button class="btn btn-danger" type="submit">Cadastrar</button>
                </td>
            </tr>
        </table>
    </form>

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

Você está abrindo a tag 'form' em algum outro lugar deste arquivo?

Não em nenhum outro local, os arquivos estão exatamente como postei aqui

Então, você está fechando a tag form, mas nunca abriu ela nessa página, por isso não está cadastrando.

não entendi, pode explicar melhor? qual das forms voce se refere? o erro não é no cadastrar mas sim no listar os cadastrados ele cadastra, ao olhar o banco de dados eu vejo os produtos mas na hora de listar é que não aparece

Wesly, boa noite amigo!

Você pode ir na página de listagem de produto, apertar o botão direito, clicar em "Exibir código fonte da página", copiar tudo e colocar aqui?

Abraço!

Esse é o código que aparece

<html>
<head>
    <title>Minha loja</title>
    <meta  http-equiv="content-type" content="text/html"; charset="utf-8"/>
    <link href="css/bootstrap.css" rel="stylesheet" />
    <link href="css/loja.css" rel="stylesheet" />
</head>

<body>

<div class="navbar navbar-inverse navbar-fixed-top">
    <div class="container">
        <div class="navbar-header">
            <a class="navbar-brand" href="index.php">Minha Loja</a>
        </div>
        <div>
            <ul class="nav navbar-nav">
                <li><a href="produto-formulario.php">Adiciona Produto</a></li>
                <li><a href="produto-lista.php">Produtos</a></li>
                <li><a href="sobre.php">Sobre</a></li>
            </ul>
        </div>
    </div>
</div>

<div class="container">

    <div class="principal">



<table class="table table-striped table-bordered">

            <tr>
            <td>motocicleta</td>
            <td>10000.00</td>
            <td>Descrição deste produto</td>
            <td>
                <form action="remove-produto.php" method="post">
                    <imput type="hidden" name="id" value="<br />
<b>Notice</b>:  Array to string conversion in <b>C:\xampp\htdocs\ALURA\CURSOS\PHP mysql 1\produto-lista.php</b> on line <b>27</b><br />
Array">
                    <button class="btn btn-danger"> remover </button>
                </form>
            </td>
        </tr>
            <tr>
            <td>lapis</td>
            <td>1.00</td>
            <td>Descrição deste produto</td>
            <td>
                <form action="remove-produto.php" method="post">
                    <imput type="hidden" name="id" value="<br />
<b>Notice</b>:  Array to string conversion in <b>C:\xampp\htdocs\ALURA\CURSOS\PHP mysql 1\produto-lista.php</b> on line <b>27</b><br />
Array">
                    <button class="btn btn-danger"> remover </button>
                </form>
            </td>
        </tr>
            <tr>
            <td>oculos</td>
            <td>550.00</td>
            <td>Descrição deste produto</td>
            <td>
                <form action="remove-produto.php" method="post
<imput type="hidden" name="id" value="<br /><b>Notice</b>:  Array to string conversion in <b>C:\xampp\htdocs\ALURA\CURSOS\PHP mysql 1\produto-lista.php</b> on line <b>27</b><br />Array">

Isso acontece pois você passa o objeto produto inteiro para o value do input:

<imput type="hidden" name="id" value="<?=$produto?>">

o certo seria:

<imput type="hidden" name="id" value="<?=$produto["id"]?>">

(caso 'id' seja o identificador da classe)

Fala mano, tenta isso!

Muda essa linha do arquivo ( produto-lista.php ):

<imput type="hidden" name="id" value="<?=$produto?>">

Para:

<input type="hidden" name="id" value="<?=$produto['id']?>">

E vê se funciona!

Sim agora aparece a lista inteira, porém o botão de cadastrar e o remover ainda não funcionam, antes funcionava normalmente. O de remover até da a mensagem removido com sucesso, porém não esta removendo. e o cadastrar nem mensagem da, também funcionava normalmente antes. kkkkk não sei que cagada eu fiz que travou tudo.

Sobre o cadastrar, já te falei, tu fecha a tag form, mas nunca a abre. Olhe o html gerado pelo navegador que tu vai ver, não há início da tag form.

Mano, não esquece que você estava colocando tag input errada.

Em ( produto-lista.php ) troca o:

<IMPUT ... por

<input ...

Com "n", sacou?

Fiz oque ambos comentaram mas continua não adicionando.

<?php include("cabecalho.php");
 include ("conecta.php");
 include_once ("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><?=substr($produto['descricao'], 0, 40)?></td>
            <td>
                <form action="remove-produto.php" method="post">
                    <input type="hidden" name="id" value="<?=$produto["id"]?>">
                    <button class="btn btn-danger"> remover </button>
                </form>
            </td>
        </tr>
    <?php
    endforeach
    ?>
</table>




<?php include("rodape.php"); ?>
<?php include("cabecalho.php"); ?>

    <h1>Formulário de cadastro</h1>
    <form>
        <table class="table">
            <tr>
                <td>Nome</td>
                <td><input class="form-control" type="text" name="nome"></td>
            </tr>
            <tr>
                <td>Preço</td>
                <td><input class="form-control" type="number" name="preco"></td>
            </tr>
            <tr>
                <td>Descrição</td>
                <td><textarea name="descricao" class="form-control"></textarea> </td>
            </tr>
            <tr>
                <td>
                  <button class="btn btn-danger" type="submit">Cadastrar</button>
                </td>
            </tr>
        </table>
    </form>

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

Esta faltando o action e method na tag form

<form action="adiciona-produto.php" method="post">