05. februar 2008 - 14:47Der er
27 kommentarer og 1 løsning
Hente fra access database i asp
Hej eksperter..
Jeg har en liste med musikfilm med forskellige kunstnere. Jeg har hentet alle musikfilmtitlerne fra en access database og listet dem op, og alle titlerne linker videre til mere information om den enkelte film. Det er kodet i asp.
Men jeg har flere film for hver kunstner. Så jeg vil gerne have et link til de ANDRE film med samme kunstner, når man trykker en givet film med en givet kunstner. Ligesom eksmepelvis youtube, hvor der er link til andre lignende film når man er inde på en film.
Jeg kan ikke bruge Select * From tabel Where film = " & Request.Querystring("film"). Den kan vel kun bruges ved id ??
Håber i forstår hvad jeg mener, og at I kan hjælpe ?
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
du kan evt. se det her http://www.rocknet.dk/tidslinie/90.asp Der er en liste med film. Så hvis du f.eks trykker på en film med nirvana, så skal der være et link til de andre film med nirvana der fra.
nok bedst at have en kunstner db og en indhold db så. Flere til en relationer.
Første databse (kunstner): f.eks.
id navn
Anden database(indhold): id parent_id titel beskrivelse rakkefolge
På den måde kan du nemt liste flere ud fra samme kunstner. Rakkefolge kan så beskrive hvilken der er vigtigts og skal være på forsiden, eller undersiden.
Ja det er også rigtigt, sorry. Håber I stadig hænger ved :S Men jeg har en tabel hvor jeg har følgende kolonner.
id titel (giver sig selv) artist (kunstnernavn) kategori (musikvideo eller koncerfilm) beskrivelse (giver sig selv) embed (en kode til filmen) uploaded (dato jeg uploadede filmen) filmid (til kommentarsystem)
I en asp film henter jeg så så titlen, kategorien og beskrivelsen på hver film, og tilknytter et billed hvis navn svarer til filmens id.
Et eksempel her hvor det er de 10 nyeste film jeg henter fra databasen:
<% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/musikvideo.mdb") Conn.Open DSN
strSQL = "Select top 10 * From musikvideo Order by id DESC" Set rs = Conn.Execute(strSQL)
Do ' Filmens titel strNavn = rs("Titel")
strID=rs("Id") If CreateObject("Scripting.FileSystemObject").FileExists(Server.MapPath("/upload/musikvideopic/"&strID&".jpg")) Then strPic="<img alt=""Billede"" src=""/upload/musikvideopic/"&strID&".jpg"" width=""214"" height=""120""> " Else strPic="<img alt=""Intet billede"" src=""/upload/musikvideopic/nopic.jpg"" width=""214"" height=""120""> " End If
' Liste med links Response.Write "<tr valign=""top""><td><a href=""video-x.asp?id="&strID&""">"&strPic&"</a></td><td><a href=""video-x.asp?id="&strID&""">"&strNavn&"</a><br><font size=""1""><b>"&rs("kategori") &"</b></font><br><font size=""2"">"&rs("beskrivelse") &"</font></td></tr>"
rs.MoveNext Loop While Not rs.EOF
Conn.Close Set Conn = Nothing %>
Når jeg så er inde på en film bruger jeg følgende til at vise filmen.
<% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath ("../db/musikvideo.mdb") Conn.Open DSN
' Hent fra databasen afhængig af værdien id fra URL strSQL = "Select * From musikvideo Where Id = " & Request.Querystring("id") Set rs = Conn.Execute(strSQL)
<% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/musikvideo.mdb") Conn.Open DSN
strSQL = "SELECT * FROM musikvideo WHERE artist IN ( SELECT artist FROM musikvideo WHERE id = strID )AND id <> strID"
Set rs = Conn.Execute(strSQL)
Do
strID=rs("Id") If CreateObject("Scripting.FileSystemObject").FileExists(Server.MapPath("/upload/musikvideopic/"&strID&".jpg")) Then strPic="<img alt=""billede"" src=""/upload/musikvideopic/"&strID&".jpg"" width=""145"" height=""81""> " Else strPic="<img alt=""Intet billede"" src=""/upload/musikvideopic/nopic.jpg"" width=""145"" height=""81""> " End If
' Liste med links Response.Write "<tr valign=""top""><td><a href=""video-x.asp?id="&strID&""">"&strPic&"</a></td><td><a href=""video-x.asp?id="&strID&""">"&strNavn&"</a></td></tr>"
<% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/musikvideo.mdb") Conn.Open DSN
strSQL = "SELECT * FROM musikvideo WHERE artist IN ( SELECT artist FROM musikvideo WHERE id = " & strID & ") AND id <> " & strID Set rs = Conn.Execute(strSQL)
Do
strID=rs("Id") If CreateObject("Scripting.FileSystemObject").FileExists(Server.MapPath("/upload/musikvideopic/"&strID&".jpg")) Then strPic="<img alt=""billede"" src=""/upload/musikvideopic/"&strID&".jpg"" width=""145"" height=""81""> " Else strPic="<img alt=""Intet billede"" src=""/upload/musikvideopic/nopic.jpg"" width=""145"" height=""81""> " End If
' Liste med links Response.Write "<tr valign=""top""><td><a href=""video-x.asp?id="&strID&""">"&strPic&"</a></td><td><a href=""video-x.asp?id="&strID&""">"&strNavn&"</a></td></tr>"
rs.MoveNext Loop While Not rs.EOF
Conn.Close Set Conn = Nothing %>
Men der kommer en fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error. in query expression 'artist IN ( SELECT artist FROM musikvideo WHERE id = ) AND id <>'.
strSQL = "SELECT * FROM musikvideo WHERE artist IN ( SELECT artist FROM musikvideo WHERE id = " & strID & ") AND id <> " & strID Set rs = Conn.Execute(strSQL)
Din kode fra 11/02-2008 20:04:20 ser nogenlunde sådan her ud:
strSQL = "Select top 10 * From musikvideo Order by id DESC" Set rs = Conn.Execute(strSQL)
Do ' Filmens titel strNavn = rs("Titel")
strID = rs("Id")
If CreateObject("Scripting.FileSystemObject").FileExists(Server.MapPath("/upload/musikvideopic/"&strID&".jpg")) Then strPic="<img alt=""Billede"" src=""/upload/musikvideopic/" & strID & ".jpg"" width=""214"" height=""120""> " Else strPic="<img alt=""Intet billede"" src=""/upload/musikvideopic/nopic.jpg"" width=""214"" height=""120""> " End If
' Liste med links Response.Write ...
rs.MoveNext Loop While Not rs.EOF
D.v.s. at du kender strID og kunsternavn inde i løkken. Hvis du ønsker at finde alle de andre film med samme kunstre, skal du bare lave en indre SQL baseret på disse oplysninger:
strSQL = "Select top 10 * From musikvideo Order by id DESC" Set rs = Conn.Execute(strSQL)
Do strID = rs("Id")
' Filmens titel strNavn = rs("Titel")
kunstnernavn = rs("artist")
If CreateObject("Scripting.FileSystemObject").FileExists(Server.MapPath("/upload/musikvideopic/"&strID&".jpg")) Then strPic="<img alt=""Billede"" src=""/upload/musikvideopic/" & strID & ".jpg"" width=""214"" height=""120""> " Else strPic="<img alt=""Intet billede"" src=""/upload/musikvideopic/nopic.jpg"" width=""214"" height=""120""> " End If
' Liste med links Response.Write ...
' Liste med links til andre film af samme kunstener.
strSQL2 = "SELECT * FROM musikvideo WHERE artist = '" & kunstnernavn & "' AND id <> " & strID Set rs2 = Conn.Execute(strSQL2)
While Not rs2.EOF ' Titel på de andre musikvideoer. strNavn2 = rs2("titel")
Jeg synes nu heller ikke at MSN er specielt godt til at diskutere kode i - der er alt for lidt plads i vinduet.
Men du må endeligt spørge videre her hvis der er noget du ikek forstår. Og det er nok en fordel hvis der ikka går mange dage imellem ... for så glemmer man for meget.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.