25. april 2004 - 18:50
Der er
7 kommentarer og 1 løsning
Hente top 5 ud af DB
Jeg vil hente de 5 billeder ud med flest hits ... hvad er galt i koden her ?? <% Dim Connect1, RS_Outer1, RS_Inner1, RS_MainMessage1 Set Connect1 = Server.CreateObject("ADODB.Connection") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database/foto.mdb") Connect1.Open strDSN %> <% Set RS_MainMessage1 = Connect1.Execute("SELECT TOP 5 * FROM billeder ORDER BY hits DESC") top_hits = RS_MainMessage1("hits") top_hiturl = RS_Mainmessage1("hiturl") top_wwidth = RS_MainMessage1("wwidth") top_wheight = RS_MainMessage1("wheight") top_thumb = RS_MainMessage1("thumb") top_theight = RS_MainMessage1("theight") top_des = RS_MainMessage1("Des") top_dato = RS_MainMessage1("Dato") %> <% for i = 1 to 5 %> <table border="0" width="305" cellspacing="0" cellpadding="0"> <tr> <td width="150" class="left" valign="top"> <a href="<%=top_hiturl%>" class="billede" onclick="NewWindow(this.href,'vindue','<%=top_wwidth%>','<%=top_wheight%>','no','center');return false" onfocus="this.blur()"><img src="<%=top_thumb%>" width="150" height="<%=top_theight%>" border="0"></a> <br></td> <td width="5" class="blank"> </td> <td width="150" class="text" valign="top"> <span class="left"> Uploaded : <%=top_dato%>.<br> Set : <%=top_hits%> gang(e). <br> <span class="small3"><%=top_des%> <br> </td> </tr> </table> <% rs_mainmessage1.Movenext Wend end if %>
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
25. april 2004 - 19:04
#1
Sorry, slutningen se sådan her ud.... <% rs_mainmessage1.Movenext next %>
25. april 2004 - 19:11
#2
du skal ændre din SQL streg til: Set RS_MainMessage1 = Connect1.Execute("SELECT TOP 5 * FROM billeder ORDER BY hits ASC")
25. april 2004 - 19:13
#3
Den skriver de samme ud 5 gange fordi du fylder din variable uden for for sætningen. Så dette: Set RS_MainMessage1 = Connect1.Execute("SELECT TOP 5 * FROM billeder ORDER BY hits DESC") top_hits = RS_MainMessage1("hits") top_hiturl = RS_Mainmessage1("hiturl") top_wwidth = RS_MainMessage1("wwidth") top_wheight = RS_MainMessage1("wheight") top_thumb = RS_MainMessage1("thumb") top_theight = RS_MainMessage1("theight") top_des = RS_MainMessage1("Des") top_dato = RS_MainMessage1("Dato") %> <% for i = 1 to 5 %> skal være; Set RS_MainMessage1 = Connect1.Execute("SELECT TOP 5 * FROM billeder ORDER BY hits DESC") for i = 1 to 5 top_hits = RS_MainMessage1("hits") top_hiturl = RS_Mainmessage1("hiturl") top_wwidth = RS_MainMessage1("wwidth") top_wheight = RS_MainMessage1("wheight") top_thumb = RS_MainMessage1("thumb") top_theight = RS_MainMessage1("theight") top_des = RS_MainMessage1("Des") top_dato = RS_MainMessage1("Dato") %>
25. april 2004 - 19:16
#4
eagleeye> Der ser ud til at være problemer med afslutningen : <% rs_mainmessage1.Movenext next %> idé ??
25. april 2004 - 19:19
#5
Hvad er fejlen? Hvis du ikke har 5 får du en fejl med BOF eller EOF. Du bør lave det med en do while not rs.EOF og ikke en for sætning. Så din kode bliver: <% Dim Connect1, RS_Outer1, RS_Inner1, RS_MainMessage1 Set Connect1 = Server.CreateObject("ADODB.Connection") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database/foto.mdb") Connect1.Open strDSN %> <% Set RS_MainMessage1 = Connect1.Execute("SELECT TOP 5 * FROM billeder ORDER BY hits DESC") do while not RS_MainMessage1.EOF top_hits = RS_MainMessage1("hits") top_hiturl = RS_Mainmessage1("hiturl") top_wwidth = RS_MainMessage1("wwidth") top_wheight = RS_MainMessage1("wheight") top_thumb = RS_MainMessage1("thumb") top_theight = RS_MainMessage1("theight") top_des = RS_MainMessage1("Des") top_dato = RS_MainMessage1("Dato") %> <table border="0" width="305" cellspacing="0" cellpadding="0"> <tr> <td width="150" class="left" valign="top"> <a href="<%=top_hiturl%>" class="billede" onclick="NewWindow(this.href,'vindue','<%=top_wwidth%>','<%=top_wheight%>','no','center');return false" onfocus="this.blur()"><img src="<%=top_thumb%>" width="150" height="<%=top_theight%>" border="0"></a> <br></td> <td width="5" class="blank"> </td> <td width="150" class="text" valign="top"> <span class="left"> Uploaded : <%=top_dato%>.<br> Set : <%=top_hits%> gang(e). <br> <span class="small3"><%=top_des%> <br> </td> </tr> </table> <% rs_mainmessage1.Movenext loop %>
25. april 2004 - 19:26
#6
tak, det virker bedre... eneste problem er, hvis der er flere entry i DB'en med samme antal hits, så viser den mere end 5 (med denne kode får jeg 6!). Et tillægsspørgsmål kunne jo være, hvordan man begrænsede den til KUN 5 udtræk fr DB'en ?
25. april 2004 - 19:28
#7
Så må du også tilføje dit autonummer kolonne i ORDER BY sådan hvis der er flere ens sorteres efter ID så kommer der kun 5. Set RS_MainMessage1 = Connect1.Execute("SELECT TOP 5 * FROM billeder ORDER BY hits DESC, ID")
25. april 2004 - 19:30
#8
Herligt ! ... Det er hvad jeg virkelig kan lide ved eksperten.dk : de kloge hoveder, som ved en masse, er altid klar til at hjælpe os andre ! Takker !!!
Kurser inden for grundlæggende programmering