Avatar billede ossian Nybegynder
24. april 2003 - 12:58 Der er 11 kommentarer og
1 løsning

Randomize - vis 5 poster

Jeg har med lidt held fået brygget et randomize script sammen, dette script udskriver dog kun en enkelt tilfældig post.. Jeg vil gerne have den til at udskrive 5 forskellige tilfældige poster..

Her er scriptet:

<%

ShowAd

Sub ShowAd

dim objRS, strSQL, intRecord, count
Randomize

strSQL= "SELECT * FROM products "

set objRS = server.CreateObject("ADODB.Recordset")
with objRS
.open strSQL, ConString, AdOpenStatic

intRecord = cint(rnd() * (.RecordCount-1))

.move intRecord



%>

<table width="20%" border="0" cellspacing="0" cellpadding="5">
  <tr>
    <td><font color="#000000" size="1" face="Arial, Helvetica, sans-serif"><strong><%=.Fields("productName")%></strong></font></td>
  </tr>
</table>

<%

.close
end with
set objRS = nothing
end sub
%>
Avatar billede medions Nybegynder
24. april 2003 - 13:06 #1
<%

ShowAd

Sub ShowAd

dim objRS, strSQL, intRecord, count
Randomize

strSQL= "SELECT TOP 5 * FROM products "

set objRS = server.CreateObject("ADODB.Recordset")
with objRS
.open strSQL, ConString, AdOpenStatic

intRecord = cint(rnd() * (.RecordCount-1))

.move intRecord



%>

<table width="20%" border="0" cellspacing="0" cellpadding="5">
  <tr>
    <td><font color="#000000" size="1" face="Arial, Helvetica, sans-serif"><strong><%=.Fields("productName")%></strong></font></td>
  </tr>
</table>

<%

.close
end with
set objRS = nothing
end sub
%>

//>Rune
Avatar billede ossian Nybegynder
24. april 2003 - 13:06 #2
det må være noget med do while og lidt loop, men hvordan den skal kringles kan jeg ikke lige regne ud..
Avatar billede ossian Nybegynder
24. april 2003 - 13:10 #3
det gør ingen forskel.. :-(
Avatar billede ossian Nybegynder
24. april 2003 - 13:11 #4
det udskriver stadig kun en enkelt post.. den sætning du lavede bestemmer bare at den ene post udvælges tilfældigt fra top 5 - har selv prøvet det..
Avatar billede medions Nybegynder
24. april 2003 - 13:26 #5
<%

ShowAd

Sub ShowAd

dim objRS, strSQL, intRecord, count
Randomize

strSQL= "SELECT TOP 5 * FROM products "

set objRS = server.CreateObject("ADODB.Recordset")
objRs.open strSQL, ConString, AdOpenStatic

intRecord = cint(rnd() * (objRs.RecordCount-1))
%>

<table width="20%" border="0" cellspacing="0" cellpadding="5">
<% While Not objRs.EOF %>
  <tr>
    <td><font color="#000000" size="1" face="Arial, Helvetica, sans-serif"><strong><%= objRs.Fields("productName")%></strong></font></td>
  </tr>
<% objRs.MoveNext() %>
<% Wend %>
</table>

<%

objRs.close
set objRS = nothing
end sub
%>

//>Rune
Avatar billede ossian Nybegynder
24. april 2003 - 13:28 #6
Rune> Det er de samme 5 poster den viser når jeg opdaterer..jeg tror at vi skal helt væk fra TOP 5 og sætte en form for et count..
Avatar billede medions Nybegynder
24. april 2003 - 13:36 #7
<%
set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT TOP 5 * FROM products"
rs.Open SQL, Conn, 1

randomize
rs.Move(int(rs.RecordCount * rnd))
%>

<table width="20%" border="0" cellspacing="0" cellpadding="5">
<%
  While Not objRs.EOF
%>
  <tr>
    <td><font color="#000000" size="1" face="Arial, Helvetica, sans-serif"><strong><%=rs("productName")%>
</strong></font></td>
  </tr>
<%
  objRs.MoveNext()
  Wend
%>
</table>

//>Rune
Avatar billede medions Nybegynder
24. april 2003 - 13:38 #8
Hov...

<%
set objRs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT TOP 5 * FROM products"
objRs.Open SQL, Conn, 1

randomize
objRs.Move(int(objRs.RecordCount * rnd))
%>

<table width="20%" border="0" cellspacing="0" cellpadding="5">
<%
  While Not objRs.EOF
%>
  <tr>
    <td><font color="#000000" size="1" face="Arial, Helvetica, sans-serif"><strong><%= objRs("productName")%>
</strong></font></td>
  </tr>
<%
  objRs.MoveNext()
  Wend
%>
</table>

//>Rune
Avatar billede keysersoze Ekspert
24. april 2003 - 14:09 #9
Access er så vidt jeg har fundet frem til ikke rigtig gearet til at udvælge tilfældigt ligesom de fleste andre db'er. Derfor er den bedste løsning jeg har fundet frem til at;

tæl hvor mange poster der er i databasen

SELECT COUNT(*) FROM dintabel

derefter kører du et loop der kører 5 gange. I det loop laver du _næsten_ din normale select bare med en ekstra parameter;

strSQL= "SELECT * FROM tabel WHERE id NOT IN (0," & id & ")"

hvis du så gemmer alle id'er i en variabel (id) på de poster som ER vist får du nu 5 tilfældige og inden gengangere
Avatar billede ossian Nybegynder
24. april 2003 - 14:52 #10
takker :-) Da Rune var først ude med en holdbar løsning har jeg accepteret hans svar alene, men mange tak til Kejseren også!

:-)

Nyd solen
Avatar billede medions Nybegynder
24. april 2003 - 15:22 #11
Anytime... -Hmm Hvad mener du med "Nyd solen" hmm... Jeg skal sq være arbejde til 10 - 11 stykker i aften :-((((((
Thx 4 Poinz

//>Rune
Avatar billede ossian Nybegynder
24. april 2003 - 15:29 #12
Det lyder som en hård omgang :-) Jeg smutter om en halv times tid tror jeg, hvad faen, er jo mødt på arb. allerede 11:30... ahh det er ikke så slemt at være militærnægter som man skulle tro..
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