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

Php - Esconder produto e depois exibir

Bom dia, agradeceria ajuda. Na pagina index consigo trazer todos os produtos do BD e exibir, ok. Mas a medida que cadastrar mais produtos ficaria enorme a exibição. Neste Template que estou utilizando ele tem um botão chamado Morphing que abre mais produtos. Então acredito que ele seja para abrir depois que limitar a exibição ele abra para ver mais produtos. Se eu utilizar o LIMIT na query do listaProdutos, eu não consigo exibir mais produtos. Preciso exibir 6 produtos e depois se possivel, quando o usuario clicar no botão ele abre e mostra o restante. Segue abaixo o código até onde cheguei e não sei como complementar para fazer funcionar, tentei também o GROUP BY mas também não funcionou:

<div class="col-md-9">

                        <div class="row"> 
                        <?php 
                $dao=new produtoDAO($conexao);
                $produtos = $dao->listaProdutos();
                foreach($produtos as $produto) : 
                ?>                                    
                            <div class="col-md-4">
                                <div class="card card-product card-plain">

                                    <div class="image">
                                        <a href="precompra.php?id=<?=$produto->getId()?>">
                                    <img src="../cadastro/fotos/<?=$produto->getFoto() ?>" alt="foto"/>
                                </a>
                                    </div>

                                    <div class="content">
                                        <a href="#">
                                            <h4 class="title"><?=$produto->getMarca()->getNome() ?></h4>
                                        </a>
                                        <p class="description">
                                          <?=$produto->getDescricao() ?>
                                        </p>
                                        <div class="footer">
                                            <span class="price"> R&dollar;<?=$produto->getPreco() ?></span>                     
                                        </div>

                                    </div><!-- card-product -->

                                </div> <!-- end card -->

                             </div><!-- col-md-4 -->
                             <?php endforeach?>
                                  <div class="col-md-3 col-md-offset-4">
                                  <button rel="tooltip" title="Abrindo..." class="btn btn-default btn-round" id="successBtn" data-toggle="morphing" data-rotation-color="gray">Mais Produtos...</button>
                                  </div>

                        </div><!-- row -->
                    </div><!-- col-md-9 -->
2 respostas
solução!

Oi Sergio, tudo bom?

Nesse caso, precisariamos buscar no banco os poximos dados, fazer uma nova requisição e trazer uma nova pagina para o usuario com os proximos dados. Esse tipo de paginação costuma ser meio pesada pro seu servidor, que vai receber muitas requisições.

Existem algumas alternativas, como, por exemplo, o datatables do bootstrap que pega todos os seus dados e gera uma lista com paginação =)

A gente só precisa configurar o script ;)

No link acima você encontra alguns exemplos. aqui você encontra mais um, passo-a-passo.

Qualquer problema, compartilha com a gente!

Abraço e bons estudos

OI André obrigado pelas dicas. Nossa, sensacional essas documentações. Tem muita coisa lá principalmente para buscas em uma tabela montando os resultados . Mas preciso da tua ajuda, não consigo enxergar dentre tantas opções como montar esse script na minha pagina html . Tentei abaixo, mas não estou conseguindo. Utilizei a função DataTable selecionando o botão #successBtn e exibir todos os resultados mas acho que essa função datatable é para selecionar um resultado dentre muitos. No meu caso: Gostaria de limitar a exibição do primeiro bloco com no máximo 6 resultados e que ao mesmo tempo quando clico no botão eu consiga abrir toda a lista de produtos escondendo as que já haviam sido abertas. Será que eu não tenho mesmo que fazer 2 queries separadas? Uma para a exibição das 6 fotos e outra para quando o button? Você poderia me ajudar me dando umas dicas de como fazer isso no script?

<div class="col-md-9">

                        <div class="row"> 
                        <?php 
                $dao=new produtoDAO($conexao);
                $produtos = $dao->listaProdutos();
                foreach($produtos as $produto) : 
                ?>                                    
                            <div class="col-md-4">
                                <div class="card card-product card-plain">

                                    <div class="image">
                                        <a href="precompra.php?id=<?=$produto->getId()?>">
                                    <img src="../cadastro/fotos/<?=$produto->getFoto() ?>" alt="foto"/>
                                </a>
                                    </div>

                                    <div class="content">
                                        <a href="#">
                                            <h4 class="title"><?=$produto->getMarca()->getNome() ?></h4>
                                        </a>
                                        <p class="description">
                                          <?=$produto->getDescricao() ?>
                                        </p>
                                        <div class="footer">
                                            <span class="price"> R&dollar;<?=$produto->getPreco() ?></span>                     
                                        </div>

                                    </div><!-- card-product -->

                                </div> <!-- end card -->

                             </div><!-- col-md-4 -->
                             <?php endforeach?>
<script>
        $(document).ready(function() {
        $('#successBtn').DataTable(); } );
  </script>
                                  <div class="col-md-3 col-md-offset-4">
                                  <button rel="tooltip" title="Abrindo..." class="btn btn-default btn-round" id="successBtn" data-toggle="morphing" data-rotation-color="red">Mais Produtos...</button>
                                  </div>

                        </div><!-- row -->
                    </div><!-- col-md-9 -->


               </div><!-- row -->
           </div><!-- container -->
    </div><!-- section -->