Avatar billede liqido Nybegynder
05. februar 2008 - 14:47 Der 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 ?
Avatar billede nielle Nybegynder
05. februar 2008 - 15:55 #1
SELECT FROM fungere nu også med andet end lige ID.

Men havd er egentlig din forbindels mellem milm og kunstener? Hvordan finder du kunstnereene når du kender filmen.

Hvad hvis er er to/tre/flere kunsnere i en film - vil du så have de fime hvor en af kunstnerene deltager i?
Avatar billede liqido Nybegynder
05. februar 2008 - 17:34 #2
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.
Avatar billede nielle Nybegynder
05. februar 2008 - 18:57 #3
Jeg er nu mere intesseret i hvordan du har sammensat dine tabeller i din database.
Avatar billede jansangill Nybegynder
06. februar 2008 - 00:04 #4
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.
Avatar billede nielle Nybegynder
11. februar 2008 - 18:33 #5
Hvad med lidt respons?
Avatar billede liqido Nybegynder
11. februar 2008 - 20:04 #6
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)

' Skriv personens data
Response.Write rs("embed")


Conn.Close
Set Conn = Nothing
%>

Hmm gav det et større overblik?
Avatar billede nielle Nybegynder
12. februar 2008 - 18:01 #7
Måske noget i denne stil?

SELECT *
FROM musikvideo
WHERE artist IN
(
    SELECT artist FROM musikvideo WHERE id = strID
)
AND id <> strID
Avatar billede liqido Nybegynder
13. februar 2008 - 18:51 #8
Hmm følgende fejl kommer:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/tidslinie/video-x.asp, line 253
Avatar billede nielle Nybegynder
14. februar 2008 - 19:21 #9
Hvordan ser din kode ud?
Avatar billede liqido Nybegynder
14. februar 2008 - 21:21 #10
Sådan her:

<%
' 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
%>
Avatar billede nielle Nybegynder
14. februar 2008 - 22:42 #11
I din kode fra 11/02-2008 20:04:20 udtrak du det Id det drejede sig om som en paramater: strID.

Koden ovenfor gik ud fra at du stadig bruger denne:

strSQL = "SELECT * FROM musikvideo WHERE artist IN ( SELECT artist FROM musikvideo WHERE id = strID )AND id <> strID"

rettes til:

strSQL = "SELECT * FROM musikvideo WHERE artist IN ( SELECT artist FROM musikvideo WHERE id = " & strID & ") AND id <> " & strID
Avatar billede liqido Nybegynder
18. februar 2008 - 10:27 #12
Hmm jeg bruger denne nu:

<%
' 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 <>'.

/tidslinie/video-x.asp, line 248
Avatar billede nielle Nybegynder
18. februar 2008 - 17:39 #13
Den vil jo også fejle med den aller første sql:

strSQL = "SELECT * FROM musikvideo WHERE artist IN ( SELECT artist FROM musikvideo WHERE id = " & strID & ") AND id <> " & strID
Set rs = Conn.Execute(strSQL)

idet strID jo er tom på det tidspunkt.
Avatar billede liqido Nybegynder
24. februar 2008 - 11:05 #14
Ok så ved jeg ikke lige hvordan jeg skal gøre det :S
Avatar billede nielle Nybegynder
24. februar 2008 - 11:31 #15
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")

        Response.Write ...

        rs2.MoveNext
    Loop
   
    rs.MoveNext
Loop While Not rs.EOF
Avatar billede liqido Nybegynder
24. februar 2008 - 13:45 #16
hmm har du evt. msn eller er du ikke meget for at hjælpe den vej fra :S ?
Avatar billede liqido Nybegynder
24. februar 2008 - 13:45 #17
det er nemmere at snakke om de må detaljer der nemlig
Avatar billede nielle Nybegynder
24. februar 2008 - 14:18 #18
Jeg bruger desværre ikke MSN.
Avatar billede liqido Nybegynder
24. februar 2008 - 14:48 #19
Ok jeg det er i orden.. jeg prøver lige at finde hoved og hale i det hele du har skrevet en af dagene, også vender jeg tilbage.

Tak for den foreløbige hjælp

Mvh Thomas
Avatar billede nielle Nybegynder
24. februar 2008 - 15:09 #20
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.
Avatar billede nielle Nybegynder
03. marts 2008 - 17:34 #21
Er du kommet vidre med denne her?
Avatar billede liqido Nybegynder
03. marts 2008 - 23:04 #22
roder stadig med det ! .. synes ikke det er så nemt :S
Avatar billede nielle Nybegynder
04. marts 2008 - 08:55 #23
Du skal endelig spørge og komme med eksempler på hvad du prøver på af kode. Ellers er det lidt svært at hjælpe. :^)
Avatar billede nielle Nybegynder
17. marts 2008 - 18:44 #24
Hallo?
Avatar billede liqido Nybegynder
18. marts 2008 - 14:24 #25
Kan du ikke oprettet et svar så får du point ;) .. tak for hjælpen =)
Avatar billede nielle Nybegynder
18. marts 2008 - 17:33 #26
Har du da fået løst dit problem?
Avatar billede liqido Nybegynder
18. marts 2008 - 21:24 #27
yes ;)
Avatar billede nielle Nybegynder
18. marts 2008 - 22:16 #28
Cool :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester