Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   random in php en mysql (https://forum.scholieren.com/showthread.php?t=12962)

pietje63 19-01-2002 13:44

random in php en mysql
 
ik heb een database met
1/ een id nummer
2/ een tekst
3/ nog wat meer dingen die verder van minder belang zijn hiervoor

nu wil ik op mijn site een random tekst hiervan nemen, daarbij loop ik echter tegen enkele problemen op. Ik gebruikte de functie rand(1, 40) (omdat momenteel mijn hoogste row 40 is)

1: ik heb het idee dat ik de ene tekst meer krijg dan de andere (dat er dus niet goed een random nummer wordt getrokken)
2: als ik rows verwijder/toevoeg klopt hij niet meer, dan kan ik (als er eentje is verwijderd) een lege output krijgen, of sommige teksten worden helemaal niet gebruikt (omdat de rand maar t/m 40 gaat)

weet iemand hiervoor een betere oplossing? ik zat zelf aan een array te denken, waar dan met echo de id's in worden gezet. Maar heb nog nooit met arrays gewerkt, dus dat lukte mij niet helemaal. en dan ben ik nog steeds niet van het "niet helemaal goed random probleem" af

Jon 19-01-2002 13:52

SELECT * FROM meuk ORDER BY RAND() LIMIT 1;

pietje63 19-01-2002 14:27

Citaat:

Jon schreef:
SELECT * FROM meuk ORDER BY RAND() LIMIT 1;
werkt dat zo?
maar dan zit ik nog steeds met het probleem dat het niet helemaal random is... ik heb een keer gehoord dat er ook een soort gelijke functie is als RAND maar dan beter,,



Jon 19-01-2002 14:51

Rand(om) is random, oftewel willekeurig is willekeurig. En bovendien scheelt het werk om mySQL te laten kiezen, in plaats van dat later met PHP te doen. Als je het per se in PHP wilt doen moet je niet vergeten de rand()-functie seed te geven, anders heb je kans dat ie telkens de zelfde willekeurige waarde pakt:

srand ((double) microtime() * 1000000);

Test het anders als je het niet vertrouwt. Maak een loopje waarbij je 10.000 keer iets selecteert en tel welke rows hij telkens pakt.

[Dit bericht is aangepast door Jon (19-01-2002).]

pietje63 19-01-2002 15:22

Citaat:

Jon schreef:
Rand(om) is random, oftewel willekeurig is willekeurig. En bovendien scheelt het werk om mySQL te laten kiezen, in plaats van dat later met PHP te doen. Als je het per se in PHP wilt doen moet je niet vergeten de rand()-functie seed te geven, anders heb je kans dat ie telkens de zelfde willekeurige waarde pakt:

srand ((double) microtime() * 1000000);

Test het anders als je het niet vertrouwt. Maak een loopje waarbij je 10.000 keer iets selecteert en tel welke rows hij telkens pakt.

[Dit bericht is aangepast door Jon (19-01-2002).]

zoiets was het ja, dank je, dat seed zal het zijn

F10®!@n 19-01-2002 16:31

Citaat:

pietje63 schreef:
zoiets was het ja, dank je, dat seed zal het zijn

Maar is dus niet nodig als je mySQL het laat doen...


Alle tijden zijn GMT +1. Het is nu 05:35.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.