Zum Inhalt springen

Problem mit Gästebuch


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...