muth Geschrieben 10. April 2004 Teilen Geschrieben 10. April 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 10. April 2004 Teilen Geschrieben 10. April 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 13. April 2004 Autor Teilen Geschrieben 13. April 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 13. April 2004 Teilen Geschrieben 13. April 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
given_to_fly Geschrieben 13. April 2004 Teilen Geschrieben 13. April 2004 mal angemerkt $host = "xxxxxx"; $name = "xxxxx"; $passwort = "xxxxx"; [/PHP] sehr ungeschickt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 13. April 2004 Autor Teilen Geschrieben 13. April 2004 Mist! Hab ich vergessen rauszumachen! Könnte das mal nen Admin ändern? War echt nett! Und danke für die Tipps! Sebastian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 13. April 2004 Teilen Geschrieben 13. April 2004 Original geschrieben von muth Mist! Hab ich vergessen rauszumachen! Könnte das mal nen Admin ändern? Ist editiert.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 13. April 2004 Autor Teilen Geschrieben 13. April 2004 Danke! Werd mir von jetzt an nen Zettel mit der Aufschrift "MySQL-Daten nicht veröffentlichen" an mein Schreibtisch kleben...! Sebastian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 13. April 2004 Autor Teilen Geschrieben 13. April 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 13. April 2004 Teilen Geschrieben 13. April 2004 $res = mysql_query("select count(*) from tabelle") $row = mysql_fetch_row( $res); $anzahl = $row[0]; [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 13. April 2004 Teilen Geschrieben 13. April 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 13. April 2004 Autor Teilen Geschrieben 13. April 2004 Danke! Ich werd da mal schauen! Sebastian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 13. April 2004 Teilen Geschrieben 13. April 2004 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 13. April 2004 Teilen Geschrieben 13. April 2004 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 13. April 2004 Teilen Geschrieben 13. April 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 13. April 2004 Autor Teilen Geschrieben 13. April 2004 Nochmal Danke an alle. Ich werde dies morgen mal probieren. Sebastian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 13. April 2004 Autor Teilen Geschrieben 13. April 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 13. April 2004 Teilen Geschrieben 13. April 2004 Du hast das LIMIT vergessen, so kann er mit den Zahlen nichts anfangen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 13. April 2004 Teilen Geschrieben 13. April 2004 Und mit 15-15 wird Mysql auch nichts anfangen können, das musst du vorher ausrechnen oder vernünftig quoten. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 13. April 2004 Autor Teilen Geschrieben 13. April 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 13. April 2004 Teilen Geschrieben 13. April 2004 Dann hast du mysql_select_db nicht aufgerufen! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 13. April 2004 Autor Teilen Geschrieben 13. April 2004 OK, mein Fehler! Vielen Dank! Sebastian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 14. April 2004 Teilen Geschrieben 14. April 2004 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?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
muth Geschrieben 14. April 2004 Autor Teilen Geschrieben 14. April 2004 Es funktioniert nun fast alles. Ich muss nur noch die Links für die Seiten 1, 2, 3... generieren. Nochmal DANKE an alle! Sebastian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 14. April 2004 Teilen Geschrieben 14. April 2004 versuch das ma: $iMaxSites = $iMaxRows % 15; for ( $i = 0; $i < $iMaxSites; $i++) { echo "<a href='meineSeite.php?seite=". $i ."'>Seite ". $i . "</a><br>"; } [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.