Я делаю каталог клубов, и я хотел бы ограничить каждую страницу до 10 клубов, например, но я не могу обернуть вокруг себя. Я пробовал SmartyPaginate, но он не работает (говорил с разработчиком, сказал мне не использовать его).
clubs.php
<?php include('configs/pdo.inc.php'); include('libs/Smarty.class.php'); // create object $smarty = new Smarty; // Clubs ophalen try { $query = $oPDO->prepare("SELECT * FROM V_clubs WHERE Zichtbaar = 1 ORDER BY ID ASC LIMIT 10"); $query->execute(); $t = array(); foreach ($query as $row) { $t[$row['ID']] = $row; } $smarty->assign('clubs', $t); // Categorieen ophalen $categorie = $oPDO->query("SELECT * FROM t_categorie ORDER BY D_categorie ASC"); $smarty->assign('categorie', $categorie); // Provincies ophalen $prov = $oPDO->query("SELECT * FROM t_provincies ORDER BY D_provincie ASC"); $smarty->assign('prov', $prov); // Clubteller $xclubs = $oPDO->prepare("SELECT ID from V_clubs"); $xclubs->execute(); } catch (PDOException $e) { echo '<pre>'; echo 'Regelnummer: ' . $e->getLine() . '<br>'; echo 'Bestand: ' . $e->getFile() . '<br>'; echo 'Foutmelding: ' . $e->getMessage() . '<br>'; echo '</pre>'; } // display it $smarty->display('extends:layout.tpl|header.tpl|clubs.tpl|footer.tpl'); ?>
clubs.tpl
{extends file="layout.tpl"} {block name=title}Clubs{/block} {block name=content} <form name="clubsearch" method="POST" action="{$SCRIPT_NAME}"> <div class="span-6"> <p><label for="categorie">Categorie:</label><br /> <select id="categorie" name="categorie"> <option value="*">Alle disciplines</option> {foreach $categorie as $c} <option value="{$c.D_categorie}">{$c.D_categorienaam}</option> {/foreach} </select></p> </div> <div class="span-4"> <p><label for="provincie" name="provincie">Provincie:</label><br /> <select id="provincie" name="provincie"> <option value="*">Alle provincies</option> {foreach $prov as $p} <option value="{$p.D_provincie}">{$p.D_provincienaam}</option> {/foreach} </select><p> </div> <div class="span-4"> <p><label for="gemeente">Gemeente:</label><br /> <select id="gemeente" name="gemeente"> <option value="*">Alle gemeentes</option> {foreach $clubs as $c} <option value="{$c.Gemeente}">{$c.Gemeente}</option> {/foreach} </select></p> </div> <div class="span-2"> <input type="submit" name="zoekclub" id="zoekclub" value="Zoeken"> </div> </form> <hr> {if isset($smarty.get.id)} <div class="span-6 colborder"> <table> <tr> <td style="font-weight: bold;">Club</td> </tr> <tr> <td>{$clubs[$smarty.get.id].Naam}</td> </tr> <tr> <td style="font-weight: bold;">Categorie</td> </tr> <tr> <td>{$clubs[$smarty.get.id].Categorie}</td> </tr> <tr> <td style="font-weight: bold;">Provincie</td> </tr> <tr> <td>{$clubs[$smarty.get.id].Provincie}</td> </tr> <tr> <td style="font-weight: bold;">Gemeente</td> </tr> <tr> <td>{$clubs[$smarty.get.id].Gemeente}</td> </tr> <tr> <td style="font-weight: bold;">Website</td> </tr> <tr> <td><a href="{$clubs[$smarty.get.id].Contact}" target="_blank">{$clubs[$smarty.get.id].Contact}</a></td> </tr> </table> </div> <div class="span-8 last"> <table> <tr> <td style="font-weight: bold;">Info</td> </tr> <tr> <td>{$clubs[$smarty.get.id].Extra}</td> </tr> </table> </div> <div class="span-4 first"><p><a onClick="history.go(-1)"><< Terug</a></p></div> {else} <table> <tr> <th>Club</td> <th>Categorie</td> <th>Provincie</td> <th>Gemeente</td> </tr> {foreach $clubs as $c} <tr> <td><a href="{$SCRIPT_NAME}?id={$c.ID}"><b>{$c.Naam}</b></a></td> <td>{$c.Categorie}</td> <td>{$c.Provincie}</td> <td>{$c.Gemeente}</td> </tr> {/foreach} </table> {/if} {/block}
Я хотел бы получить Next и Previous и показать только X количество записей. Как я могу это сделать?
В своем текущем заявлении TRY перед тем вы должны получить свою текущую страницу (предположим, из строки запроса)
$page = empty($_GET['page']) ? 1 : (int)$_GET['page'];
а затем определить клубы для извлечения из БД
$start_from = $page == 1 ? 0 : (($page - 1) * 10 - 1); $query = $oPDO->prepare("SELECT * FROM V_clubs WHERE Zichtbaar = 1 ORDER BY ID ASC LIMIT ".$start_from.", 10");
В основном вы получаете 10 записей из 0-й записи для страницы 1, 10 записей из 9-й записи для страницы 2 и т. Д.
page 1 LIMIT 0,10 page 2 LIMIT 9,10 page 3 LIMIT 19,10
и caurse поместите ссылки PREV и NEXT в шаблон smarty. Подсказка скрыть PREV на стр. 1 и скрыть NEXT на последней странице
<a href="your_url.php?page=$page-1">PREV</a> <a href="your_url.php?page=$page+1">NEXT</a>