mySQL random der letzten 5 einträge

hmm, habe einen (allerdings etwas aufwändigen) Lösungsweg gefunden. Es müsste bestimmt einfacher gehen, aber probier mal das:
PHP:
$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

Hmm das hätte bestimmt funktioniert wenn nicht bei dem erstem "[]" eintrag folgender Fehler auftritt: Fatal error: [] operator not supported for strings in /home/u0016453269/public_html/docs/marc/rechts.php on line 192
Was kann man da noch machen?
 
Die Fehlermeldung bedeutet, dass $id bereits vorher schon definiert wurde und zwar als String.

PHP:
$sql = "SELECT * FROM tabelle ORDER BY id DESC LIMIT = '5'";
$source = mysql_query($sql);
unset($id);
$id = array();
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];

So sollte es funktionieren.
 
Hey Danke Felix Jacobi ;) Hat geholfen.

ps: Sorry dass ich solange nicht zurückgeschrieben hatte, aber musste Rechner formatieren etc.
 
Hallo,

ich schieb noch zwei (ungetestete) Alternativen hinterher:
PHP:
<?php
$rand = rand(1, 5);
$sql = "SELECT * FROM tabelle ORDER BY id DESC LIMIT $rand";
$source = mysql_query($sql);
while ($row = mysql_fetch_assoc($source)) $result = $row;
print_r($result);
?>

PHP:
<?php
$sql = "SELECT * FROM (
SELECT * FROM tabelle ORDER BY id DESC LIMIT 5) AS tmp
ORDER BY RAND() LIMIT 1";
$result = mysql_fetch_assoc(mysql_query($sql));
print_r($result);
?>

Grüße,
Matthias
 

Neue Beiträge

Zurück