Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

also: Ich hab mir ein ganz kleines Gästebuch programmiert. Die Betonung liegt auf klein! So, nun möchte ich die Einträge Seitenweise darstellen. Also die ersten 15 auf der ersten, die nächsten 15 auf der zweiten. Wie mach ich das? Ich habe da an eine While-Schleife gedacht. Habe ich auch so gemacht, dass er mir nur 15 Einträge anzeigt. Und wie kann ich das jetzt machen, dass er mir auf der zweiten Seite die nächsten 15 Einträge anzeigt und nicht wieder die ersten 15. Ich hoffe ihr versteht, was ich meine.

Hier ist mal der Code:

<?php
$host = "xxxxx";
$name = "xxxxx";
$passwort = "xxxxx";

$sql = mysql_connect($host, $name, $passwort);
$dbname = "xxxxx";
mysql_select_db($dbname);

$anfrage = mysql_query( "SELECT id,name,email,homepage,ort,nachricht FROM `gaestebuch` ORDER BY id DESC LIMIT 0, 30" )
or die ( "Konnte Gästebuch nicht anzeigen: ".mysql_error() );
while ($datensatz = mysql_fetch_object($anfrage) AND $i <= 15){
$i = $i + 1;
print "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\">";
print "<tr>";
print "<td colspan=\"4\"><font color=\"#7DA9F6\">leer</font></td>";
print "</tr>";
print "<tr>";
print "<td width=\"11%\"><strong>Name:</strong></td>";
print "<td width=\"32%\">$datensatz->name</td>";
print "<td width=\"18%\"><strong>aus dem Ort:</strong></td>";
print "<td width=\"39%\">$datensatz->ort</td>";
print "</tr>";
print "<tr>";
print "<td><strong>E-Mail:</strong></td>";
print "<td><a href=\"mailto:$datensatz->email\">$datensatz->email</a></td>";
print "<td><strong>Homepage:</strong></td>";
print "<td><a href=\"$datensatz->homepage\">$datensatz->homepage</a></td>";
print "</tr>";
print "<tr>";
print "<td colspan=\"4\"><strong>Nachricht:</strong></td>";
print "</tr>";
print "<tr>";
print "<td colspan=\"4\"><font color=\"#333333\">$datensatz->nachricht</font></td>";
print "</tr>";
print "</table>";
}
?>[/PHP]

Danke im Vorraus!

Sebastian

Geschrieben

Hallo,

das zählen in der while Schleife ist überflüssig. Du hast ja im SQL Teil geschrieben LIMIT 0,30. Das heißt er würde nur die ersten 30 ausgeben. Änder die 30 in eine 15 und dann kommen nur die ersten 15 Datensätze.

Das mit den Seitenzahlen ist relativ einfach.

Du mußt, wenn Du auf z. B. Seite 2 gehst, die Seitenzahl als Parameter mitgeben.

Beispiel: <a href="gaestebuch.php?seite=2>Seite 2</a>

Dann mußt Du nur abfragen ob $_GET['seite'] gefüllt ist. Wenn nein, nimmst Du deine bisherige SQL Anweisung. Wenn $_GET['seite'] gefüllt ist, dann machst Du folgendes:


$hilf = $_GET['seite'] * 15;
$sql = "select .... from tabelle where .. limit $hilf-15, $hilf
[/php]

Heißt bei Seite 2 = limit 15,30, Seite 3 = 30,45 usw.

Frank

Geschrieben

Hi,

DANKE, das hört sich sehr einfach an. Ich muss dann nur noch die Anzahl der Datensätze in der Tabelle ermitteln, oder? Gibt es da einen bestimmen Befehl dazu?

Sebastian

Geschrieben
Original geschrieben von muth

Hi,

DANKE, das hört sich sehr einfach an. Ich muss dann nur noch die Anzahl der Datensätze in der Tabelle ermitteln, oder? Gibt es da einen bestimmen Befehl dazu?

Sebastian

select count(*) from tabelle

Geschrieben

Mist! Hab ich vergessen rauszumachen! Könnte das mal nen Admin ändern?

War echt nett!

Und danke für die Tipps!

Sebastian

Geschrieben

Danke!

Werd mir von jetzt an nen Zettel mit der Aufschrift "MySQL-Daten nicht veröffentlichen" an mein Schreibtisch kleben...:)!

Sebastian

Geschrieben

Hmmm...ich bins nochmal!

Also, ich hab das ganze jetzt mal so gemacht:

// $anzahl = mysql_query( "SELECT count(*) from `gaestebuch`" );
mysql_close($sql);
// print $anzahl;[/PHP]

Er gibt mir, wenn ich das Auskommentieren natürlich weglasse, dann gibt er mir nur dies aus: [b]Resource id #5[/b]

Ich würde es ja noch verstehen, wenn statt einer 5, eine 4 stehen würde. Es sind ja nur 4 Einträge in der Datenbank...:confused: ! Kann mir da nochmal einer helfen...! Schon mal DANKE im Vorraus!

Sebastian

Geschrieben
Original geschrieben von palvoelgyi

Das ist die ID der Verbindung. Du mußt mit mysql_num_rows oder die Anzahl abfragen.

Mehr unter http://www.selfphp.info/funktionsreferenz/mysql_funktionen/mysql_num_rows.php.

Frank

das ist hier nicht ganz richtig.

wenn du das mit num rows machen willst musst du das auf deine result id beziehen, mit der du im select die komplette tabelle abgefragt hast.

die version die ich oben vorgeschlagen habe, gibt dir nur 1nen datensatz, der auch nur ein feld "besitzt" und in diesem feld steht auch schon die anzahl drinne!

Geschrieben
Original geschrieben von kills

wenn du das mit num rows machen willst musst du das auf deine result id beziehen, mit der du im select die komplette tabelle abgefragt hast.

ist vielleicht nicht ganz verständlich:

Also mit dem mysql_num_rows kannst du abfragen wieviel Datensätze in dem result-Set drinne sind, dass du vorher per SQL abgefragt hast. Das muss natürlich nicht zwingend heißen, dass sich das auf die komplette Tabelle bezieht, da ja durch einschränkungen im Where - Zweig eines SQL ja die Datensatzmenge stark variieren kann.

Geschrieben
Original geschrieben von kills

Also mit dem mysql_num_rows kannst du abfragen wieviel Datensätze in dem result-Set drinne sind, dass du vorher per SQL abgefragt hast. Das muss natürlich nicht zwingend heißen, dass sich das auf die komplette Tabelle bezieht, da ja durch einschränkungen im Where - Zweig eines SQL ja die Datensatzmenge stark variieren kann.

Ich habe doch auch nichts anderes behauptet. Mit mysql_num_rows erhält er die Anzahl der Datensätze die die SQL Anweisung von Ihm zurück liefert.

Frank

Geschrieben

Also, ich bins nochmal. Ich hab doch schon nen bissl probiert und natürlich gleich wieder Probleme. Ich hoffe ich nerv nicht, bin halt noch nen Anfänger...:)! Ich hab den Code folgendermaßen geändert:

$sql = mysql_connect($host, $name, $passwort);
$seitenanzahl = $seite * 15;

// $res = mysql_query( "select count(*) from `gaestebuch`" );
// $row = mysql_fetch_row($res);
// $anzahl = $row[0];

$anfrage = mysql_query( "SELECT id,name,email,homepage,ort,nachricht FROM `gaestebuch` ORDER BY id DESC $seitenanzahl-15, $seitenanzahl" )
or die ( "Konnte Gästebuch nicht anzeigen: ".mysql_error() );[/PHP]

Und bekomm nun diese Fehlermeldung:

[b]Sebastian's Gästebuch: Hinterlasse mir eine Nachricht!

Konnte Gästebuch nicht anzeigen: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '15-15, 15' at line 1[/b]

Ich hab doch alles richtig gemacht...oder?

Sebastian

Geschrieben

OK, wenn ich das nun gemacht habe, bekomm ich die Meldung No Database selected! Irgendwie habe ich nun alles verhunzt...:( !

Nun sieht der Code so aus:

$anfrage = mysql_query( "SELECT id,name,email,homepage,ort,nachricht FROM `gaestebuch` ORDER BY id DESC LIMIT $seitenanzahlminus, $seitenanzahl" )
or die ( "Konnte Gästebuch nicht anzeigen: ".mysql_error() );[/PHP]

Trotzdem schon mal danke...!

Sebastian

Geschrieben
Original geschrieben von palvoelgyi

Ich habe doch auch nichts anderes behauptet. Mit mysql_num_rows erhält er die Anzahl der Datensätze die die SQL Anweisung von Ihm zurück liefert.

Frank

ja sicher wollte dir auch nichts unterstellen :-)

aber ich denke da er hier mit limit 30 arbeitet, wird er bei num_rows immer eine 30 oder weniger erhalten, oder?!

Geschrieben

Es funktioniert nun fast alles. Ich muss nur noch die Links für die Seiten 1, 2, 3... generieren. Nochmal DANKE an alle!

Sebastian

Geschrieben

versuch das ma:


$iMaxSites = $iMaxRows % 15;
for ( $i = 0; $i < $iMaxSites; $i++) {
echo "<a href='meineSeite.php?seite=". $i ."'>Seite ". $i . "</a><br>";
}
[/PHP]

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...