Php - List products by category

Asked

Viewed 582 times

3

I’m trying to create a product display by category. I can’t find the error. Notice: Undefined variable: id in C: Bitnami wampstack-5.6.19-0 apache2 htdocs wedding choice-products.php on line 131

Warning: mysqli_fetch_assoc() expects Parameter 1 to be mysqli_result, Boolean Given in C: Bitnami wampstack-5.6.19-0 apache2 htdocs wedding database.php on line 17

Please, I need help.

I’m managing to choose the category and make available for the same page the categoria_id this way:

<?php $categorias = listaCategorias($conexao); ?>

<script type="text/javascript" src="assets/js/jquery.min.js"></script>

<script type="text/javascript">

$(document).ready(function () {
    // Evento quando o valor da combo é alterado
   $('#select-relatorio').change(function () {
     // Redirecionamento por Javascript quando uma das opções com valor for
selecionado                                                                
     if ($(this).val()!="") {

           window.location = "escolha-produtos.php?id="+$(this).val();

     }
   });
});
</script>

I’m trying to take this categorie_id and send it to the database in order to query the BD this is the function listProducts by Category I’m trying to use:

function listaProdutosporCategoria($conexao,$id){
$produtos = array();
$resultado = mysqli_query($conexao, "select p.*, c.nome as categoria_nome,
    m.nome as marca_nome 
from produtos p 
inner join categorias c on(p.categoria_id = c.id)
inner join marcas m on(p.marca_id = m.id) 
where c.id = {$id}");
while($array = mysqli_fetch_assoc($resultado)) {

$produto = new Produto();
$produto->setId($array['id']);
$produto->setNome($array['nome']);
$produto->setPreco($array['preco']);
$produto->setReferencia($array['referencia']);
$produto->setDescricao($array['descricao']);
$produto->setMarca(new Marca());
$produto->getMarca()->setId($array['marca_id']);
$produto->getmarca()->setNome($array['marca_nome']);
$produto->setCategoria(new Categoria());
$produto->getCategoria()->setId($array['categoria_id']);
$produto->getCategoria()->setNome($array['categoria_nome']);
$produto->carregaCaminhoFoto($array['foto']);

array_push($produtos, $produto);
}
return $produtos;
 }

in return I try to pull all products by the chosen category

<?php
$produtos = listaProdutosporCategoria($conexao, $id);
?>
<table class="table table-striped table-bordered">
<?php foreach($produtos as $produto) : ?>

  <div class="section ">
  <div class="container container-border">


      <div class="title">
        <h4>Escolha os Produtos que Deseja Ganhar</h4>
           </div>
        <div class="row">

            <div class="col-md-4">
                <div class="card card-product card-plain">
                    <div class="image">
                        <a href="#">
                            <img src="fotos/<?=$produto->getFoto() ?>" alt="Sem Imagem"/>
                        </a>
                    </div>
                    <div class="content">
                        <a href="#">
                            <h4 class="title"><?=$produto->getNome() ?></h4>
                        </a>
                        <p class="description">
                          <?= substr($produto->getDescricao(), 0, 40) ?>
                        </p>
                        <div class="footer">
                            <span class="price">R$ <?=$produto->getPreco() ?
 ></span>
                            <button class="btn btn-danger btn-simple btn-
 hover pull-right" rel="tooltip" title="" data-placement="left" data-
original-title="Adicionar a lista">
                                <i class="fa fa-heart-o"></i>
                            </button>
                        </div>
                    </div>
                </div> <!-- end card -->
            </div>


</div>


</div>

</div>
<?php endforeach ?>
</table>

1 answer

2


Hello good night the problem probably occurs because vc do not have the $id variable being set before use of the function.

Example filling the $id variable

<?php
$id = $_GET["id"];
$produtos = listaProdutosporCategoria($conexao, $id);
?>
<table class="table table-striped table-bordered">
<?php foreach($produtos as $produto) : ?>

  <div class="section ">
  <div class="container container-border">


      <div class="title">
        <h4>Escolha os Produtos que Deseja Ganhar</h4>
           </div>
        <div class="row">

            <div class="col-md-4">
                <div class="card card-product card-plain">
                    <div class="image">
                        <a href="#">
                            <img src="fotos/<?=$produto->getFoto() ?>" alt="Sem Imagem"/>
                        </a>
                    </div>
                    <div class="content">
                        <a href="#">
                            <h4 class="title"><?=$produto->getNome() ?></h4>
                        </a>
                        <p class="description">
                          <?= substr($produto->getDescricao(), 0, 40) ?>
                        </p>
                        <div class="footer">
                            <span class="price">R$ <?=$produto->getPreco() ?
 ></span>
                            <button class="btn btn-danger btn-simple btn-
 hover pull-right" rel="tooltip" title="" data-placement="left" data-
original-title="Adicionar a lista">
                                <i class="fa fa-heart-o"></i>
                            </button>
                        </div>
                    </div>
                </div> <!-- end card -->
            </div>


</div>


</div>

</div>
<?php endforeach ?>
</table>
  • Perfect! It worked right thank you very much Hiago!!!!!!!!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.