login  Naam:   Wachtwoord: 
Registreer je!
 Forum

random begin daarna op volgorde

Offline JLT - 22/04/2009 14:34 (laatste wijziging 22/04/2009 14:34)
Avatar van JLTPHP interesse Hoi iedereen!

De situatie
In de database staan een aantal producten als specials geselecteerd. Dit zijn er bv. 20. Op de homepage wil ik 3 specials tonen en een knop met verder om zo door alle specials heen te lopen.

Het probleem
De producten moeten elke keer in een andere volgorde getoond worden. Zodat de homepage er altijd anders uit ziet. Maar als de homepage begint bij product 8 dan moet de rest wel oplopend zijn (dus van 8,9,10,11,12,13,14,15,16,17,18,19,20,1,2,3,4,5,6,7)

Wat ik tot nu toe heb
specials script

Het hoeft overigens geen kant-en-klare oplossing te zijn. Alle suggesties en tips zijn welkom!


4 antwoorden

Gesponsorde links
Offline WumTol - 22/04/2009 16:40 (laatste wijziging 22/04/2009 16:48)
Avatar van WumTol PHP beginner 1. Selecteer eerst random een id uit de tabel

  1. SELECT * FROM tabel ORDER BY RANDOM() LIMIT 0,1

2. Vervolgens:

  1. SELECT * FROM tabel WHERE id >= {randomid} ORDER BY id ASC LIMIT 0,3
Offline Martijn - 22/04/2009 19:43
Avatar van Martijn Crew PHP als je een beetje handig bent met arrays zou je ook alles in een array kunnen zetten, met een array_chunk() een random splitsing maken, en dan eerst de 2e helft te laten zien, en daarna het deel wat je weg heb gechunked.

De query hierboven is makkelijker, maar als je vanaf 8 begint, worden 1t/m7 niet weegegevens, tenzij je daar ook weer een query voor maakt
Offline JLT - 23/04/2009 09:57
Avatar van JLT PHP interesse Ik denk dat ik in dat geval voor de array kies. Ik kan dan een keer de gegevens uit de database halen en deze in een array proppen. Vervolgens gebruik ik de chunk functie om deze in hap-klare-brokken te plaatsen (van bv. 3 items per keer).

Bedankt voor de reacties! Ik kan weer even puzzelen 
Offline Richard - 23/04/2009 12:31 (laatste wijziging 23/04/2009 12:33)
Avatar van Richard Crew algemeen Wat dacht je van...

  1. SELECT *
  2. FROM tabel,
  3. -- random ID ophalen (hier wordt het maar 1 keer gedaan,
  4. -- wat dus tijd scheelt, en het getal verandert ook niet :-)
  5. (SELECT id AS random_id
  6. FROM tabel
  7. ORDER BY RAND()
  8. LIMIT 1) AS randomness
  9. ORDER BY
  10. id >= random_id DESC,
  11. id ASC
  12. LIMIT 20


Let op, niet getest! Maar ik hoop dat je het idee snapt. ;)

Edit: kleine aanpassing :-)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.172s