webForumDet fria alternativet

Sista posten ska visa annorluna bild

ASP

60 svar · 1 208 visningar · startad av wunderbaren · sida 2 av 4

Frågan, av wunderbaren

Hejsan! Nedan visar en kod som postar poster ur databasen, men hur gör man så att den sista posten ska visa annorlunda bild? Det är mest ett filnamn jag vill ändra, från "files/iconlines.gif" till files/iconlines2.gif. \<% Set RecSet=Conn.Execute("Select \ From galleri Where sort='" & Request.Querystring("kat") & "' Order By namn") If RecSet.EOF Then%\> Inga kategorier inlagda i

Läs frågan i sin helhet →
Medlem sedan apr. 20031 660 inlägg
#21

HEJ!

Men, då har du inte gjort, eller visar inte, koden som vi skrev, men samtidigt får du inga felmeddelanden.

Varför visar du den kodsnutten?

Frågan går genom, du får ett antal poster.
För mig verkar det som att RecordCount blir -1 ändå?

Medlem sedan dec. 2002105 inlägg
#22

Jag förstår inte riktigt vad du menar, detta är koden i sin helhet. Den visar alltså den bilden som ska visas sist, visas för alla poster. Vad ska man ändra i koden för att det ska fungera?

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=wonderland2;USER=wonderland;PASSWORD=lookinggood23;OPTION=3;"

sql = "Select * From galleri Where sort='" & Request.Querystring("kat") & "' Order By namn"

intCounter = 0

Set RecSet = Server.Createobject("ADODB.Recordset")
RecSet.Open sql, Conn, 1, 2

if(RecSet.EOF) then
  Response.Write "Inga kategorier inlagda i kategorin " & Request.QueryString("kat")
else
  While Not RecSet.EOF
    set objRS = Conn.Execute("SELECT * FROM galleri WHERE namn = '" & RecSet("namn") & "'")
    set objPicture = Conn.Execute("SELECT * FROM bilder WHERE namn = '" & Request.Querystring("kat") & "' ORDER BY namn DESC LIMIT 1")
    
    intCounter = intCounter + 1

    if(intCounter < RecSet.RecordCount) then
      strPath = "files/icon_lines.gif"
    else
      strPath = "files/icon_lines2.gif"
    end if

    Response.Write "<img border=""0"" src=""files/icon_lines_empty.gif"" width=""17"" height=""20"" align=""absmiddle"">"
    Response.Write "<img border=""0"" src=""" & strPath & """ width=""17"" height=""20"" align=""absmiddle"">"
    Response.Write "<img border=""0"" src=""files/icon_folder.gif"" width=""16"" height=""15"" align=""absmiddle"">&nbsp;&nbsp;"
    Response.Write "<a href=""./?page=galleri&kat=" & Request.QueryString("kat") & "&id=" & RecSet("namn") & """>" & RecSet("namn") & "</a><br>"
    
    RecSet.MoveNext
  Wend
end if
Medlem sedan apr. 20031 660 inlägg
#23

HEJ!

wunderbaren skrev:

Vad ska man ändra i koden för att det ska fungera?

Det återstår att se.

Nu går frågan igenom, som tidigare.

Men, eftersom du har lagt till rätt databasöppning och lagt objektskapningen av RecSet ska RecordCount fungera.

Då återstår fortsatt felsökning!
Skriv ut de variabler som påverkar att det blir fel, nämligen intCounter och RecSet.RecordCount.

Har du tex tre poster i RS:et, blir RecordCount tre.

Då blir if-satsen sann, NÄ!, det blir den ju inte! på tredje varvet!

Följande borde du få på tredje varvet:
IntCounter = 3
RecSet.RecordCount = 3 (som alla varv)

if-satsen:
intCounter < RecSet.RecordCount
3<3
vilket inte är sant, dvs det blir icon_lines2.gif ändå.

Om du sätter IntCounter=1, eller lägger <= i if-satsen, eller sätter endast =, och byter plats på bilderna, bör det fungera!

Medlem sedan dec. 2002105 inlägg
#24

IntCounter=1
Samma fel, sista bilden visades på alla poster

<= i if-satsen
Samma fel, sista bilden visades på alla poster

sätter endast =, och byter plats på bilderna
Då visades den vanliga bilden hela tiden

Medlem sedan apr. 20031 660 inlägg
#25

HEJ!

J.N. skrev:

Då återstår fortsatt felsökning!
Skriv ut de variabler som påverkar att det blir fel, nämligen intCounter och RecSet.RecordCount.

Om du skrivit ut variablerna och de är rätt, vet jag inte vad felet är.

Medlem sedan dec. 2002105 inlägg
Medlem sedan dec. 2002105 inlägg
#27

Säker på att det ska funka? För det funkar verkligen inte =/

Medlem sedan dec. 2002105 inlägg
#28

Har provat följande koder:

    if(intCounter = RecSet.RecordCount) then
      strPath = "files/icon_lines.gif"
    else
      strPath = "files/icon_lines2.gif"
    end if
    if(intCounter=1 < RecSet.RecordCount) then
      strPath = "files/icon_lines.gif"
    else
      strPath = "files/icon_lines2.gif"
    end if
    if(intCounter <= RecSet.RecordCount) then
      strPath = "files/icon_lines.gif"
    else
      strPath = "files/icon_lines2.gif"
    end if
    if(intCounter = RecSet.RecordCount) then
      strPath = "files/icon_lines2.gif"
    else
      strPath = "files/icon_lines.gif"
    end if
Medlem sedan apr. 20031 660 inlägg
#29

HEJ!

Nr 2 är direkt fel, där har du både = och < i samma uttryck, men det har ingen betydelse, för nr 1, 3 eller 4 borde fungerat!

Jag tror du missat en grundläggande sak i felsökningen, utskriften av vad du håller på med.

Lägg
response.write intCounter & "-" & RecSet.RecordCount
ovanför ifsatsen, då ser du vilka siffror du får i loopen.

När du gjort det, ser du vad servern tycker att du håller på med.
Skulle det stå (med 3 bilder, )
1-3
2-3
3-3
och du kör med alternativ 4 ska det fungera.

Men, tydligen har du något värde fel, eftersom det inte fungerar.

Medlem sedan dec. 2002105 inlägg
#30

Körde med alla alternativ , fick följande:

1--1
2--1
3--1

Medlem sedan apr. 20031 660 inlägg
#31

HEJ!

Precis det vi inte ville, ha, eller jo, nu vet vi vad felet är.

Eftersom du använder RecSet-objektet rätt, gissar jag att det har något med MySQL att göra.
Om det kan jag inget, och har därför ingen lösning. :(

http://www.devguru.com/Technologies/ado/quickref/recordset_recordcount.html

Medlem sedan dec. 2002105 inlägg
#32

Ingen lösning alls? :(

Medlem sedan apr. 20031 660 inlägg
#33

HEJ!

Tyvärr, jag har ingen, eftersom det troligen handlar om MySQL-relaterade problem.
Mina kunskaper täcker tyvärr inte det området.

Medlem sedan juni 200032 967 inlägg
#34

Och om man provar med en statisk cursor?

På sidan J.N. länkar till står att det kan vara knas om man använder en dynamisk cursor. Därför hade jag provat med en statisk istället.

Recordset.Open

Medlem sedan dec. 2002105 inlägg
#35

Menar du den här raden eller:
RecSet.Open sql, Conn, 1, 2

Vad bör jag ersätta siffrorna med?

Medlem sedan juni 200032 967 inlägg
#36

Om jag läser länken rätt borde den tredje parametern vara cursortyp. Och om jag läser ännu mer rätt torde nuffran 3 motsvara en statisk cursor.

mvh

Medlem sedan dec. 2002105 inlägg
#37

Har provat en 3:a, och två treor. Samma "fel".

Medlem sedan juni 200032 967 inlägg
#38

Då kan det vara en begränsning iom att du använder MySQL. Den "lättaste" lösningen kanske skulle vara om du använder GetRows(). (en liten sökning här på wF ger massor av exempel på detta).

mvh

Medlem sedan dec. 2002105 inlägg
#39

Såg precis massor med exempel på detta, men förstår inte riktigt hur jag ska använda det. Ombyggnad av min nuvarande kod uppskattas, så man lättare ser! :)

sql = "Select * From galleri Where sort='" & Request.Querystring("kat") & "' Order By namn"

intCounter = 0

Set RecSet = Server.Createobject("ADODB.Recordset")
RecSet.Open sql, Conn, 3,3

if(RecSet.EOF) then
  Response.Write "Inga kategorier inlagda i kategorin " & Request.QueryString("kat")
else
  While Not RecSet.EOF
    set objRS = Conn.Execute("SELECT * FROM galleri WHERE namn = '" & RecSet("namn") & "'")
    set objPicture = Conn.Execute("SELECT * FROM bilder WHERE namn = '" & Request.Querystring("kat") & "' ORDER BY namn DESC LIMIT 1")
    
    intCounter = intCounter + 1
    
    response.write intCounter & "-" & RecSet.RecordCount

    if(intCounter < RecSet.RecordCount) then
      strPath = "files/icon_lines.gif"
    else
      strPath = "files/icon_lines2.gif"
    end if

    Response.Write "<img border=""0"" src=""files/icon_lines_empty.gif"" width=""17"" height=""20"" align=""absmiddle"">"
    Response.Write "<img border=""0"" src=""" & strPath & """ width=""17"" height=""20"" align=""absmiddle"">"
    Response.Write "<img border=""0"" src=""files/icon_folder.gif"" width=""16"" height=""15"" align=""absmiddle"">&nbsp;&nbsp;"
    Response.Write "<a href=""./?page=galleri&kat=" & Request.QueryString("kat") & "&id=" & RecSet("namn") & """>" & RecSet("namn") & "</a><br>"
    
    RecSet.MoveNext
  Wend
end if
Medlem sedan juni 200032 967 inlägg
#40

Man kan göra så här:

sql = "Select * From galleri Where sort='" & Request.Querystring("kat") & "' Order By namn"

intCounter = 0

Set RecSet = Server.Createobject("ADODB.Recordset")
RecSet.Open sql, Conn, 3,3

if(RecSet.EOF) then
  Response.Write "Inga kategorier inlagda i kategorin " & Request.QueryString("kat")
else
  [b]lRecordCount = Ubound(RecSet.GetRows(), 2) + 1[/b]
  While Not RecSet.EOF
    set objRS = Conn.Execute("SELECT * FROM galleri WHERE namn = '" & RecSet("namn") & "'")
    set objPicture = Conn.Execute("SELECT * FROM bilder WHERE namn = '" & Request.Querystring("kat") & "' ORDER BY namn DESC LIMIT 1")
    
    intCounter = intCounter + 1
    
    response.write intCounter & "-" & RecSet.RecordCount

    if(intCounter < [b]lRecordCount[/b]) then
      strPath = "files/icon_lines.gif"
    else
      strPath = "files/icon_lines2.gif"
    end if

    Response.Write "<img border=""0"" src=""files/icon_lines_empty.gif"" width=""17"" height=""20"" align=""absmiddle"">"
    Response.Write "<img border=""0"" src=""" & strPath & """ width=""17"" height=""20"" align=""absmiddle"">"
    Response.Write "<img border=""0"" src=""files/icon_folder.gif"" width=""16"" height=""15"" align=""absmiddle"">  "
    Response.Write "<a href=""./?page=galleri&kat=" & Request.QueryString("kat") & "&id=" & RecSet("namn") & """>" & RecSet("namn") & "</a><br>"
    
    RecSet.MoveNext
  Wend
end if

Mvh

270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)