webForumDet fria alternativet
Logga in / Bli medlem

ProblemSUB

ASP

27 svar · 576 visningar · startad av timedia

Medlem sedan maj 2001420 inlägg
Trådstart#1

Den vill inte lista filmer i samma kategori?

Först öppnar jag DB

<%

	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("mindb") 

	Set RecSet = Server.CreateObject("ADODB.Recordset")
              Visa = "SELECT * FROM Recension WHERE ID = " & request("Id")
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic 
%>

Så anroper jag rätt sub:

<%
 IF RecSet("Kategori") = "%action%" THEN
filmsistaaction() 
 end if %>

Så här ser suben ut:

sub filmsistaaction()

SQLlist2 = "SELECT TOP 10 ID, Titel, Kategori FROM Recension WHERE Kategori LIKE '%action%' ORDER BY Id Desc"

Set RS= Connect.Execute(SQLlist2)
RS.Cachesize = 10

if not (RS.eof and RS.bof) THEN
DO UNTIL RS.EOF

  response.write "<a class=""meny"" href=""filmrec.asp?ID=" & RS("ID") & """>" & RS("Titel") & "</a>&nbsp;"
  response.write "<br>" & chr(13)
  RS.MoveNext
Loop
else
  response.write "<br><b>Inga filmer i databasen???</b><br>"
end if

RecSet.Close

End Sub

...men den vill inte lista actionfilmerna :x
Någon som kan hjälpa?

Medlem sedan juli 20012 450 inlägg
#2

Kör response.write(visa) och kolla om du har problem med select-satsen.

Medlem sedan maj 2001420 inlägg
#3

response.write(visa) skriver ut: SELECT * FROM Recension WHERE ID = 261...
men när jag skriver response.write(sqllist2) får jag inget svar?
Vad kan vara fel med selecten i subben?

Medlem sedan juli 20012 450 inlägg
#4

Får du inget svar? Vart skriver du Response.Write(sqllist2) ?
Inne i Suben? Då kommer du inte in i sugen.
Kolla så att if-satsen IF RecSet("Kategori") = "%action%" THEN är korrekt.

Medlem sedan dec. 200012 464 inlägg
#5

IF RecSet("Kategori") = "%action%"

Ligger det verkligen %action% i databasen?

Medlem sedan maj 2001420 inlägg
#6

action ligger i db. Nu har jag plockad bort procenttecknen i if-satsen, men det hjälpte inte :o

Jag provade skriva ut Response.Write(sqllist2) i if-satsen:

IF RecSet("Kategori") = "action" THEN
filmsistaaction()
Response.Write(sqllist2)
end if

Medlem sedan juni 200032 967 inlägg
#7

sqllist2 har inget värde utanför subben.

Vad innehåller RecSet("kategori")? Skriv ut och kolla. Kommer du in i if-satsen?

Medlem sedan dec. 200012 464 inlägg
#8

Eftersom sqllist2 är lokal i din sub så kommer du inte att få ut något av den utskriften.

Om du bara jämför med = så är det skillnad på små och stora bokstäver

IF lcase(RecSet("Kategori")) = "action" THEN 
   filmsistaaction() 
end if

t.ex.

Medlem sedan maj 2001420 inlägg
#9

Hmm, det är ju if-satsen som är tokig :q

IF RecSet("Kategori") = "Action" THEN
 response.write RecSet("Kategori")

 end if

Den skriver inte ut nåt!
När jag lägger response.write RecSet("Kategori") utanför ifsatserna skriver den ut: Action / Drama

Medlem sedan maj 2001420 inlägg
#10

Detta funkar inte LarsG:
IF lcase(RecSet("Kategori")) = "action" THEN
response.write RecSet("Kategori")
end if

Medlem sedan juli 20012 450 inlägg
#11

men svaret var väl "action / drama"?
Du får väl kolla om svaret från db är just det isf...

Medlem sedan maj 2001420 inlägg
#12

Jag fixar inte det här, men ger mig inte än :(

If-satsen är fel på nåt sätt?
Om jag skriver <% =RecSet("Kategori") %> får jag svaret: Action / Drama
Om jag skriver <% IF lcase(RecSet("Kategori")) = "Action" THEN
response.write RecSet("Kategori")
end if %> får jag inget resultat. Ologisk???

Medlem sedan juni 200032 967 inlägg
#13

Nej, det är mycket logiskt. "Action / Drama" är ju inte under några omständigheter samma som "Action".

Det du kan göra är att kontrollera om Action ingår som del i fältvärdet, med InStr.

I övrigt kommer aldrig din if-sats att fungera eftersom du i jämförelsen gör om fältvärdet till lower case, men ändå jämför med Action med versalt A.

if InStr(LCase(RecSet("kategori")), "action") > 0 then

Mvh,

Medlem sedan maj 2001420 inlägg
#14

Tack så mycket @nders, nu funkar det :birp

...men om du inte är trött på mig än? varför listar den 20 filmer?

if InStr(LCase(RecSet("kategori")), "action") > 0 then
 filmsistaaction()
 end if

Subben:

Sub filmsistaaction()

SQLlist = "SELECT TOP 10 ID, Titel, Kategori FROM Recension WHERE Kategori LIKE '%action%' ORDER BY Id Desc, titel"

Set RS = Connect.Execute(SQLlist)
RS.Cachesize = 10

if not (RS.eof and RS.bof) THEN
DO UNTIL RS.EOF

  response.write "<a class=""meny"" href=""filmrec.asp?ID=" & RS("ID") & """>" & RS("Titel") & "</a>&nbsp;"
  response.write "<br>" & chr(13)
  RS.MoveNext
Loop
else
  response.write "<br><b>Inga actionfilmer i databasen???</b><br>"
end if

RS.Close
End Sub
Medlem sedan juni 200032 967 inlägg
#15

Kan det vara ett problem som liknar det i denna tråd: http://www.webforum.nu/showthread.php?s=&threadid=12192 ?

Annars är det två uppsättningar av samma filmer, eller är det 20 olika? Om det är 20 olika verkar det som att det blir så pga Access förmåga att göra enligt tidigare tråd när man använder TOP.

Kontrollera att du inte råkar exekvera subben två gånger också... ;)

Mvh,

Medlem sedan maj 2001420 inlägg
#16

Den listar först 10 actionfilmer och sen 10 drama!
...fast jag ville ju bara ha actionfilmerna :q

Resultatet av ifsatsen är 'Action / Drama'

Medlem sedan juni 200032 967 inlägg
#17

Är det så att du kör din sub-exekvering inne i en loop? Ska det vara så? Hur ser den övriga koden ut?

Förresten, varför delar Action och Drama kategori? Det är liksom gjort för att det ska bli problem. Hur vet du vad som är vad?

Medlem sedan maj 2001420 inlägg
#18

min sub loopar:

Sub filmsistaaction()

SQLlist = "SELECT TOP 10 ID, Titel, Betyg, Kategori FROM Recension WHERE Kategori LIKE '%action%' ORDER BY Id Desc, titel"

Set RS = Connect.Execute(SQLlist)
RS.Cachesize = 10

if not (RS.eof and RS.bof) THEN
DO UNTIL RS.EOF

 response.write "<img src='images/tern" & RS("Betyg") & ".gif' width='15'""" 
  response.write "'>&nbsp;"
  response.write "<a href=""filmrec.asp?ID=" & RS("ID") & """>" & RS("Titel") & "</a>&nbsp;"
  response.write "<br>" & chr(13)
  RS.MoveNext
Loop
else
  response.write "<br><b>Inga filmer i databasen???</b><br>"
end if

RS.Close
End Sub

I inmatningen till db har jag ett textfält där man med text anger vilken kategori filmen tillhör. Där kan det vara så att en film tillhör olika kategorier som till exempel: Action / Drama

Medlem sedan juni 200032 967 inlägg
#19

Resten av koden?

Medlem sedan maj 2001420 inlägg
#20

Sidan right.asp innehåller if-satser och subbar:


 <%
if InStr(LCase(RecSet("kategori")), "action") > 0 then
 filmsistaaction()
 end if
 
if InStr(LCase(RecSet("kategori")), "drama") > 0 then 
 filmsistadrama()
 end if
 
if InStr(LCase(RecSet("kategori")), "barn") > 0 then 
 filmsistabarn() 
end if

if InStr(LCase(RecSet("kategori")), "famil") > 0 then 
 filmsistabarn() 
end if

if InStr(LCase(RecSet("kategori")), "komed") > 0 then 
 filmsistakomedi() 
end if

if InStr(LCase(RecSet("kategori")), "humor") > 0 then 
 filmsistakomedi() 
end if

if InStr(LCase(RecSet("kategori")), "thriller") > 0 then 
 filmsistathrill() 
end if

if InStr(LCase(RecSet("kategori")), "rys") > 0 then 
 filmsistarys() 
end if

if InStr(LCase(RecSet("kategori")), "skräck") > 0 then 
 filmsistarys() 
end if
%>
'#######här kommer subbarna

Sub filmsistaaction()

SQLlist = "SELECT TOP 10 ID, Titel, Betyg, Kategori FROM Recension WHERE Kategori LIKE '%action%' ORDER BY Id Desc, titel"

Set RS = Connect.Execute(SQLlist)
RS.Cachesize = 10

if not (RS.eof and RS.bof) THEN
DO UNTIL RS.EOF

 response.write "<img src='images/tern" & RS("Betyg") & ".gif' width='15'""" 
  response.write "'>&nbsp;"

  response.write "<a href=""filmrec.asp?ID=" & RS("ID") & """>" & RS("Titel") & "</a>&nbsp;"
  response.write "<br>" & chr(13)
  RS.MoveNext
Loop
else
  response.write "<br><b>Inga filmer i databasen???</b><br>"
end if

RS.Close

End Sub

Sub filmsistadrama()

SQLlist = "SELECT TOP 10 ID, Titel, Kategori FROM Recension WHERE Kategori LIKE '%drama%' ORDER BY Id Desc, titel"

Set RS = Connect.Execute(SQLlist)
RS.Cachesize = 10

if not (RS.eof and RS.bof) THEN
DO UNTIL RS.EOF

  response.write "<a class=""meny"" href=""filmrec.asp?ID=" & RS("ID") & """>" & RS("Titel") & "</a>&nbsp;"
  response.write "<br>" & chr(13)
  RS.MoveNext
Loop
else
  response.write "<br><b>Inga filmer i databasen???</b><br>"
end if

RS.Close

End Sub

Sub filmsistabarn()

SQLlist = "SELECT TOP 10 ID, Titel, Kategori FROM Recension WHERE Kategori LIKE '%barn%' OR Kategori LIKE '%famil%' ORDER BY Id Desc, titel"

Set RS = Connect.Execute(SQLlist)
RS.Cachesize = 10

if not (RS.eof and RS.bof) THEN
DO UNTIL RS.EOF

  response.write "<a class=""meny"" href=""filmrec.asp?ID=" & RS("ID") & """>" & RS("Titel") & "</a>&nbsp;"
  response.write "<br>" & chr(13)
  RS.MoveNext
Loop
else
  response.write "<br><b>Inga filmer i databasen???</b><br>"
end if

RS.Close

End Sub

Sub filmsistakomedi()

SQLlist = "SELECT TOP 10 ID, Titel, Kategori FROM Recension WHERE Kategori LIKE '%komedi%' ORDER BY Id Desc, titel"

Set RS = Connect.Execute(SQLlist)
RS.Cachesize = 10

if not (RS.eof and RS.bof) THEN
DO UNTIL RS.EOF

  response.write "<a class=""meny"" href=""filmrec.asp?ID=" & RS("ID") & """>" & RS("Titel") & "</a>&nbsp;"
  response.write "<br>" & chr(13)
  RS.MoveNext
Loop
else
  response.write "<br><b>Inga filmer i databasen???</b><br>"
end if

RS.Close

End Sub

Sub filmsistathrill()

SQLlist = "SELECT TOP 10 ID, Titel, Kategori FROM Recension WHERE Kategori LIKE '%thriller%' ORDER BY Id Desc, titel"

Set RS = Connect.Execute(SQLlist)
RS.Cachesize = 10

if not (RS.eof and RS.bof) THEN
DO UNTIL RS.EOF

  response.write "<a class=""meny"" href=""filmrec.asp?ID=" & RS("ID") & """>" & RS("Titel") & "</a>&nbsp;"
  response.write "<br>" & chr(13)
  RS.MoveNext
Loop
else
  response.write "<br><b>Inga filmer i databasen???</b><br>"
end if

RS.Close
End Sub

Sub filmsistarys()

SQLlist = "SELECT TOP 10 ID, Titel, Kategori FROM Recension WHERE Kategori LIKE '%rys%' OR Kategori LIKE '%skräck%' ORDER BY Id Desc, titel"

Set RS = Connect.Execute(SQLlist)
RS.Cachesize = 10

if not (RS.eof and RS.bof) THEN
DO UNTIL RS.EOF

  response.write "<a class=""meny"" href=""filmrec.asp?ID=" & RS("ID") & """>" & RS("Titel") & "</a>&nbsp;"
  response.write "<br>" & chr(13)
  RS.MoveNext
Loop
else
  response.write "<br><b>Inga filmer i databasen???</b><br>"
end if

RS.Close

End Sub
%>
389 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
120 ms — deklarationer (db)
124 ms — hämta statistik (db)
138 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)