Paginierung (Vorheriger | Nächster) mit Smarty
Ich mache einen Katalog von clubs und ich möchte die Grenze auf jeder Seite 10 Vereine zum Beispiel, aber ich kann nicht umbrochen, mein Kopf herum. Ich habe versucht SmartyPaginate, aber es funktioniert nicht (Sprach der Entwickler sagte mir, es nicht zu verwenden).
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}
Ich würde gerne Weiter und zurück und zeigen nur X Anzahl der Datensätze. Wie kann ich dies angehen ?
Welche Probleme hast du, wenn Sie versucht haben, zu implementieren normalen Paginierung ?
fataler Fehler, ich erinnere mich nicht wirklich, aber der Entwickler sagte mir, es nicht zu verwenden.
fataler Fehler, ich erinnere mich nicht wirklich, aber der Entwickler sagte mir, es nicht zu verwenden.
InformationsquelleAutor | 2011-06-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrer aktuellen TRY-Anweisung, bevor Sie alles, was Sie sollten Holen Sie sich die aktuelle Seite (nehme an, von der query-string)
und definieren Sie dann die clubs zu Holen aus der DB
Im Grunde sind Sie immer 10 Datensätze aus 0. - Eintrag für Seite 1, 10 Datensätze ab dem 9. Datensatz für die Seite 2, etc.
und natürlich weil links PREV und NEXT in das smarty-template. Hinweis ausblenden Vorherige Seite 1 und verstecken sich WEITER in der letzten Seite
Ok, das ist, weil Sie noch mit $start_from = $Seite == 1 ? 0 : (($Seite - 1) * 10 - 1); $start_from = $Seite == 1 ? 0 : (($Seite - 1) * 1 - 1); statt. 10 ist die Anzahl der clubs zu zeigen, auf eine Seite, verringert es um 1 als das LIMIT in der SQL Abfrage
Ich muss auch sagen, dass ich nicht mag, wie Sie tun, $page--; $Seite++; ich weiß, dass wir am Ende mit der ursprünglichen $Seite Wert, aber es ist nicht richtig zu ändern, $Seite Wert. Am Liebsten hätte ich es auf meine Weise ($Seite-1) and ($Seite+1). 🙂
$Seite+1 " und " $Seite-1-funktioniert nicht aus irgendeinem Grund :/ keine Fehler, aber es will einfach nicht link.
InformationsquelleAutor Yasen Zhelev