Mysql + PHP] Datensätze zufällig ausgeben

Du hast Recht, ein einfaches RAND() bringt nicht viel.

So geht es etwas besser:
SELECT id, RAND() + RAND() FROM tabelle WHERE kat = 1 ORDER BY RAND()
 
okay, hier meine master lösung, ansonsten probier mal das was yson geschrieben hat:

$result = mysql_query("SELECT id FROM mathetrainer where katschluessel='$_POST[katschluessel]'");
$anzahl=mysql_num_rows($result);

$zufallswert = rand($anzahl);

$abfrage = "SELECT * FROM mathetrainer WHERE katschluessel = '$_POST[katschluessel]' LIMIT $zufallswert,1";
 
Ich habs jetzt anders gemacht:

ich numeriere jetzt einfach innerhalb der Kategorien von 1 bis x - dann hat sich das problem erledigt.
Vielen Dank aber trotzdem!
 
Ich arbeite zur Zeit an einem Trading Card Game, bei dem die User wenn sie sich anmelden 4 zufällig ausgewählte Karten als "Startkapital" bekommen.
Die zufällige Abfrage der Karten funktioniert auch einwandfrei, allerdings fände ich es gut, wenn man irgendwie sicher stellen könnte, dass nicht zwei Karten aus den gleichen Sets ausgewählt werden.
Ist das möglich?

Aufbau der Datenbank
Code:
id | set | nummer

Auslesen aus der Datenbank
PHP:
$sql = 'SELECT name,nummer FROM cards ORDER BY rand() LIMIT 0,4';
 
Ich hätte da noch einen Vorschlag

PHP:
$query = "SELECT * FROM mathetrainer WHERE id=(SELECT id FROM mathetrainer WHERE katschluessel = '".$_POST[katschluessel]."' ORDER BY RAND() LIMIT 1)";

Nicht getestet müsste aber funktionieren
 
Zurück