mySQL random der letzten 5 einträge

em3L

Mitglied
Moinsen liebe Tutorialer :D
Also ich möchte gerne über mySQL die letzten 5 einträge zufällig ausgeben jedoch bekomm ich mit dem befehl RAND() immer nur den zufall der kompletten Tabelle :'(
Weis wer wie man dass lößen kann?

So dass wäre dann mal meine kurze, aber knackige Frage :D
em3L
 
Mahlzeit,

du musst den SQL begrenzen, dies schaffst du mit diesem Beispiel
PHP:
FROM produkte WHERE id ORDER BY RAND() DESC LIMIT 5

versuch es hiermit
mfg
 
Hmm joa das ist glaub klar aber dann gibt er 5x einträge per zufall aus und nicht die "neuesten/letzten" 5 zufällige einträge!

Also z.B. ich habe 20 einträge nun will ich die neuesten 5 einträge immer zufällig pro seite aufrufen lassen aber die älteren 15 nicht!
Weis wer wie man dass realisieren kann?
 
Zuletzt bearbeitet:
hm, du könntest die letzten 5 Beiträge in ein Array schreiben und dann mit shuffle() "mischen". Ungefähr so:
PHP:
$sql = "SELECT beitrag FROM tabelle ORDER BY beitrag DESC LIMIT = '5'";
$source = mysql_query($sql);
while ($result = mysql_fetch_array($source)) {
   $beitrag[] = $result['beitrag'];
}
shuffle($beitrag);
foreach ($beitrag as $i) {
   echo $i;
}
 
Hmm dass wäre eine gute Idee jedoch möchte ich nur einen Eintrag anzeigen lassen! Und zwar mehrere Daten aus der Tabelle die zusammengehören also die dazugehörige ID, Datum, Zeit etc. und dass von den letzten 5 im Random ;)

Hmm deine Idee war glaub ich schonmal ein ansatz aber wie mach man dass nun dass die verschiedenen Einträge alle "gleich" shuffled werden?
 
Vielleicht das dann in eine Unterabfrage packen und dann bissl rumprobieren? Oder es auf der programm-seite entsprechend so erstellen, dass nur der 1. Eintrag angezeigt wird.
 
Vielleicht das dann in eine Unterabfrage packen und dann bissl rumprobieren? Oder es auf der programm-seite entsprechend so erstellen, dass nur der 1. Eintrag angezeigt wird.

Hmm Joa aber ich will ja die letzten 5 ;) Und nicht einfach 1. Eintrag^^
Ich denke man könnte esmit arrays lößen nur wie dann also zufall bestimmen, dass alle angewälten arrays den gleichen zufallswert haben?
 
Ich meinte ja schon die Abfrage mit ORDER BY feld DESC LIMIT 5 ;) Dann hast du immer die neuesten 5 Einträge, die dann ins Array und durchmixen, dann den ersten Wert nehmen ;)
 
hmm, habe einen (allerdings etwas aufwändigen) Lösungsweg gefunden. Es müsste bestimmt einfacher gehen, aber probier mal das:
Code:
$sql = "SELECT * FROM tabelle ORDER BY id DESC LIMIT = '5'";
$source = mysql_query($sql);
while ($result = mysql_fetch_array($source)) {
   $id[] = $result['id'];
   $beitrag[] = $result['beitrag'];
   $time[] = $result['time'];
}
$rand = rand(0, 4);
echo $id[$rand];
echo $beitrag[$rand];
echo $time[$rand];
Du schreibst die Daten in einzelne Arrays, die du mit $id[0] bis $id[4] aufrufen kannst. Dafür benutzt du rand();, um ein zufälliges auszugeben.
Hoffe es ist verständlich...
vG
David
 

Neue Beiträge

Zurück