phpbar.de logo

Mailinglisten-Archive

[php] Haeppchenweis Datenausgabe

[php] Haeppchenweis Datenausgabe

Ronald Hartwig h8326458_(at)_zechine.wu-wien.ac.at
Mon, 06 Dec 1999 18:48:58 +0100


> ich verzweifle gerade daran Seitenweise Daten auszugeben , ich meine die
> Datensatzausgabe auf eine bestimmte Anzahl pro Seite zu begrenzen. Ich hab
> auch irgendtwo ein Beisüpiel gesehen und hab es aber dann wieder aus den
> augen verloren,,...
> 
> hat da jemand ein Tip für mich?
> 

hallo peter,

ich habe das so gemacht (incl. navigation, ohne layout):

$limit:anzahl der datensaetze auf einer seite
$back:variable fuers zuruckblaettern
$forth:variable fuers vorwaertsblaettern
$floor: nummer des 1. auf einer seite angezeigten datensatzes
$aktseite: aktuelle angezeigte seite

<code>

$limit=30;
if(isset($back)){$floor=$back;$aktseite--;}  //wenn zurueckgeblaettert,
setze variablen
if(isset($forth)){$floor=$forth;$aktseite++;} //detto fuer vorwaertsbl.
if(!isset($floor)){$floor=0;$aktseite=1;} //beim 1.seitenaufruf setze
variablen

$back=$floor-$limit;  //fuer das naechste zurueckblaettern setze
variablen
$forth=$floor+$limit; //detto fuer vorwaertsbl.

// wenn die gesamtanzahl der datensaetze noch nicht gezaehlt worden
sind, mach das
if(!isset($numrows))
	{
	$query="SELECT id FROM $table WHERE blabla";
	$select=mysql($database,$query);
	$numrows=mysql_numrows($select);
	}

//seitenkopf mit navigationslinks

$seitenanz=ceil($numrows/$limit); //seitenanzahl ermitteln
if($floor>0)
	{
	echo"<a
href='$PHP_SELF?back=$back&aktseite=$aktseite&numrows=$numrows'>zurueckblaettern</a><br>";
	}

if($seitenanz>1)echo"<b>seite $aktseite von $seitenanz</b><br>";

if($forth<$numrows)
	{
	echo"<a
href='$PHP_SELF?forth=$forth&aktseite=$aktseite&numrows=$numrows'>vorwaertsblaettern</a><br>";
	}

//die eigentliche db-abfrage

$query2="SELECT bla FROM $table WHERE bla LIMIT $floor,$limit";
$select2=mysql($database,$query2);

(tabelle generieren.....)

//seitenfuss mit der moeglichkeit, eine seite direkt anzuspringen

if($seitenanz>1)
	{
	echo"seite: ";
	for($i=1;$i<=$seitenanz;$i++)
		{
		$floor=($i*$limit)-$limit;
                
		if($i==$aktseite)
			{
			echo"[$i] ";
			}
		else
			{
			echo"[<a
href='$PHP_SELF?aktseite=$i&numrows=$numrows&floor=$floor'>$i</a>] ";
			}
		}
	}

</code>

das funktioniert. du kannst es dir unter
http://www.audiomat.at/index.php3?action=nachges
auch ansehen. moeglicherweise etwas umstaendlich und naiv. wenn
jemand meint, der code ist mist oder ineffizient, dann moege er/sie mir
die augen oeffnen!

ronald hartwig


php::bar PHP Wiki   -   Listenarchive