PHP + MySQL: Zeile zufällig bestimmen - Algorithmus
Mario
- datenbank
0 Tobias Kloth0 Mario0 Tobias Kloth0 Mario
0 Andavos
Hallo,
ich möchte über PHP zufällig genau einen Eintrag aus der Datenbank selektieren. Ich habe mir überlegt, eine Spalte mit aufsteigenden Zahlen zu definieren, mir über PHP eine Zufallszahl im Intervall auszudenken und dann die Abfrage zu setzen. Funktioniert meiner Meinung nach so lange, bis ich Datensätze lösche. Dann müßte ich jedesmal die ganze Tabelle durchgehen, um sicherzustellen, daß die Nummern fortlaufend bleiben und keine Löcher entstehen. Mal abgesehen, daß ich nicht so recht weis, wie ich einen solchen Durchlauf machen soll, gibt es vielleicht einen einfacheren Weg, einfach zufällig eine Zeile auszuwählen? (Ich bin in der Tabellenstruktu absolut ungebunden und kann noch alles verändern.) Danke im voraus!
Grüße aus Ulm,
Mario.
Hallo Mario,
ich möchte über PHP zufällig genau einen Eintrag aus der Datenbank selektieren.
lass das mysql selbst machen: http://www.mysql.de/doc/de/Mathematical_functions.html#IDX1232
Grüße aus Nürnberg
Tobias
Hallo,
der Zufallsgenerator ist nicht das Problem. Mein Problem ist, über was ich ihn laufen lassen soll. Sobald ich Datensätze lösche, habe ich Löcher im Intervall. Wie kann ich diese verhindern?
Gruß, Mario.
Hallo Mario,
der Zufallsgenerator ist nicht das Problem. Mein Problem ist, über was ich ihn laufen lassen soll.
hast du den Link angeschaut? ein 'SELECT * FROM tabelle ORDER BY RAND() LIMIT 1' gibt dir genau einen Datensatz aus der Tabelle 'tabelle' aus - das wolltest du doch, oder?
Sobald ich Datensätze lösche, habe ich Löcher im Intervall. Wie kann ich diese verhindern?
in welchem Interval? bei den ids ist das egal: http://www.dclp-faq.de/q/q-sql-ids.html - und eine Spalte nur um die Datensätze durchzunummerieren ist Verschwendung.
Grüße aus Nürnberg
Tobias
Hallo nochmal,
das heißt also ich brauche keinen index laufen zu lassen, oder? Sorry, das wußte ich nicht, ich dachte ich brauche ein eindeutiges Identifikationsmerkmal, um die Abfrage zu setzen. Danke für Deine weiterführenden Links. Ich denke, ich komme jetzt weiter!
Gruß, Mario.
Moin!
das heißt also ich brauche keinen index laufen zu lassen, oder?
Doch, das ist sehr anzuraten, damit du die Datensätze eindeutig identifizieren kannst. Nur ändert sich die ID eines Datensatzes niemals, sondern bleibt immer gleich. Dass dadurch mit der Zeit Löcher entstehen, ist normal und gewollt.
- Sven Rautenberg
Hallo,
in PHP gibt es einen zufallsgenerator, der zufällig eine Zahl in einem bestimmten Zahlenraum ausgibt.
$db_agfrage = "... WHERE id LIKE '$zufall'";
MFG
Andavos