Frage zum Blätterfunktions-Tutorial *helpless*

Kalma

Erfahrenes Mitglied
Hey,

ich hatte ja ein Problem mit ner Blätterfunktion und kurz darauf folgte ein Tutorial von Gumbo:

http://www.tutorials.de/forum/php-tutorials/257602-blaetterfunktion.html

Allerdings fehlt da doch einiges oder? z.b.: Wie liest man genau die Einträge aus der Datenbank aus? Einfach ganz Normal ohne Limit und so?
Wär nett, wenn mir das einer mal als Beispiel in mein News-Script einbauen könnte :)

PHP:
<div class="ptitel">News</div>
<?php
	//hier soll ausgegeben werden

	//hier soll eine Blätterfunktion hin.
	echo "<p />";
	
	
	
	
	//while schleife
	$z = 0; //für die zeilenfarben
	while ($n = mysql_fetch_array($news))
		{
			//user auslesen
			$user = mysql_query("SELECT * FROM user WHERE `id`=".$n['aid']."");
			$u		= mysql_fetch_array($user);
									
			if ($z%2 == 0) //die unterschiedlichen zeilenfarben ermitteln
				{
					echo "<div class=\"eintrag1\">";
				}
			else
				{
					echo "<div class=\"eintrag2\">";
				}
					echo "<b>".$n['titel']."</b>";
					echo "<br />";
					echo "".nl2br($n['news'])."";
					echo "<br />";
					echo "<div align=\"right\">Verfasst von ".$u['nickname']." / ".$n['erstellt']."</div>";
					echo "<p />";
					echo "</div>";
					$z++;
		}
		
	echo "<p />";
	
	//und hier soll eine Blätterfunktion hin...
	echo "<p />";

	} //prüfung der einträge beenden
?>



Thx im Vorraus :):):):):)
David
 
Allerdings fehlt da doch einiges oder?
In dem Tutorial geht, soweit ich das nach einem kurzen Blick nachvollziehe, lediglich um die Nummerierung. Die Darstellung der Eintraege der anzuzeigenden Seite musst Du schon noch selbst machen.
Wie liest man genau die Einträge aus der Datenbank aus? Einfach ganz Normal ohne Limit und so?
Die Eintraege selbst musst Du dafuer nicht aus der Datenbank holen, da diese fuer die Funktion uninteressant sind. Lediglich die Anzahl der Eintraege ist hier interessant, und da wuerde ein Limit wohl doch eher stoeren, nicht? ;)
 
Da die Datenquelle nicht immer eine Datenbank ist, habe ich diesen Teil außer Acht gelassen. Außerdem ist dieser Teil besonders dank einer Datenbank eigentlich recht trivial.
 
Hey,

danke schonmal für die Antworten...

Habe mir jetzt meine eigene Blätterfunktion gebaut. Sie basiert auf einigen Ausschnitten von Gumbo's Tutorial...

Alles soweit gut, bis auf, dass nur Ausschnitte gezeigt werden.


Hier mein Code:
PHP:
<?php
//connecten

		//auslesen
		$Result			= mysql_query("SELECT * FROM news ORDER BY id DESC");
		
		//auf welcher seite sind wir gerade?
		$aseite			= "".$_GET['section']."";
		
		//erstma nen bisschen rechnen
		$itemCount 		= mysql_num_rows($Result); //errechnet alle einträge
		$itemsPerPage	= 10;
		$pageCount 		= ceil($itemCount/$itemsPerPage);
		$displayRange = 5;
		
		//aktuelle seite
		if (isset($_GET['page']))
			{
				$currentPage	= $_GET['page'];
			}
		else
			{
				$currentPage = 1;
			}
		
		//errechnete werte ausgeben
		echo "Einträge: $itemCount <p /> Einträge pro Seite: $itemsPerPage <p /> Aktuelle Seite: $currentPage<p /> Alle Seiten: $pageCount <p><hr /></P>";
		
		
		//erstmal geben wir alle Seiten aus :)
		
		//automatischer link zur vorigen seite
		if ($currentPage -1 <= 0)
			{
				echo "<< ";
			}
		else
			{
				echo "<a href=\"?page=".($currentPage-1)."\"><<</a> ";
			}
		
		
		//alle seiten
    for($i=1; $i <= $pageCount; $i++) 
    	{
        if ($currentPage == $i)
        	{
        		echo "$i ";
        	}
        else
        	{
        		echo "<a href=\"?page=$i\">$i</a> ";
        	}
    	}
		
		//automatischer link zur nächsten seite
		if ($currentPage + 1 > $pageCount)
			{
				echo " >>";
			}
		else
			{
				echo " <a href=\"?page=".($currentPage+1)."\">>></a>";
			}
			
		
		
		echo "<p><hr /></p>";
		
		
		//jetzt die abfragen mit limits...
		if (!isset($_GET['page']))
			{
				$Lesen 			= "SELECT * FROM news ORDER BY id DESC LIMIT 0, ".$itemsPerPage.";";
			}
		else
			{
				$abeintrag 	= $_GET['page'] * $itemsPerPage - $itemsPerPage;
				$Lesen 			= "SELECT * FROM news ORDER BY id DESC LIMIT ".$abeintrag.", ".$itemsPerPage.";";
			}
				$Result 		= mysql_query($Lesen);
		
		//ausgeben
		while ($e = mysql_fetch_array($Result))
			{
				echo "".$e['titel']."";
				echo "<br />";
				echo "".nl2br($e['text'])."";
				echo "<p><hr /></p>";
			}
	?>


Ich habe es probiert, mit dem Ausschnit aus Gumbo's Tutorial, aber der will nicht :(


SO, muss wieder zur schule :mad:

David
 
Die gezeigte Funktion war eigentlich schon dazu gedacht, übernommen zu werden. Nur habe ich mit dem Schlusswort ausdrücken wollen, dass zusätzlich auch das Tutorial gelesen werden sollte um die Logik zu verstehen.
 
Ich hab es gelesen. 5 mal sogar :)

Zudem habe ich es auch übernehmen wollen, jedoch fehlten einige Variablen wie $url. Ich fand auch keine Beschreibung, wie diese zu definieren ist.
 
Der $url-Parameter bestimmt in der Beispielfunktion den URL, der in die href-Attribute eingesetzt wird. Dabei muss der URL einen Platzhalter für die Seitenzahl im sprintf()-Format haben.
 
Hey,

habe es jetzt fast hinbekommen, allerdings noch nicht richtig...

Wer kann sich das mal angucken?

Wär echt geil:

PHP:
		function blaettern($itemCount, $itemsPerPage, $pageCount, $displayRange)
			{
				$sort = $_GET['sort'];
				
				if (!isset($_GET['section']))
					{
						$aseite = "news";
					}
				else
					{
						$aseite	= $_GET['section'];
					}
				
				//aktuelle seite
				if (isset($_GET['page']))
					{
						$currentPage	= $_GET['page'];
					}
				else
					{
						$currentPage = 1;
					}
		
				//zur ersten seite gehen
				if ($currentPage == 1)
					{
						echo "Erste ";
					}
				else
					{
						echo "<a href=\"?section=$aseite&page=1&sort=$sort\">Erste</a> ";
					}
		
				//automatischer link zur vorigen seite
				if ($currentPage -1 <= 0)
					{
						echo "<< &middot; ";
					}
				else
					{
						echo "<a href=\"?section=$aseite&page=".($currentPage-1)."&sort=$sort\"><<</a> &middot; ";
					}
		
		
				//alle seiten (formatiert: 1.. 3 4 5 6 ..8)
				for($i=1; $i <= $pageCount; $i++) 
					{
						if ($i == 1)
  						{
    						echo "<a href=\"?section=$aseite&page=$i&sort=$sort\">$i</a> &middot; ";
    						
    						if (abs($i - $currentPage) > 3)
    							{
      							echo "... &middot; ";
    							}
  						}
  
  					if (abs($currentPage - $i) <= $pageCount && ($i != $pageCount) && ($i != 1))
							{
								echo "<a href=\"?section=$aseite&page=$i&sort=$sort\">$i</a> &middot; ";
							}
  
  					if ($i == $pageCount)
  						{
    						if (abs($i - $currentPage) > 3)
    							{
     								echo "... &middot; ";
    							}
    						
    						echo "<a href=\"?section=$aseite&page=$i&sort=$sort\">$i</a> &middot; ";    
  						}  
					}

				
				//automatischer link zur nächsten seite
				if ($currentPage + 1 > $pageCount)
					{
						echo " >>";
					}
				else
					{
						echo " <a href=\"?section=$aseite&page=".($currentPage+1)."&sort=$sort\">>></a>";
					}
		
				//zur letzten seite gehen
				if ($currentPage == $pageCount)
					{
						echo " Letzte";
					}
				else
					{
						echo " <a href=\"?section=$aseite&page=$pageCount&sort=$sort\">Letze</a>";
					}
			}


Mein Problem: Der macht den Teil mit der for-schleife nicht korrekt. Wenns nur eine Seite gibt, siehts wie folgt aus:
Erste << · 1 · 1 · >> Letzte

Und sonst gehts auch nicht richtig, ergebniss
http://dfmusik.de/?section=bands

er soll es wie folgt anzeigen
Erste << · 1 · ... · 3 · 4 · 5 · ... · 7>> Letzte



Schönen Abend noch
David :eek:
 
Zurück