ugrás a tartalomhoz

Véletlenszerű rendezés oldalakra tördelve

Anonymous · 2006. Dec. 8. (P), 20.09
Van egy MySQL lekérdezésem véletlenszerű rendezéssel, aminek eredményét oldalakra szeretném tördelni. Oldalanként tíz rekordot szeretnék megjeleníteni. Eddig nem találtam erre a problémára megoldást, tudna valaki segíteni?
 
1

LIMIT a mysql lekérdezésben

s_volenszki · 2006. Dec. 9. (Szo), 22.50
Üdv!

Küldja az oldalnak GET-be (lista.php?page=1) oldalsorszám változót és attól függően, hogy Következő vagy Előző gombot nyomja user, mindíg számoltasd ki a következő oldal sorszámát. Ja és mysql-be LIMIT ((page-1)*10),((page*10)-1).

s_volenszki
2

ez kicsit naiv volt

Anonymous · 2006. Dec. 10. (V), 00.02
a lényeg nem a lapozáson van szerintem, hanem a véletlenszerű rendezés lapozásán...
ha látogatónként kell véletlenszerű rendezés, akkor sessionben lehet tárolni a lekérdezés eredményét, ha pedig mindenkinek megfelel ugyanaz a sorrend, akkor léteznek különböző cache technikák arra, hogy időnként újra legyen generálva a lap.

gex
3

Nem volt naiv!

s_volenszki · 2006. Dec. 10. (V), 19.50
Helóka!

Szöveges feladatkoban mindig jó voltam:

Van egy MySQL lekérdezésem véletlenszerű rendezéssel, aminek eredményét oldalakra szeretném tördelni.


Akkor most mik a tények és mi a kérdés gexbácsi!

s_volenszki
4

véletlenszerű rendezés

Anonymous · 2006. Dec. 10. (V), 19.55
véletlenszerűen rendezni pl mysql alatt az order by rand()-dal lehet, ami után ha írsz egy limitet, akkor igaz, hogy sorban megkapod az eredmény 0-9, 10-19, 20-29, stb rekordjait, de senki sem garantálja neked, hogy a két lekérdezés ugyanazt a sorrendet adja vissza neked (sőt, erre nagyon kevés az esély).

gex
5

...véletlenszerű...

s_volenszki · 2006. Dec. 10. (V), 20.33
Azt gondoltam, hogy a véletlenszerű alatt azt értjük, hogy mindenkinek más és más sorrendben jelenjenek meg a rekordok. Más kliens más sorrend. A limites eljárás sehogy sem jó, mert ahhoz, hogy az más-más oldalon ne szerepeljen egy rekord többször, ahhoz csak egyszer szabad véletlenszerűsíteni a teljes rekordlistát.

Ezek után én azt tenném, hogy csinálnék egy array-t aminek pontosan annyi eleme lenne ahány rekord a táblában. Ezt feltölteném 0-tól n-ig, és összekeverném. Ezt a tömböt tárolnám session-ben és a page változó függvényében azokat az id-jű rekordokat olvasnám ki a táblából, amelyek a session-ben tárolt tömb page változó által meghatározott tartományában találhatóak.

De hangsúlyozom még egyszer: Ha minden kliens más és más véletlenre van bízva.

s_volenszki