[php/mysql/rand] random row uit table?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
De search werkt al een paar dagen niet. Heel naar, want ik kan me voorstellen dat dit vaker gevraagd is. Maargoed, ik doe een poging en wellicht geeft iemand een linkje. :)

Volgens de manual kan je met 't volgende een random row uit een table vissen:

code:
1
select * from quotes order by rand() limit 1


In MySQL lijkt dat inderdaad te werken. Maar wat schetst mijn verbazing: als ik 't zelfde vanuit PHP aanroep, dan krijg ik telkens dezelfde regel terug. Hoe kan dat?

Ik heb het eea. nu met 2 regels sql en een stukje php opgelost, maar dat vind ik dus aanzienlijk minder elegant dan een directe oplossing.

[ specs ] [ Tweaker gallery ]


Acties:
  • 0 Henk 'm!

  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 12:26
misschien moet je de randomizer eerst nog 'seeden' ?

Acties:
  • 0 Henk 'm!

  • FlowinG
  • Registratie: Maart 2003
  • Laatst online: 19-09 17:00
zoeken gaat bij mij perfect:
http://www.google.nl/sear....tweakers.net&btnG=Search :P

[ Voor 7% gewijzigd door FlowinG op 08-04-2004 19:39 ]


Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Handig die Google. :) Bedankt, dat gaf me de oplossing: [rml][ php/mysql] random record uit dbase halen[/rml] - methode van D32 werkt inderdaad. Gekke is dat ik zoiets al geporbeerd had. Blijkbaar fout dan... Thanks! :)

[ specs ] [ Tweaker gallery ]


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Ik ben hier ook een tijd mee bezig geweest; maar door vele problemen en performance verlies laat ik PHP het nu gewoon doen; eerst een select om alles op te halen en dan met de rand functie 1 eruit pikken :) Overigens heb ik de ID's van alle entries sowieso nodig; dus was dat gewoon sneller :) Je kunt natuurlijk even snel achterhalen hoeveel entries er inzitten; en dan een rand daarop doen; mocht je consistente ID's hebben :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
[break-out-vraag]Bij mij werkt het wel gewoon random, ben ik nu raar? O-)

ff serieus, ik gebruik gewoon ORDER BY RAND() LIMIT 1 en bij mij is het gewoon random.

Acties:
  • 0 Henk 'm!

  • FlowinG
  • Registratie: Maart 2003
  • Laatst online: 19-09 17:00
Spider.007 schreef op 08 april 2004 @ 19:52:
Ik ben hier ook een tijd mee bezig geweest; maar door vele problemen en performance verlies laat ik PHP het nu gewoon doen; eerst een select om alles op te halen en dan met de rand functie 1 eruit pikken :) Overigens heb ik de ID's van alle entries sowieso nodig; dus was dat gewoon sneller :) Je kunt natuurlijk even snel achterhalen hoeveel entries er inzitten; en dan een rand daarop doen; mocht je consistente ID's hebben :)
Tja dat is vaak het probleem met quote's je verwijderd wel es wat. Laat dan het databeest maar werken voor z'n geld B)

Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Topicstarter
Ik laat ook dit soort taken 't liefst aan de database over. Daar is dat ding voor gemaakt en in theorie zou 't zo moeten zijn dat - in dit geval - MySQL geoptimaliseerd is voor database gerelateerde taken: een random row uit een lijstje pikken.

Nou is m'n table niet bijzonder groot (zal niet meer zijn dan ca. 150 regels ofzo), maar als je die handel eerst naar PHP haalt om daar er random 1 uit te pikken, dan vind ik dat overkill en onnodige geheugen verspilling.

Ik streef zo veel mogelijk naar minimaliseren. Een tik die is blijven hangen uit m'n Commodore-64 tijd. ;)

En ik weet ook niet waarom het eerst niet wilde werken. Zo'n oplossing als ik nu heb, en hier ook al werd aangedragen, wou eerst niet werken. Zal wel eoa. dummy fout zijn geweest. Normaal heb ik geen problemen met eerst een query opzetten in SQL en daarna overnemen in PHP.

[ specs ] [ Tweaker gallery ]

Pagina: 1