Giihh 6 Denunciar post Postado Fevereiro 26, 2016 Olá, Eu quero retornar todos os post da tabela mysql e exibir apenas 6 posts em cada página. Eu consigo retornar todos os posts, mas não sei como limitar para exibir 6 em cada página <?php $query = "SELECT * FROM myTable"; $variable = $crud->viewdatas($query); foreach ($variable as $key => $value) { ?> <div class="col-md-1"> <div class="thumbnail"> <a href="/category/<?php echo $value['post_slug'] ?>" > <img src="http://example.com/uploads/images/<?php echo $value['post_slug'] ?>.jpg"> </a> </div> </div> <?php } ?> Criei urls amigaveis com a colunas post_slug do mysql e no htacess: RewriteRule ^category/?$ example.com/my_category.php [NC,L] RewriteRule ^category\/(.*)\/?$ example.com/posts.php?slug=$1 [NC,L] O trecho html que insere paginação esta assim: <nav style="text-align:center"> <ul class="pagination"> <li> <a href="#" aria-label="Previous"> <span aria-hidden="true">«</span> </a> </li> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> <li><a href="#">4</a></li> <li><a href="#">5</a></li> <li> <a href="#" aria-label="Next"> <span aria-hidden="true">»</span> </a> </li> </ul> </nav> Quando clicar em um numero da paginação na url deve redirecionar para: site.com/category/1 site.com/category/2 site.com/category/3 ... Como faço para inserir paginação e ir abrindo em cada página um limite de 6 posts sem repetir e sem ajax? Agradeço ajuda Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Fevereiro 26, 2016 Esse código deu pra ter uma ideia de como fazer: site.com/category/yourpage.php?page=2 $page = $_GET['page']; $resultsLimit = 6; $upperLimit = 6 * $page; $lowerLimit = (6*page) - $resultsLimit; $query = "SELECT * FROM myTable WHERE id <= {$upperLimit} AND id >= {$lowerLimit}"; Mas como inserir os links automaticamente para: anterior, 1,2,3,..., próximo?? Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Fevereiro 26, 2016 Existem inúmeros tópicos aqui mesmo falando de paginação, pesquise por LIMIT do MySQL, ela serve exatamente para isso. Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Fevereiro 26, 2016 Obrigada ESerra. Entendo que existe o LIMIT do mysql, mas a duvida é o limite para cada página sem repetição e como criar o link da paginação No caso o limite para cada página, o código acima é compreensivel, ficando pendente entender como faço para colocar os links corretamente Compartilhar este post Link para o post Compartilhar em outros sites
BlackMix 15 Denunciar post Postado Fevereiro 27, 2016 $query = "SELECT * FROM myTable limit 0,50"; proxima página seria $query = "SELECT * FROM myTable limit 50,100"; Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Fevereiro 27, 2016 Você deve criar os links das páginas conforme a exibição do select. Conforme o @ESerra comentou, existem inúmeros tópicos, aqui no fórum, explicando como proceder. Digamos que você recebeu o parâmetro página 2 e sua visualização é de 6 ítens por página. Neste ponto em diante, é matemática pura: $itensPorPagina = 6; $numeroPagina = 2; O seu SELECT continua igual na questão do LIMIT, só muda o offset: $offSet = ($numeroPagina - 1 ) * $itensPorPagina; $sql = 'SELECT * FROM table LIMIT {$itensPorPagina},{$offSet}'; Ou Seja: SELECT * FROM table LIMIT 6 , 6 Já os links, você monta conforme a sua necessidade. Como eu já comentei, existem inúmeros tópicos sobre isso no fórum. Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Fevereiro 27, 2016 Estou quase conseguindo <?php $max_links = 10; $previous = $page - 1; $next = $page + 1; $pgs = ceil($total / $max); if($pgs > 1 ){ if($previous > 0){ echo "<li><a href='".BASE_URL."/category/$previous' aria-label='Previous'><span aria-hidden='true'>«</span></a></li>"; } else{ } for($i=$page-$max_links; $i <= $pgs-1; $i++) { if ($i <= 0){ }else{ if($i != $page{ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<li><a href='".BASE_URL."/category/".($i)."'>".$i."</a></li> ..."; }else{ echo "<li><a href='".BASE_URL."/category/".($i)."'>".$i."</a></li>"; } } else{ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<li class='active'><a>".$i."</a></li> ..."; }else{ echo "<li class='active'><a>".$i."</a></li>";} } } } if($next <= $pgs){ echo "<li><a href='".BASE_URL."/category/$next' aria-label='Next'><span aria-hidden='true'>»</span></a></li>"; }else{ } } ?> Para a quantidade de registros no DB 7 paginas exibem todos os conteúdos, No exemplo abaixo esta ativa a pagina 5 mas de qualquer numero ativado não exibe o numero 7 (ou qual for o ultimo numero). A pagina 7 só é exibida se clicar em >> na pagina 6. Mesmo dentro da página 7 não exibe o numero 7. Abaixo é como aparece a paginação na página 7: Não esta exibindo também os pontinhos. Outra coisa que percebi é que se eu colocar direto na url do navegador: http://meusite.com/category/qualquernumero vai abrir a mesma pagina da categoria, como todos: com header, titulo, footter, mas sem conteudo. Como evitar esse comportamento? Ou se colocar: http://meusite.com/category/0 aparece apenas o Header e abaixo a mensagem: Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-4,4' at line 1 Compartilhar este post Link para o post Compartilhar em outros sites