Avatar billede inkognito1 Nybegynder
07. marts 2001 - 03:56 Der er 31 kommentarer og
1 løsning

Kun hente 6 af billederne i random.

Jeg har denne her kode der henter alle billeder der ligger i min database. Jeg vil dig kun have den til at hente 6 og så i random sådan det er forskellieg den henter hver gang.

---------
<%

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open = \"\"& conn2 &\"\"

strQuery = \"SELECT * FROM billeder where (uge=\'\"& ugenr &\"\')\"
Set RS = Conn.Execute(strQuery)
%>


<%If Not rs.EOF Then %>
  <table border=0>
<%LinkCount = 0
  Do Until rs.EOF
    if page = \"0\" then
      page = 1
    else
      page = page + 1
    end if 
    \'Mod 2. 2 er antal kolonner med data:
    If LinkCount Mod 2 = 0 Then
      If LinkCount <> 0 Then Response.Write\"</tr>\"
    Else %>
      <td width=\"1\"></td> <%
    End If %>
    <td width=\"108\" height=\"90\">
    <p align=\"center\"><a href=\"user/paging.asp?page=<%=page%>&u=<%=ugenr%>\"><img border=\"1\" src=\"user/lille/<%=rs(\"billedeurl\")%>\" width=\"108\" height=\"81\"></a>
    </td>
    <%
    LinkCount = LinkCount + 1
    rs.MoveNext
  Loop %>
      </table>
  <%
Else
  Response.Write \"Ingen billeder endnu\"
End If
conn.close
set conn = nothing
Set rs = Nothing %>


-----------

En der kan hjælpe mig med de to funktioner..
Avatar billede soerens Nybegynder
07. marts 2001 - 09:11 #1
Den er ikke helt nem faktisk... Hvad kører du af database?

Ellers så har www.4guysfromrolla.com en stribe artikler om det.

Tjek denne URL / søgning:

http://www.4guysfromrolla.com/aspscripts/Search.asp?SearchText=random+record&selSearchOpt=1

/SørenS.
Avatar billede keysersoze Ekspert
07. marts 2001 - 09:43 #2
random ER nemt... jeg har ikke noget kode lige her, men keh kunne søge på eksperten og med garanti finde noget - i stedet vil jeg overlade det til dig selv!

søg på \"random\" og du skal finde!
Avatar billede ellebaek Nybegynder
07. marts 2001 - 10:03 #3
strQuery = \"SELECT TOP 6 * FROM billeder where (uge=\'\"& ugenr &\"\')\"


sæt denne til ...
i stedet for
strQuery = \"SELECT * FROM billeder where (uge=\'\"& ugenr &\"\')\"
Avatar billede soerens Nybegynder
07. marts 2001 - 10:03 #4
Keyser: Hmmm, så vidt jeg kan se har alle de andre posts her på eksperten et eller flere af følgende problemer:

1) De kan sagtens finde på at returnere to ens recordsets (at finde 6 tilfældige tal er ikke så simpelt som det lyder ;-)

2) De går ud fra at ID er fortløbendende, og tager ikke højde for at der evt. kan mangle en record hist & her.

3) De løber et HELT recordset igennem, hvilket er tungt hvis man f.ek.s har mange billeder. Dette er dog svært at undgå medmindre man benytter en MS SQL hvor der er mulighed for stored procedures.

Jeg benytter selv en stored procedure, men vil ikke lige poste den før jeg ved hvad DB inkognito benytter.

Jeg har også en ide eller to til hvordan det kan løses i ASP, dog ikke uden at løbe ind i problem nummer 3 ;-)

/SørenS.
Avatar billede nute Nybegynder
07. marts 2001 - 10:07 #5
du fyrer av denne SQL:

( i Access...det er anderledes i fx Oracle )
SELECT TOP 6 * FROM billeder where uge=\'\"& ugenr &\"\'

deretter plukker du bare ut et random bilde fra ditt recordset:

<%
IF NOT rs.EOF THEN
  Randomize
  index = INT(6 * RND + 1)

  rs.Move index
  img = rs(\"[kolonne]\")
  response.write \"<img src=\" & img & \">\"
END IF
%>

/nute
Avatar billede nute Nybegynder
07. marts 2001 - 10:07 #6
hov...skulle være svar

/nute
Avatar billede soerens Nybegynder
07. marts 2001 - 10:13 #7
Nute: En vigtig detalje, i dit eksempel rissikerer man at få den samme record to gange...

/SørenS.
Avatar billede nute Nybegynder
07. marts 2001 - 10:15 #8
soerens >> med en random funksjon risikerer man alltid det ;)
Avatar billede soerens Nybegynder
07. marts 2001 - 10:16 #9
Her er noget kode, der finder 5 tilfældige tal fra 1 - 25.

Den er ikke 100% optimeret (looper indtil man har fundet 5 tilfældige), men den virker ;-)

       
\'Make array with 5 random numbers
Randomize
Redim arrDummy(4)
bolDummy = False
Do While Not bolDummy
    For i = 0 to 4
        arrDummy(i) = Random(1,25)
    Next
   
    bolDummy = True
   
    For x = 0 To 4
        For y = x To 4
            If Not x = y And arrDummy(x) = arrDummy(y) Then bolDummy = False
        Next
    Next
Loop
Avatar billede nute Nybegynder
07. marts 2001 - 10:21 #10
inkognito1 >> skulle du først hente 6 bilder, og deretter et random fra disse ? eller skulle du hente 6 random fra hele ditt recordset ?
Avatar billede soerens Nybegynder
07. marts 2001 - 10:44 #11
Jeg har lavet lidt pseudo-kode på det (rigtig kode kræver flere point ;-) :

    Opbyg et recordset med alle billederne (SELECT *).

    Find antallet af Records (bemærk, RecordCount kræver en bestemt cursortype).

    Find 6 tilfældige tal fra 1 til RowCount (sorter dem stigende for max. perfomance).

    Move igennem dit recordset og find de 6 tilfældige records (rs.Move intRandomX, 1).


Så vidt jeg kan vurdere er dette det mest \"smertefrie\" måde at gøre det på, hvis man benytter Access/MySQL som database.

Er man så heldig at have en MS SQL, vil en stored procedure være svaret ;-)

/SørenS.
Avatar billede soerens Nybegynder
07. marts 2001 - 10:46 #12
Øh, min URL til 4GuysFromRolla.com virker vist ikke helt, men gå derind og søg på \"random record\", så får du 8 stk. GULD artikler omkring subj.

/SørenS.
Avatar billede inkognito1 Nybegynder
07. marts 2001 - 14:08 #13
Jeg bruger Access databse .. og der ligger højst 50 billeder i hver søgning
Avatar billede nute Nybegynder
07. marts 2001 - 14:10 #14
inkognito1 >> skulle du først hente 6 bilder, og deretter et random fra disse ? eller skulle du hente 6 random fra hele ditt recordset ?
Avatar billede inkognito1 Nybegynder
07. marts 2001 - 14:28 #15
Der ligger ca 50 billeder i mit recordset. Den skal vise 6 billeder hver gang. Og disse skal være forskellige når man refresher.
Avatar billede nute Nybegynder
07. marts 2001 - 14:37 #16
prøv dette

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open = \"\"& conn2 &\"\"

strQuery = \"SELECT COUNT(*) AS found FROM billeder where (uge=\'\"& ugenr &\"\')\"
Set RS = Conn.Execute(strQuery)
rsCount = RS(\"found\")
RS.Close

strQuery = \"SELECT * AS found FROM billeder where (uge=\'\"& ugenr &\"\')\"
Set RS = Conn.Execute(strQuery)

Randomize
for i = 1 to 6
  rsCount =  * RND + 1
  rs.Move rsCount
  response.write rs(\"[bildekolonne]\")
next

\'Close objects

Det burde fungere

/nute





Avatar billede soerens Nybegynder
07. marts 2001 - 14:48 #17
nute: Så vidt jeg kan se vil du stadig ikke komme ud over at samme billede vil kunne komme mere end én gang.... Eller er det mig?

Jeg har LIDT problemer med at fatte din random, men ud over ovennævnte virker den sikkert fint ;-)

Men skal du ikke have en rs.Move rsCount, 1 ???

Så går Move nemlig ud fra starten, istedet for det sted man i øjeblikket står i Recordset\'et (se evt. min pseudo-kode)

/SørenS.
Avatar billede nute Nybegynder
07. marts 2001 - 14:59 #18
soerens >> du har rett i at min random funksjon ser litt merkelig ut,...det er fordi jeg faktisk har glemt en vesentlig del. se under...

RND gir et random tall mellom 0 og 1, dette tallet mulitipliseres med antall records i databasen og legger til 1 for å forhidre at random nmmer blir 0. selvfølgelig så kan det hende at det samme bildet kommer ut mer enn en gang, men sånn er nå engang et randomisert tall....man \"risikerer\" nettopp dette...

alternativt kan man jo bare legge de valgte bildene i en array, og sjekke om man har skrevet dem ut en gang før

ny loop:

for i = 1 to 6
  rsCount =  CInt(rsCount * RND - 1) + 1
  rs.Move rsCount, 1
  response.write rs(\"[bildekolonne]\")
next

/nute
Avatar billede inkognito1 Nybegynder
07. marts 2001 - 16:46 #19
JEg dropper den random ... fatter jeg ikke noget af ...
Avatar billede inkognito1 Nybegynder
07. marts 2001 - 16:47 #20
Ellebaek jeg brugte kun det du skrev.
Avatar billede nute Nybegynder
07. marts 2001 - 16:49 #21
det er jo flott at du aksepterer det du ikke spør om...sånn at vi som faktisk bruker endel tid på å hjelpe deg egentlig bare kaster bort tiden bort !!!
Avatar billede inkognito1 Nybegynder
07. marts 2001 - 16:57 #22
nute du skriver en forklaring jeg ikke kan bruge ... jeg fatter det ikke
Avatar billede inkognito1 Nybegynder
07. marts 2001 - 16:58 #23
Så må du skrive en fuld kode der fungere så vil jeg give dig point ...
Avatar billede soerens Nybegynder
07. marts 2001 - 16:58 #24
Ja, fuck det.

Det virker som om vi har brugt langt mere tid på at forklare problemer og løsninger, end inkognito har brugt på at forsøge på at sætte sig ind i ASP....

Vi ku\' da sagtens hamre en masse source sammen og teste det i hoved og r.., men hvad kan man forlange for 30 point?

(så, nu bli\'r jeg sgu\' nok flamet af en eller anden ;-)

/SørenS.
Avatar billede ellebaek Nybegynder
08. marts 2001 - 07:56 #25
*lål*
søren ...

jeg er fuldstændig enig ...

men en sql som den jeg sendte er ved sådan ca. 30 point værd ... hmmn... så kan man sige 30 point pr. linje kode :-)))
Avatar billede inkognito1 Nybegynder
08. marts 2001 - 08:38 #26
Jeg sgu da i det mindste ikke så fræk som nogen at oprette spørgsmål med 0 point....

På den anden side i siger jo selv at der ved random kan forekomme at det samme billed kommer to gange. Godt jeg konkludere at det dermed ikke kan lade sig gøre ...

Så jeg må jo nøjes med Top 6 sådan de 6 første billeder vises.

Men Ok SørenS vi har alle vores stærke sider ... jeg er helt sikker på at du ikke kun er på eksperten fordi du vil hjælpe andre .. men at du forventer at blive hjulpet på et tidspunkt ..

Har jeg ret ??
Avatar billede soerens Nybegynder
08. marts 2001 - 08:54 #27
Ork, jo, det kan sagtens lade sig gøre. Et stykke længere oppe postede jeg en rutine til at finde 5 tilfældige tal. Den er ikk 100% optimal, men den fungerer ganske udemærket.

Med den og det \"pseudo-kode\" jeg postede, eller nute\'s halvfærdige kode, kan det SAGTENS lade sig gøre.

Beklager at du ikke får noget færdigt kode, men du skulle altså have fået nok til at konstrueret noget selv.

Sig til hvis der er noget af koden du har problemer med at forstå, så vil nogen af os sikkert være behjælpelige.

Jeg _plejer_ ikke at levere færdige løsninger herinde på eksperten (...med mindre det er noget jeg lige har liggende), men går 100% ind for hjælp til selv-hjælp.

Vil du ha\' færdig kode må du sgu\' diske op med 900,- i timen eller i det mindste flere point, så det er besværet værd ;-)

/SørenS.
Avatar billede ellebaek Nybegynder
08. marts 2001 - 09:03 #28
900 .. mener du ikke 9000 ?
Avatar billede soerens Nybegynder
08. marts 2001 - 09:18 #29
ellebaek >> Nøøøj, tror du vir\'kly\' jeg ka\' ta\' så meget? Syn\'s du jeg er det værd? ;-)

Jeg printer lige dit svar ud og går ind til bossen og kræver lønforhandling, hehehe....

/SørenS.
Avatar billede ellebaek Nybegynder
08. marts 2001 - 11:49 #30
Hehe ...
jeg kan sende det til dig i en email hvis du vil have det :-)
Avatar billede soerens Nybegynder
09. marts 2001 - 11:08 #31
Uuuuuh, med hensyn til visning af billeder, så tjek lide det her JavaKode, det er ret kinky:

http://javascript.internet.com/miscellaneous/fading-slide-show.html

/SørenS.
Avatar billede ellebaek Nybegynder
09. marts 2001 - 11:48 #32
inde på anfy.com kan du få anfy hedder det ...
det kan få billeder til at rulle til andre billeder og sådan ,.,. det er sq lækkert det prog.!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester