Blätterfunktion -> letzte Seite herausfinden?

Kalma

Erfahrenes Mitglied
Hey,

ich habe das Blätter-funktions-tutorial vor langer Zeit mal gelernt, und ein bisschen verfolständigt, z.b. mit < zurück und vor > links und das der User auswählen kann, wie viele Einträge er pro Seite haben will und so weiter.


Allerdings habe ich ein Problem bei dem "vor >" Link.
Man sollte ja nicht noch weiter vorblättern können, wenn man schon auf der letzten Seite ist, wär ja sinnlos.

Nur, wie finde ich die letzte Seite heraus?

Hier ist der oberste teil meines php-scriptes:
PHP:
<?php
	//jetzt lesen wir alle einträge aus.
	$Result 			= mysql_query("SELECT * FROM gaestebuch ORDER BY id DESC");
	$eintrage 		= mysql_num_rows($Result); //hier zählen wir zuerst alle einträge
	
	//jetzt prüfen wir, ob der user eine eigene anzahl pro seite angegeben hat
	if ($_GET['e'] == "") //wenn nicht, dann ist standart 15
		{
			$maxproseite		= 15;
		}
	else
		{
			//wenn doch, wird der wert hier aus der url geholt
			$maxproseite		= $_GET['e'];
		}
	
	
	$i = 0;
	
	$seiten				= $eintrage/$maxproseite; //hier errechnen wir alle seiten
	
	/* Alternativ ginge auch folgende schreibweise, die jedoch viel länger ist
		 $Query  = "SELECT * FROM gaestebuch ORDER BY id DESC;
		 $Result = mysql_query($Query);
	*/
	
	if (mysql_num_rows($Result) == 0) //mysql_num_rows($Result) zählt alle einträge in der db
		{ //wenn die anzahl der einträge 0 ist, dann gibts ne meldung
			echo "Es sind keine Einträge im Gästebuch";
		}
	else //wenn nicht, dann halt der rest
		{
			
		//hier die seiten ausgeben
		echo "<div class=\"seite\">";
			echo "Einträge pro Seite: ";
				echo "<a href=\"?index=i&e=5\">5</a> &middot; ";
				echo "<a href=\"?index=i&e=10\">10</a> &middot; ";
				echo "<a href=\"?index=i&e=20\">20</a> &middot; ";
				echo "<a href=\"?index=i&e=30\">30</a> &middot; ";
				echo "<a href=\"?index=i&e=40\">40</a> &middot; ";
				echo "<a href=\"?index=i&e=50\">50</a> &middot; ";
				echo "<a href=\"?index=i&e=60\">60</a> &middot; ";
				echo "<a href=\"?index=i&e=70\">70</a> &middot; ";
				echo "<a href=\"?index=i&e=80\">80</a> &middot; ";
				echo "<a href=\"?index=i&e=100\">100</a> &middot; ";
				echo "<a href=\"?index=i&e=1000000000000000000\">Alle</a>";
			echo "<br />";
			echo "Seite ";
				for($i = 1; $i - 1< $seiten; $i++)
					{              //Ausgabe der Linkliste
						if ($i == $_GET['page'])
							{
									//wenn die aktuelle seite mit der aus der url übereinstimmt, wird diese unterstrichen
    						echo "<a href=\"?gb=index&page=".$i."&e=$maxproseite\"><u>".$i."</u></a> &middot; "; 
    					}
    				else
    					{
    						echo "<a href=\"?gb=index&page=".$i."&e=$maxproseite\">".$i."</a> &middot; "; 
    					}
    			}
    echo "</div>";
    		
		echo "<hr />";
	
	if (!isset($_GET['page']))
		{
			//wenn keine seitenzahl gegeben ist, dann hier die einträge mit limit ($maxproseite) auslesen
			//limit beschränkt die einträge
			$Query = "SELECT * FROM gaestebuch ORDER BY id DESC LIMIT 0, ".$maxproseite.";";
		}
	else
		{
			//wenn die variable $p ($_GET['page']) aus der url gelesen wurde, dann hier die abfrage
			//mit den "$abeintrag" errechnen, und die einträge von $abeintrag bis $maxproseite auslesen
			$p				 = $_GET['page'];
			$abeintrag = $p * $maxproseite - $maxproseite; 
			$Query = "SELECT * FROM gaestebuch ORDER BY id DESC LIMIT ".$abeintrag.", ".$maxproseite.";";
		}
	$Result2 = mysql_query($Query);


und hier der teil für die Blätterfunktion
PHP:
				//die aktuelle seite wird mit GET ermittelt, und es wird einfach 1 seite abgezogen
				$last		= $_GET['page']-1;
				if ($_GET['page'] == 1) //wenn die aktuelle seite 1 ist, dann kann man nicht weiter zurückblättern
					{
						echo "<< letze &middot; ";
					}
				else
					{
						//andernfalls den link ausgeben
						echo "<a href=\"?gb=index&page=$last&e=$maxproseite\"><< letze</a> &middot; ";
					}
				
				
				for($i = 1; $i - 1< $seiten; $i++) //for ist auch eine schleife
					{             
						 //Ausgabe der Linkliste
						if ($i == $_GET['page'])
							{
								//wenn die aktuelle seite mit der aus der url übereinstimmt, wird diese unterstrichen
    						echo "<a href=\"?gb=index&page=".$i."&e=$maxproseite\"><u>".$i."</u></a> &middot; "; 
    					}
    				else
    					{
    						echo "<a href=\"?gb=index&page=".$i."&e=$maxproseite\">".$i."</a> &middot; "; 
    					}
    					
    			} //for beenden
    			
				//die aktuelle seite wird mit GET ermittelt, und es wird einfach 1 seite draufgerechnet
				$next		= $_GET['page']+1;
				if ($_GET['page'] == $seiten) //wenn die aktuelle seite die letzte ist, dann kann man nicht weiter vorblättern
					{
						echo " nächste >>";
					}
				else
					{
						//andernfalls den link ausgeben
						echo " <a href=\"?gb=index&page=$next&e=$maxproseite\">nächste >></a>";
					}


Wer kann mir helfen?
David
 
Ganz einfach: Die Menge der Einträge geteilt durch die Einträge, die du pro Seite anzeigen kannst, ergibt als Ergebnis die Anzahl der Seiten, die maximal gefüllt werden können. Einfachste Mathematik ;)

45 Einträge - 15 willst du pro Seite anzeigen lassen:

45/15 = 3 Seiten

also ist deine letzte Seite die Seite 3
 
Zurück