[PHP] Blätterfunktion will nicht zur nächsten Seite blättern

digiTALE

Lt. Junior Grade
Registriert
Juli 2004
Beiträge
270
Hey,

habe hier ein Script mit dem ich die Ausgabe von Daten aus der MySQL Datenbank auf mehrere Seiten verteilen will.

PHP:
<?php
	$MysqlServer = mysql_connect("$hostname", "$benutzer", "$passwort");

	mysql_select_db("$database", $MysqlServer);

	$Result = mysql_query("SELECT * FROM $tabelle WHERE Geburtsdatum LIKE '$akdat.$monat.____'
ORDER BY 'Name' DESC", $MysqlServer)or die (mysql_error());

	$anz = mysql_num_rows($Result);

	$c=0;
	while($anz >0){
		$c++;
		$anz = $anz - 10;
	}

	//Prüft ob die Variable $page schon vorhanden ist.
	//($page wird später durch die links angegeben)
	//Sofern diese Variable nicht vorhanden sein sollte wird sie erstellt und auf 1 gesetzt.
	if(!isset($page))
	$page = 1;

	$pag = $page-1;

	//Falls die momentan betrachtete Seite grösser als 1 ist,
	//so werden die Links für "zurück" und "zur ersten Seite springen" erstellt.
	if($page > 1 ){
		echo "<a href=\"test.php?page=1\">«</a>&nbsp;";
		echo "<a href=\"test.php?page=".$pag."\">‹</a>&nbsp;";
	}

	//Hier werden die Seiten als Direktlink ausgegeben.

	for($b=1;$b<=$c;$b++){
		$site = $b;

		//Diese If-Abfrage ist nötig, um die Momentane Seite nicht als Link anzugeben.
		if(isset($page) && $page == $site){
			//die Momentane Seite ohne Link:
			echo $b."&nbsp;";
		}
		else {
			//Der auszugebende Link:
			echo "<a href=\"test.php?page=$site\">$b</a>&nbsp;";
		}
	}

	//Falls die momentan betrachtete Seite kleiner als die Gesamt-Anzahl der Seiten ist,
	//so werden die Links für "vor" und "zur letzten Seite springen" erstellt.
	$pag = $page+1;
	if($page < $c ){
		echo "<a href=\"test.php?page=".$pag."\">›</a>&nbsp;";
		echo "<a href=\"test.php?page=$c\">»</a>&nbsp;";
	}

	$array = array();
	while($l=mysql_fetch_array($Result)){
		array_push($array,$l);
	}

	//Anzahl der Einträge holen:
	$anzahl = mysql_num_rows($Result);

	//Nur die 10 Einträge anzeigen lassen, die die akutelle Seite ausgeben soll:
	for($x=($anzahl-10*$page+10)-1; $x>($anzahl-10*$page)-1; $x--){
		//Nur ausgeben wenn $x grösser als 0 ist:
	if($x >= 0){

	$id = $array[$x]['ID'];
?>
	<table width="474" cellpadding="0" cellspacing="0" align="center">
	<tr>
		<td width="40"><b><?php echo $array[$x]['ID']; ?></b></td>
		<td width="434"><a href="javascript:Fenster('win', 'popup/popup.php?id=
<?php echo $id; ?>', 0, 0, 640, 480, 0, 0, 0, 0, 0);"><?php echo $array[$x]['Titel']; ?></a><br></td>
    </tr>
	</table>

<?
  }
}
mysql_close();
?>
Wenn ich auf die 2te Seite klicken will, dann zeigt er mir nur die ersten 10 Datensätze an. Aber oben in der Adressliste zeigt er mir das er auf der 2ten Seite ist.

Wie kann ich das Problem lösen das ich auf die 2te bzw 3te usw komme?

mfg digiTALE
 
Darf ich dir einen anderen Ansatz zeigen:

Du kannst direkt in der Datenbank die Anzahl der zurückgelieferten Zeilen angeben:

Code:
SELECT * FROM tabelle LIMIT <offset>,<max.anzahl zeilen>
Offset ist hierbei die Zeile, ab der du die Ergebnisse willst. Max.anzahl zeilen ist die Anzahl der Zeilen die er dir maximal zurückgeben soll.

beispiel
Code:
SELECT * FROM tabelle ORDER BY id ASC LIMIT 0,10
liefert dir die ersten 10 Zeilen sortiert nach id aufsteigend.
 
ich sehe in dein php script 2 mal wo $pag vorkommt aber gedacht ist bestim $page soltles du mal ändern und schauen was passiert !
 
Habe das PHP Script nochmal ein bisschen umgeändert.

PHP:
<?php
$MysqlServer = mysql_connect("$hostname", "$benutzer", "$passwort");

mysql_select_db("$database", $MysqlServer);

$Result = mysql_query("SELECT * FROM $tabelle WHERE Geburtsdatum LIKE '$akdat.$monat.____' 
ORDER BY 'Name' DESC", $MysqlServer)or die (mysql_error());

$anz = mysql_num_rows($Result);

$c=0;
while($anz >0){
	$c++;
	$anz = $anz - 10;
}

if(!isset($page))
$page = 1;

$pag = $page-1;

for($b=1;$b<=$c;$b++){
	$site = $b;

	if(isset($page) && $page == $site){
		echo $b."&nbsp;";
	}
	else {
		echo "<a href=\"test.php?page=$site\">$b</a>&nbsp;";
	}
}

$array = array();
while($l=mysql_fetch_array($Result)){
	array_push($array,$l);
}

$anzahl = mysql_num_rows($Result);

for($x=($anzahl-10*$page+10)-1; $x>($anzahl-10*$page)-1; $x--){
if($x >= 0){

?>	
<table width="474" cellpadding="0" cellspacing="0" align="center">
<tr>
	<td width="40"><b><?php echo $array[$x]['ID']; ?></b></td>
	<td width="434"><a href="javascript:Fenster('win', 'popup/popup.php?id=<?php echo
$array[$x]['ID']; ?>', 0, 0, 640, 480, 0, 0, 0, 0, 0);"><?php echo $array[$x]['Titel']; ?></a><br></td>
</tr>
</table>
<?php
  }
}
mysql_close();
?>

Denke mal nicht das es an "$pag" lag !?

mfg digiTALE



edit : Kann mir denn keiner Helfen?
 
Zuletzt bearbeitet:
Zurück
Oben