Randomize i ett recordset?
Jag har en tabell som heter usr, där har jag vill att på första sidan ska användarens bild komma upp. Går det, har kollat runt men inte hittat något. Bara jag får tag i ett ID så är det ju lätt.
Svara
Sv: Randomize i ett recordset?
Om alla bilder ligger i en katalog på hd och du sparar bildens namn med sökväg i en databastabell (image) så är det bara att du SELECT * FROM usr,image WHERE usr.id = image.id AND image.path = "sökvägen till bild";
Men det har inget med Randomize att göra.
Svara
Sv: Randomize i ett recordset?
Sök i forumet på 'slumpa', 'slumpa post', 'random', 'randomize' eller något liknande så finns det en del matnyttigt! :)
//Tommy
Svara
Sv: Randomize i ett recordset?
Om du vill att bilden på just den användaren som går in på sajten kommer upp måste du ta reda på vem användaren är. Ett enkelt sätt att göra detta är att låta användaren logga in.
När du loggar in din användaren koller du helt enkelt vilket ID användaren har och lägger detta i ex. ett Session-objekt eller en cookie.
Svara
Sv: Randomize i ett recordset?
Om du använder mySQL skriver du:
select bild from tabell order by rand() limit 1
i access tror jag det är
select top 1 bild from tabell order by rnd()
mend et var längesen jag använde det så jag är inte säker
Svara
Sv: Randomize i ett recordset?
Om du använder mySQL skriver du:
select bild from tabell order by rand() limit 1
i access tror jag det är
select top 1 bild from tabell order by rnd()
mend et var längesen jag använde det så jag är inte säker
Svara
Sv: Randomize i ett recordset?
Jo när någon loggar in blir fältet "online" = 1, då vet jag vilka som bara får visas, men hur ska den göra för att först leta upp alla som har "online = 1" och sen välja ut en?
select top 1 bild from tabell order by rnd() fungerade inte
Svara
Sv: Randomize i ett recordset?
Håller med Peter att detta inte torde ha något med Randomize att göra.
Du vill väl inte att det ska dyka upp slumpmässiga bilder på startsidan?
Jag förutsätter att du vill att den inloggades bild ska visas när denne loggar in.
Det borde inte alls vara svårt att få tag på vilket ID den inlogade har om du kollar på din inloggningskod. Eftersom jag inte har en aning om hur du löst inloggningen så tänker jag inte ens spekulera.
När du har denna och ska plocka fram matchande bild så beror det lite på hur du sparat bilderna. Även där kommer Peter med vettiga synpunkter.
Om du vill ha mer hjälp så får du nog precisera dig lite.
Tex. vill du verkligen slumpa fram användarbilderna? Hur loggar användarna in? Hur har du sparat användarbilderna.
Svara
Sv: Randomize i ett recordset?
Asså jag vill inte att alla som loggar in ska visas på första sidan. Det är då jag måste använda mig utav en randomizer, för hur jag datan veta vilka han ska välja?
När någon loggar in sätts "online" fältet till 1. Då vet jag vilka som är inloggade och inte, det jag vill göra nu är att datan slumpmässigt väljer 1 användare som har fältet "online" = 1. För det ska inte baseras på när man senast loggat in eller något annat, utan slumpen.
Svara
Sv: Randomize i ett recordset?
Hittade ett tidigare inlägg här som du kan kika på. Kanske leder det dig rätt?
http://www.pellesoft.se/development/forum/view.asp?msgid=100113&forumid=1
Svara
Sv: Randomize i ett recordset?
Alltså det fungerar med den här:
<code>
SQL = "SELECT TOP 1 user.ID, * FROM user WHERE user.bild = 1 ORDER BY RND(user.ID)"
</code>
Men det blir alltid samma user som kommer fram, håller jag inne F5 (refresh knappen) så visas andra också, men laddar jag sidan engång till blir det den usern som var där innan med, på något sätt sparas den.
Finns det någon kod bit man kan sätta in för att "nolla" cachen?
Svara
Sv: Randomize i ett recordset?
Okej, då är jag med (tror jag). Du vill alltså att när tex. JAG loggar in så ska jag få upp en bild på en ANNAN slumpmässigt vald (alltså kan det iof bli min egen bild) inloggad användare?
I så fall borde din kod funka om du lägger till Randomize.
<code>Randomize
SQL = "SELECT TOP 1 user.ID, * FROM user WHERE user.bild = 1 ORDER BY RND(user.ID)"</code>
Svara
Sv: Randomize i ett recordset?
Ja det är exakt så det ska fungera, men problemet är att den väljer ut en speciell bild men vill bara visa den hela tiden, inte ändra (om man inte håller inne refresh knappen).
Svara
Sv: Randomize i ett recordset?
Här kanske är en lösning? Lite slarvigt skriven och kan säkert optimeras en del, men den ska funka...
<code>
<%
usrExists=False
'Ta ut högsta ID från user-tabellen
SET MAX=conn.execute("SELECT MAX(ID) as usr FROM user")
' Loopa till dess en user har hittats
DO UNTIL usrExists
'Slumpa fram ett ID mellan 1 och det högsta ID:et i tabellen
Randomize
slump=Int(MAX("usr")*Rnd+1)
'Läs in data från user-tabellen
SET user=conn.execute("SELECT ID, image.path FROM user WHERE bild = 1")
'Stega igenom inlästa users
DO UNTIL user.EOF
'om ID är samma som slumpnummer
IF slump=user("ID") THEN
'Här lägger du koden för att skriva ut din bild, typ:
Response.Write("<IMG src="&user("image.path")&">")
'Markera att user har hittats och visats
usrExists=True
END IF
user.MoveNext
Loop
Loop
%>
</code>
Du får kanske anpassa koden lite eftersom jag inte har sett hur du löst allt annat.
OBS! den förutsätter att ID är en räknare (autoinkrement)...
Svara
Sv: Randomize i ett recordset?
Tack det fungerar! Men ibland kan det ta uppemot 7-8 sekunder innan bilden visas, vad beror det på?
Svara
Sv: Randomize i ett recordset?
Kan det bero på att man har två st DO UNTIL? För det verkar precis som om den väntar på något.
Svara
Sv: Randomize i ett recordset?
Mindre optimering av koden:
<code>
<%
usrExists=False
'Ta ut högsta ID från user-tabellen
SET MAX=conn.execute("SELECT MAX(ID) as usr FROM user")
' Loopa till dess en user har hittats
DO UNTIL usrExists
'Slumpa fram ett ID mellan 1 och det högsta ID:et i tabellen
Randomize
slump=Int(MAX("usr")*Rnd+1)
'Läs in data från user-tabellen
SET user=conn.execute("SELECT ID, image.path FROM user WHERE bild = 1")
'Stega igenom inlästa users
DO UNTIL user.EOF
'om ID är samma som slumpnummer
IF slump=user("ID") THEN
'Här lägger du koden för att skriva ut din bild, typ:
Response.Write("<IMG src="&user("image.path")&">")
'Markera att user har hittats och visats
usrExists=True
Exit Do 'Avbryt inre Do-loopen... den yttre avbryts när usrExists=True
END IF
user.MoveNext
Loop
Loop
%>
</code>
Svara