• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bestimmte Anzahl an Datensätzen aus MySQL Datenbank laden

lascaux

Mitglied
Da ich nicht so die große Leuchte in PHP bin, hab ich da mal eine Frage.


Ich habe eine Shoutbox geschrieben, die auf der Startseite ist. Jedes mal wenn ich einen Shout (kleine Nachricht) schreibe, wird diese auf der Startseite ganz oben angeschaut.

Jetzt möchte ich aber nur 30 Shouts auf einmal anzeigen lassen und per Link die nächsten 30 anzeigen lassen. Da ich allerdings kein auto_increment verwende, sehe ich da gerade keinen Lösungsansatz.

Meine Tabellenstruktur sieht wie folgt aus

Code:
id INT(11) PRIMARY KEY // als ID verwende ich microtime, die wird später auch als Datum/Uhrzeit ausgelesen
title varchar(105) NOT NULL // Selbsterklärend
description varchar(255) NOT NULL // ebenfalls Selbsterklärend
shout text NOT NULL // auch selbst erklärend

Die Daten hole ich mir so

PHP:
$sql = mysql_query('SELECT * FROM shout ORDER BY id DESC LIMIT 30');
while($row = mysql_fetch_array($sql)) {
..ausgabe
}

Kann man da eine Lösung mit mysql_num_rows erwirken? Oder auf eine andere Art, ohne dass ich gleich noch eine weitere Spalte einfügen muss?


lascaux
 
Werbung:
Da ich nicht so die große Leuchte in PHP bin, hab ich da mal eine Frage.
Ist aber eher ne MySQL frage ;-)
PHP:
$sql = mysql_query('SELECT * FROM shout ORDER BY id DESC LIMIT 30');
while($row = mysql_fetch_array($sql)) {
..ausgabe
}

Kann man da eine Lösung mit mysql_num_rows erwirken? Oder auf eine andere Art, ohne dass ich gleich noch eine weitere Spalte einfügen muss?
mit LIMIT 30 holst du doch sowieso nur 30 Datensätze raus. Die nächsten 30 bekommst du mit LIMIT 30,30 und darauffolgend die nächsten 30 mit LIMIT 60,30 u.s.w.

Die erste Zahl gibt an wo er anfangen soll und die Zweite die anzahl der Datensätze welche er holen soll.

LIMIT 0,30 entspricht dann LIMIT 30

MfG
 
Gut, also dann bei der LIMIT Angabe nicht 30 sondern 90,30 angeben.

Wie verbau ich das aber in einen Link so dass ich dann zu den nächsten 30 gehen kann? (Da kommt der PHP-Teil ins Spiel)


EDIT:
Eben kommt mir der gewünschte Ansatz..

Ich verbaue eine mysql_num_rows Abfrage, wenn es mehr als 30 Datensätze sind, bietet mir einen Link an ...

Über $_GET kann ich mir dann die MySQL Abfrage zurechtstutzen ... Ok, habs verstanden :)



Danke für den Ansatz


lascaux
 
Werbung:
PHP:
if (isset($_GET['start'])) {
  $start = (int) $_GET['start'];
}
else {
  $start = 0;
}
// Der Link:
echo '<a href="seite.php?start='.$start + 30.'">Nächste 30</a>';

$sql = mysql_query('SELECT * FROM shout ORDER BY id DESC LIMIT '.$start.',30');
while($row = mysql_fetch_array($sql)) {
  // Do something cool
}
So z.B.

MfG
 
Zuletzt bearbeitet:
So ähnlich hatte ich es auch im Kopf. Super, ich werde es gleich mal einbauen.

Vielen Dank nochmal.


lascaux
 
Zurück
Oben