zufällig 3 datensätze auslesen

Ich hab folgendes....
PHP:
WHILE($auslesen_quiz = mysql_fetch_array(mysql_query("SELECT * FROM table WHERE check = 'x' ORDER BY RAND() LIMIT 3")))
{ echo "ID: $auslesen_quiz[ID] - $auslesen_quiz[age] ... dann nichts!<br>"; }

hab ich ersmta testweise... das ergebnis ist foglendes:
Code:
ID: 3 - 33 ... dann nichts!
ID: 2 - 22 ... dann nichts!
ID: 1 - 18 ... dann nichts!
ID: 1 - 18 ... dann nichts!
ID: 3 - 33 ... dann nichts!
ID: 1 - 18 ... dann nichts!
.
.
. usw

was isn dann da falsch? liegt das nur an dem while? gut, falls ja, weiss ich niht wie ich anders die verschiedenen datensätze auslese, das hab ich dann nur mit der while variante gelernt ;(
 
ATTSCHHH

Schau Dir bitte ERSTMAl die grundlagen von PHP & mysql an!
Besonders wie man mit php eine DB abfrage macht!

So NICHT, zumindest habe ich es noch nie so gesehen!
schaue mal hier vorbei http://www.dynamic-webpages.de oder schaue Dir hier im board einige beispiele an!
 
werd ich mal tun, aber ein funzendes beispiel:

aber so wie ich das gemacht habe liest der normaler weise alle (limiteriten oder nicht limitierten einträge aus) und gibt die halt einzelnd so lange wieder, wie es moeglich ist etwas aussa db auszulesen ;)....

das mach ich seit 2 hässlichen jahren so :p
 
bei deiner variante ist nur das problem, dass mysql_query() bei jedem durchlauf der while-schleife aufgerufen wird und daher auch jedesmal ein query an die db gesendet wird. das ist nicht sonderlich ökonomisch und außerdem verfälscht es halt sowas wie random-ergebnisse wie du ja merkst^^
aber zu grundlagen von php zählt das sicher nicht - die syntax ist ja korrekt :) ist eher eine frage der semantik, weil du das ergebnis sicher SO nicht wolltest^^

ein tipp: machs mal so, dass du das ergebnis halt erst in einer variable speicherst und dann mysql_fetch_array($var) im while-statement benutzt. das mit ORDER BY RAND() geht zwar, ist aber aus meiner erfahrung oft nicht besonders abwechslungsreich. machs besser mit ORDER BY MD5(RAND()) - das ist prima :)
 
ok, das klappt, dann bedanke ich mich ma bei dir SYNDROME :)

übrigends auch ne clevere idee die zufallszahl dann noch mal zu verschlüsseln :)

~danke schoen, lg by basti
 
@SynDrome: inwiefern abwechslungsreich? werden die ergebnisse dann noch "ducheinanderer"? kann mir das nicht unbedingt vorstellen *kopfkratz*
 
ich würd meinen er meint das die zahlen dann noch mehr "durcheinander" sind, denn ich hab ein testskript gemacht und manche zahlen kamen relativ selten vor, kann sein dass das der zufall gerade so wollte aber erstaunlicherweise kamen gewisse zahlen relativ selten vor...! besonders die am anfang und am ende von 0-10 die 0 und die 10 recht selten, kann aber halt auch nur sein das es echt zufall war ;)

~basti
 
jup genau wie pornex sagt ist es. ich musste mal ein bannerrotationsscript schreiben und da musste man prioritäten festlegen können. dabei muss natürlich auch der zufall eine rolle spielen. als ich dann testweise nur ca. 3 banner in der db hatte kam beim bloßen einsatz von RAND() immer der gleiche banner heraus - dann kam mir die idee mit dem MD5-hash, weil der ja von zahl zu zahl sehr stark variiert - et voilá :)
 
aah, na klar! ich hatte auch mal mit order by rand irgendwas rausgesucht, weiß aber net mehr was, auf jedenfall hab ich dann irgendwann auch die md5-variante genommen, jetzt weiß ich auch wieder wieso :)
 
Zurück