Seitenzahl beschränken?

StefanR

Erfahrenes Mitglied
Hallo,

ich habe da eine Aufgabe, die ich im Moment leider nicht alleine lösen kann. Zumindest fehlt mir ein Ansatz.

Und zwar bin ich dabei eine Navigationsklasse zu programmieren, die Datensätze quasi Seitensweise ausgibt. Zumindest legt sie den Grundstein dafür. So nun möchte ich aber nicht das bei sehr vielen Datensätzen die Seiten von 1- 100 oder so ausgebene werden. Also so wie hier im Forum da werden ja auch nur bestimmte Seitenzahlen angezeigt.

Hier ist mal die Funktion die die Navigation erstellt:
PHP:
function navi ($limit=2)
		{
			$navi='';
			if ($this->total<=$perpage)
			{
				return $navi;	
			}
			else 
			{
				//wieviele seiten
				$pages=intval(ceil($this->total/$this->perpage));
				
				//errechnet die aktuelle seite
				$act_site=intval(ceil(($this->site+$this->perpage) / $this->perpage));
				
				$count=1;
				
				//errrechnet den zurücklink
				$zur=($this->site-$this->perpage);
					
				if ($zur >= 0) 
				{
					$navi.="<a href=\"".$this->url."/?".$this->arg."=".$zur."\">zur&uuml;ck</a>  ";	
				}
				
				while ($count<=$pages)
				{	
					$rows=($count-1)*$this->perpage;
						
					if ($count==$act_site)
					{
						$navi.="(".$count.") ";	
					}
					else 
					{									
						$navi.="<a href=\"".$this->url."/?".$this->arg."=".$rows."\">".$count."</a> ";
					}
					
					$count++;
											
				}
				
				//errechnet den vorwärts link
				$vor=($this->site + $this->perpage);
				
				if ($this->total >= $vor) 
				{					
					$navi.="<a href=\"".$this->url."/?".$this->arg."=".$vor."\">weiter</a>  ";		
				}
				
				return $navi;
			}	
		}

Und der Übersichthalber habe ich mal die Klasse angehängt. ;)
 

Anhänge

Hi!

Du könntest Bereiche ermitteln, die angezeigt werden sollen. Zum Beispiel von Seite 1 bis 3 und Seite (n-3) bis (n+3) [wenn n die aktuelle Seite ist] und von Seite m-3 bis m [wenn m die letzte Seite ist].

Also muss vor dein if ($count==$act_site) so etwas, wie:
PHP:
if (($count <= 3) or (($count >= $act_site - 3) and ($count <= $act_site + 3)) or ($count >= $max - 3))

Mamphil
 
Zurück