tomtom
2005-08-01, 14:50:32
Hallo Leute!
Habe eine kleine Function geschrieben, die mir (nachdem die Anzahl der Verfügbaren Datensätze aus der DB-Tabelle ausgelesen wurde) berechnet, auf wieviele Seiten die Datensätze aufgeteilt werden sollten (zwecks Überblick und Performance) -> eine Blätterfunktion also.
Die funktioniert auch ganz gut. Allerdings hab ich ein Problem wo meine Logik versagt :| :
Wenn ich zu viele Datensätze habe (sagen wir mal Größenordung an die 2000) dann sieht die Seitenberechnung nicht so schön aus; bsp: 1,2,3....499,500)
deshalb hätte ich gerne, dass auf der jweiligen Seite, auf der ich mich befinde, davor und danach max. 3 Seiten angezeigt werden: 7 8 9 10 11 12 13
Hoffe, ihr versteht was ich meine. Hier mal mein Code:
function calcPages($num_of_results)
{
$results_per_page = 10;
$num_of_pages = $num_of_results%$results_per_page;
if ($num_of_pages > 0)
{
$x = 1 - ($num_of_pages/10);
$num_of_pages = ($num_of_results/$results_per_page) + $x;
}
else
{
$num_of_pages = $num_of_results/$results_per_page;
}
//echo("Für " . $num_of_results . " Einträge bei " . $results_per_page . " Feeds/Seite werden " . $num_of_pages . " Seiten benötigt!<br><br>");
echo("<p class=\"pages\">");
for ($i=1;$i<=$num_of_pages;$i++)
{
$cnt = $i*$results_per_page;
if ($i == 1)
{
$lower=0;
$upper=$results_per_page;
$previous_page = "";
}
else
{
$lower = $lower + $results_per_page;
$upper = $results_per_page;
$next_page = "nächste Seite";
}
if ($i == $num_of_pages)
{
$upper = $cnt - ($cnt - $num_of_results);
$next_page = "";
}
echo("<a class=\"std3\" href=\"portal.php?go=showfeeds&cat=$cat&lower=$lower&upper=$upper\">" . $i . "</a> | ");
}
echo("</p>");
}
$num_of_results = Anzahl der Datensätze (also mysql_num_rows)
$lower und $upper werden für das LIMIT im Sql Statement benötigt...
Hoffe ihr wisst was ich meine und könnt mir helfen - wäre jedenfalls verdammt super :)
MfG, terminator2k4
Habe eine kleine Function geschrieben, die mir (nachdem die Anzahl der Verfügbaren Datensätze aus der DB-Tabelle ausgelesen wurde) berechnet, auf wieviele Seiten die Datensätze aufgeteilt werden sollten (zwecks Überblick und Performance) -> eine Blätterfunktion also.
Die funktioniert auch ganz gut. Allerdings hab ich ein Problem wo meine Logik versagt :| :
Wenn ich zu viele Datensätze habe (sagen wir mal Größenordung an die 2000) dann sieht die Seitenberechnung nicht so schön aus; bsp: 1,2,3....499,500)
deshalb hätte ich gerne, dass auf der jweiligen Seite, auf der ich mich befinde, davor und danach max. 3 Seiten angezeigt werden: 7 8 9 10 11 12 13
Hoffe, ihr versteht was ich meine. Hier mal mein Code:
function calcPages($num_of_results)
{
$results_per_page = 10;
$num_of_pages = $num_of_results%$results_per_page;
if ($num_of_pages > 0)
{
$x = 1 - ($num_of_pages/10);
$num_of_pages = ($num_of_results/$results_per_page) + $x;
}
else
{
$num_of_pages = $num_of_results/$results_per_page;
}
//echo("Für " . $num_of_results . " Einträge bei " . $results_per_page . " Feeds/Seite werden " . $num_of_pages . " Seiten benötigt!<br><br>");
echo("<p class=\"pages\">");
for ($i=1;$i<=$num_of_pages;$i++)
{
$cnt = $i*$results_per_page;
if ($i == 1)
{
$lower=0;
$upper=$results_per_page;
$previous_page = "";
}
else
{
$lower = $lower + $results_per_page;
$upper = $results_per_page;
$next_page = "nächste Seite";
}
if ($i == $num_of_pages)
{
$upper = $cnt - ($cnt - $num_of_results);
$next_page = "";
}
echo("<a class=\"std3\" href=\"portal.php?go=showfeeds&cat=$cat&lower=$lower&upper=$upper\">" . $i . "</a> | ");
}
echo("</p>");
}
$num_of_results = Anzahl der Datensätze (also mysql_num_rows)
$lower und $upper werden für das LIMIT im Sql Statement benötigt...
Hoffe ihr wisst was ich meine und könnt mir helfen - wäre jedenfalls verdammt super :)
MfG, terminator2k4