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

Problema Exer. 5 Não Mostra os dados na tabela, mostra a tabela em branco com a quantidade de itens do banco

Prezados na aula 5

Fiz todos os exercícios acredito que meu código deve estar completo. porém na hora quando clico no link produtos(produto-lista.php)

Me mostra na tela a tabela com a quantidade de itens que tenho no banco de dados, porém não mostra os valores tipo o nome e o preço.

Abaixo segue os código das minhas páginas.:

index.php

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


<h1> Bem vindo! </h1>

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

produto-formulario.php

<?php include("cabecalho.php"); ?>
<h1> Bem vindo! </h1>
<form action="adiciona-produto.php">

    <table class="table">
        <tr>
            <td>Nome</td>
            <td><input class="form-control" type="text" name="nome"></td>
        </tr>
        <tr>
            <td>Preco</td>
            <td><input class="form-control" type="number" name="preco"></td>
        </tr>
        <tr>

            <td><input class="btn btn-primary" type="submit" value="Cadastrar"></td>
            <td></td>

        </tr>


    </table>




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

produto-lista.php

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

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

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


<?php
    foreach($produtos as $produto) {
?>
    <tr>
        <td> <?php $produto['nome']; ?></td>
        <td> <?php $produto['preco']; ?></td>

    </tr>

    <?php
    } //endforeach

?>
</table>




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

adiciona-produto.php

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


<?php 



    $nome = $_GET["nome"];
    $preco = $_GET["preco"];


    if(insereProduto($conexao,$nome,$preco)) { ?>

    <p class="text-success"> O Produto <?php echo $nome; ?>, <?php echo $preco; ?> foi Adicionado com Sucesso! </p>

    <?php } else {
    $msg = mysql_error($conexao);

    ?>
    <p class="text-danger"> O Produto <?php echo $nome; ?>, <?php echo $preco; ?> Não foi Adicionado com Sucesso: <?php echo $msg; ?></p>


<?php
}


 ?>


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

banco-produto.php


<?php 

    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 insereProduto($conexao, $nome, $preco) {

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

    }





 ?>

conecta.php

    <?php 
    $conexao = mysqli_connect("localhost", "root", "", "loja");

cabecalho.php

<!DOCTYPE html>
<html>
<head>
    <title>Minha Loja</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.css">
    <link rel="stylesheet" type="text/css" href="css/loja.css">
</head>
<body>

<div class="navbar navbar-inverse navbar-fixed-top">

    <div class="container">

        <div class="navbar-header"> 
            <a href="index.php" class="navbar-brand">Minha Loja </a>
        </div>

        <div>

            <ul class="nav navbar-nav">
                <li><a href="produto-formulario.php">Adiciona Produto</a></li>
                <li><a href="sobre.php">Sobre</a></li>
                <li><a href="produto-lista.php">Produtos</a></li>

            </ul>

        </div>
    </div>
</div>



    <div class="container">    
    <div class="principal">

rodape.php


    </div>


    </div>

</body>
</html>

Por gentileza me ajudem

2 respostas
solução!

Oi Isac, tudo bem? O problema é que você esqueceu de mandar o php imprimir estes valores pra você, note no seu produto-lista.php:

<td> <?php $produto['nome']; ?></td>
<td> <?php $produto['preco']; ?></td>

O instrutor usa as tags de impreção direta do php desta forma:

<td> <?= $produto['nome']; ?></td>
<td> <?= $produto['preco']; ?></td>

Apesar de funcionar eu não gosto muito dessa sintaxe, prefiro usar o echo:

<td> <?php echo $produto['nome']; ?></td>
<td> <?php echo $produto['preco']; ?></td>

Fique a vontade pra escolher qual das duas vai usar. Faça os testes!

Espero ter ajudado, bons estudos...

Valeu Wanderson, Muito Obrigado Cara!