Seitenumschalter mit Kürzung

Ein kleines Tutorial zur Seitensteuerung, die Erklärungen befinden sich als Kommentare im Code.

Was wir wollen sieht so aus:

Zurück 1 ... 3 4 5 6 ... 8 Weiter

Der Code:

<?php
// Wieviele einträge pro seite
$entries_per_site = 10;

// Wieviele seiten im Umschalter gezeigt
$links_in_sitefunction = 4;

// Auf welcher seite sind wir
if (isset($_GET['page'])) {
if (!is_numeric($_GET['page']) OR empty($_GET['page'])) {
$page = 1;
} else {
$page = $_GET['page'];
}
} else {
$page = 1;
}

//Wir lesen wieviele einträge in der db sind
$sql_count_entries = 'SELECT testid FROM test';
$query_count_entries = mysql_query($sql_count_entries);
$count_entries = mysql_num_rows($query_count_entries); // Summe aller einträge
$page = mysql_real_escape_string($page); // was über GET kommt müssen wir sicher vor missbrauch machen
$pages_total = ceil($count_entries/$entries_per_site); // wieviele seiten wir brauchen - ceil rundet auf
$page_start = floor($page - $links_in_sitefunction/2);
$page_start = $page_start <= 0 ? 1 : $page_start;
$page_end = ($page_start + $links_in_sitefunction-1);
$page_end = $page_end >= $pages_total ? $pages_total : $page_end;
$page_max = $page*$entries_per_site;
$max_minus_per_page = $page_max-$entries_per_site;
$page_entry_start = $count_entries-$max_minus_per_page+1;

// Wir lesen unser result
$result = mysql_query('SELECT * FROM test ORDER BY testid DESC LIMIT '.(($page-1)*$entries_per_site ).','.$entries_per_site.);

// Wir generieren die links
if ($page > 1) {
$page_minus = $page-1;
$link_string .= ' <a href="test.php?page='.$page_minus.'">Zurück</a>';
}

if ($page_start > 1) {
$link_string .= ' <a href="test.php?page=1">1</a> ...';
}

for ($i = $page_start; $i <= $page_end ;$i++) {
if ($i == $page) {
$link_string .= '<b>'.$i.'</b>';
} else {
$link_string .= ' <a href="test.php?page='.$i.'">'.$i.'</a> ';
}
}

if ($page_end < $pages_total) {
$link_string .= ' ... <a href="test.php?page='.$pages_total.'">'.$pages_total.'</a>';
}

if ($page < $pages_total) {
$page_plus = $page+1; $link_string .= ' <a href="test.php?page='.$page_plus.'">Weiter</a>';
}

if ($pages_total > 1) {
$page_link = ''.$link_string.'';
}

// Wir setzen eine Schleife (while)
while ($row = mysql_fetch_array($result)) {
$page_entry_start = $page_entry_start-1;
// Hier der code den du brauchst
}

// Jetzt kannst du jederzeit $page_link aufrufen
echo $page_link;

Viel Spaß damit ;)

Kommentare

unkie
unkie am Sonntag, 6. Mai 2007 um 19:56

Sieht ja ganz nett aus :) Ich denke der Easterdom wird das sicher gerne reinstellen. auf jedenfall vielen dank für die mühe!

rompers
rompers am Sonntag, 6. Mai 2007 um 19:58

mah habe es bei allen scripten von mir drin und es funzt einfach super :D
und es ist kinder leicht