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. 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"; Sök i forumet på 'slumpa', 'slumpa post', 'random', 'randomize' eller något liknande så finns det en del matnyttigt! :) 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. Om du använder mySQL skriver du: Om du använder mySQL skriver du: 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? Håller med Peter att detta inte torde ha något med Randomize att göra. 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? Hittade ett tidigare inlägg här som du kan kika på. Kanske leder det dig rätt? Alltså det fungerar med den här: 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? 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). Här kanske är en lösning? Lite slarvigt skriven och kan säkert optimeras en del, men den ska funka... Tack det fungerar! Men ibland kan det ta uppemot 7-8 sekunder innan bilden visas, vad beror det på? Kan det bero på att man har två st DO UNTIL? För det verkar precis som om den väntar på något. Mindre optimering av koden:Randomize i ett recordset?
Sv: Randomize i ett recordset?
Men det har inget med Randomize att göra.Sv: Randomize i ett recordset?
//TommySv: Randomize i ett recordset?
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.Sv: Randomize i ett recordset?
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äkerSv: Randomize i ett recordset?
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äkerSv: Randomize i ett recordset?
select top 1 bild from tabell order by rnd() fungerade inteSv: Randomize i ett recordset?
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.Sv: Randomize i ett recordset?
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.Sv: Randomize i ett recordset?
http://www.pellesoft.se/development/forum/view.asp?msgid=100113&forumid=1Sv: Randomize i ett recordset?
<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?Sv: Randomize i ett recordset?
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>Sv: Randomize i ett recordset?
Sv: Randomize i ett recordset?
<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)...Sv: Randomize i ett recordset?
Sv: Randomize i ett recordset?
Sv: Randomize i ett recordset?
<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>