timediaMedlem sedan maj 2001451 inlägg
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> "
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
Kör response.write(visa) och kolla om du har problem med select-satsen.
timediaMedlem sedan maj 2001451 inlägg
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
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
IF RecSet("Kategori") = "%action%"
Ligger det verkligen %action% i databasen?
timediaMedlem sedan maj 2001451 inlägg
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
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
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
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
Detta funkar inte LarsG:
IF lcase(RecSet("Kategori")) = "action" THEN
response.write RecSet("Kategori")
end if
skymanMedlem sedan juli 20011 347 inlägg
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
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
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
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> "
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
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
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
Ä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
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 "'> "
response.write "<a href=""filmrec.asp?ID=" & RS("ID") & """>" & RS("Titel") & "</a> "
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
timediaMedlem sedan maj 2001451 inlägg
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 "'> "
response.write "<a href=""filmrec.asp?ID=" & RS("ID") & """>" & RS("Titel") & "</a> "
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> "
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> "
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> "
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> "
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> "
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
%>