29. juli 2006 - 13:20Der er
15 kommentarer og 2 løsninger
RAND() på MySQL giver problemer med?
Hej
Jeg bruger ORDER BY RAND() for at den skal vise id'erene i forskelige rækkefølge. Jeg deler dem også op i sider, så når man går f.eks på side 2 så blander den dem igen, og derved så viser den nogle gange de samme igen.
Hvis viste id'er ikke skal komme igen, kan du gemme dem i et array med sessions SELECT `id` FROM `db` WHERE `id` !IN ('". implode("," $_SESSION["vist"][]) ."')
Problemet er at hvis du f.eks har delt dem op på 3 sider, så når du har set alle siderne og så vil se side 1 igen, så vil den jo ikke udskrive nogle, da alle id'erne så står i $_SESSION["vist"][]
Der kan du se at de er delt op i 3 sider, hvis du så går over på side 2 så kan den godt finde på at 1 eller flere af dem også er vist på side 1.
Man kan godt bruge $_SESSION["vist"][] men så hvis du har set alle siderne så kan du jo ikke se side 1 igen da $_SESSION["vist"][] indeholder alle id'erne
Løsningen må være at hente alle ID'erne ud i rækkefølge i en session variabel når du laver søgningen med ORDER BY RAND(), og dernæst beregne det med sidetal og hente hver enkelt hest ud fra de data. Det er ikke ret smart, men det bør virke.
Overvej dog om det virkelig er nødvendigt at have den tilfældige sortering, det er trods alt en del ekstra arbejde du skal ud i.
som pidgeot, undlad at lave rand på siderne, folk kan jo ikke sende et link til en bekendt! Giv hellere muliged for at sortere efter pris, navn, alder m.m.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.