Zuviele Seiten bei Blätterfunktion!

PhaseV

Mitglied
Hallo zusammen,

ich arbeite grade an einem Projekt zur Ausgabe einer Tabelle, die auf mehreren Seiten verteilt wird. Das habe ich auch soweit hinbekommen, nur mein Problem ist das die Tabelle so groß ist, das 2285 Seiten angezeigt werden. Was muss ich im PHP-Code eintragen das immer die 1. Seite, 3 zurückliegende Seiten, die Aktuelle Seite, 3 folge Seiten und die letzte Seite angezeigt wird?

hier der Code zur Ausgabe:
PHP:
<?php
	include 'inc/config.inc.php';
	include 'inc/functions.php';

	$seite = $_GET["seite"];
	if(!isset($seite))
	{
		$seite = 1;
	}
	mysql_select_db('meine_DB) or die ("Die Datenbank existiert nicht");
	$eintraege_pro_seite = 10;
	$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
	$abfrage = "SELECT * FROM 'Tabelle' LIMIT $start, $eintraege_pro_seite";
	$ergebnis = mysql_query($abfrage);
	while($row = mysql_fetch_row($ergebnis))
		{
			print_ergebnis_table($ergebnis);
		}

	$result = mysql_query("SELECT id FROM 'Tabelle'");
	$menge = mysql_num_rows($result);
	
	$wieviel_seiten = $menge / $eintraege_pro_seite;
	
	echo "<div align=\"center\">";
	echo "<b>Seite:</b> ";
	
	
	for($a=0; $a < $wieviel_seiten; $a++)
	   {
	   $b = $a + 1;
	
	   if($seite == $b)
		  {
		  echo "  <b>$b</b> ";
		  }
	
	   else
		  {
		  echo "  <a href=\"?seite=$b\">$b</a> ";
		  }
	
	
	   }
	echo "</div>";
?>

Ich danke euch im Vorraus für eure Hilfe.

SiLvErStAr2411
 
Hi,

ich habe Dir mal die relativ einfach gehaltene Funktion von Patrick_PQ aus dem php-resource-Forum rausgekramt:

PHP:
function pagebrowser($pages, $link, $page){
    define("SPANNWEITE",3);
    $prev=$page-1;//vorherige Seite
    $next=$page+1;//nächste Seite
    for($n=1;$n<=$pages;$n++){//von 1 bis Anzahl Seite
        if($page==$n){
            $pagenavi[]=$n;//aktuelle Seite nur als Text
        }
        else{
            $pagenavi[]="<a href=\"$link?page=$n\">$n</a>";//andere Seiten als Link
        }
    }//Links für alle Seiten erzeugt
    $offset=SPANNWEITE+$page;
    // zwischen 1 und aktueller Seite ausschneiden
    if($page<count($pagenavi)-(SPANNWEITE+2)){
        array_splice($pagenavi,$offset,count($pagenavi)-1-$offset,array('...'));
    }
    //zwischen aktueller Seite und Ende ausschneiden
    if($page>(SPANNWEITE+3)){
        array_splice($pagenavi,1,$page-(SPANNWEITE+2),array('...'));
    }
    //zurückblättern einfügen
    if($page!=1 && is_array($pagenavi)){
        array_unshift($pagenavi,"<a href=\"$link?page=$prev\">&lt;</a>");
    }
    //vorblättern einfügen
    if($page!=$pages && is_array($pagenavi)){
        array_push($pagenavi,"<a href=\"$link?page=$next\">&gt;</a>");
    }
    if(is_array($pagenavi)){
        echo implode('&nbsp;|&nbsp;',$pagenavi);
    }
}

Mit der Konstante "SPANNWEITE" kannst Du definieren, wieviele Seiten vor und nach der aktuellen angezeigt werden sollen.
Wer bei php-resource angemeldet ist, kann sich den Thread auch anschauen (steht im für Gäste unsichtbaren Codeschnipsel-Forum, dort gibt's noch so einige Beiträge zum Thema).

LG
 
Zurück