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">

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