webForumDet fria alternativet

ProblemSUB

27 svar · 565 visningar · startad av timedia

timediaMedlem sedan maj 2001451 inlägg
#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?

skymanMedlem sedan juli 20011 347 inlägg
#2

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

timediaMedlem sedan maj 2001451 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?

skymanMedlem sedan juli 20011 347 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.

LarsGMedlem sedan dec. 200012 465 inlägg
#5

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

Ligger det verkligen %action% i databasen?

timediaMedlem sedan maj 2001451 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

@ndersMedlem sedan juni 200026 914 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?

LarsGMedlem sedan dec. 200012 465 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.

timediaMedlem sedan maj 2001451 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

timediaMedlem sedan maj 2001451 inlägg
#10

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

skymanMedlem sedan juli 20011 347 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...

timediaMedlem sedan maj 2001451 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???

@ndersMedlem sedan juni 200026 914 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,

timediaMedlem sedan maj 2001451 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
@ndersMedlem sedan juni 200026 914 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,

timediaMedlem sedan maj 2001451 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'

@ndersMedlem sedan juni 200026 914 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?

timediaMedlem sedan maj 2001451 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

@ndersMedlem sedan juni 200026 914 inlägg
#19

Resten av koden?

timediaMedlem sedan maj 2001451 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
%>
Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb