Avatar billede lund_dk Praktikant
07. juli 2006 - 13:28 Der er 12 kommentarer og
1 løsning

Genre fejl,komme separeret output

Jeg har i min tabel "film" en kolonne "genre" hvor jeg angiver hvilke genrer mine film skal placeres i. Denne kolonne er komme separeret, da jeg ønsker at kunne vælge flere genrer.

Problemet er, at hvis jeg i min film eks. vælger genreid 3, så når min tabel med genrerløbes igennem, vises genre 30 også, da tallet "3" indgår 30.

Hvordan undgår jeg dette?

<%
        strGenre = "select * from Genre order by Genre"
        Set RSGenre = conn.Execute(strGenre)
        While Not RSGenre.EOF
        if instr(rsFilm("Genre"),rsGenre("GenreID")) <> 0 then
        %>
        <a href="?Page=List&ID=<%= RSGenre("GenreID")%>" title=""><%= RSGenre("Genre")%></a>&nbsp; 
        <%
        end if
        RSGenre.MoveNext
        Wend
        Set RSGenre=Nothing
        %>
Avatar billede fennec Nybegynder
07. juli 2006 - 13:52 #1
Den bedste løsning er at få lave din DB opbygning om. Kommaliste har intet at gøre i en DB. De skal udskiftes med en tabel:

[film2genre]
filmID, genreID
Avatar billede lund_dk Praktikant
07. juli 2006 - 13:56 #2
Okai, vil jeg se på senere så..
Men er det ikke en løsning alligevel til det? Som jeg kan bruge i mellemtiden..
Avatar billede lund_dk Praktikant
07. juli 2006 - 17:16 #3
Har valgt at lave en tabel i min database til at definere genrerne

Men hvordan rent praktisk laver jeg en sql sætningen, hvor jeg vil hente film fra [film] tabellen, fra en bestemt genre fra [film2genre] tabellen?
Avatar billede lund_dk Praktikant
07. juli 2006 - 17:26 #4
en select * from film2genre where filmid = " & noget & " and genreid = " & noget & "
den dutter ikke, da jeg skal sortere alfbetisk efter filmtitel
Avatar billede farving Nybegynder
07. juli 2006 - 17:35 #5
http://www.w3schools.com/sql/sql_join.asp << læs der om søgning i to tabeller... ellers er guiden på w3schools.com god :)

Mvh Carsten
Avatar billede lund_dk Praktikant
07. juli 2006 - 17:49 #6
Har før læst på det, men aldrig rigtig helt forstået.. så hvis en kan hjælpe mig med en mere konkret sql sætning ud fra min behov, ville jeg blive glad
Avatar billede farving Nybegynder
07. juli 2006 - 18:59 #7
strSQL = "SELECT * FROM film INNER JOIN fil2genre ON film.filmID=film2genre.filmID ORDER BY film2genre.genreID"
set Rs = conn.Execute(strSQL)

Virker det ikke efter hensigten?

Mvh Carsten
Avatar billede lund_dk Praktikant
07. juli 2006 - 20:19 #8
Jeg rettede den til, så de forskellige navne passede til min database
strSQL = "SELECT * FROM FILM INNER JOIN fil2genre ON film.ID=film2genre.filmID ORDER BY film.Titel"

Jeg laver så med en ID = Request.QueryString("ID") hvor jeg angiver hvad genre ID vil have vist

Har så forsøgt med,
strSQL = "SELECT * FROM FILM INNER JOIN fil2genre ON film.ID=" & Request.QueryString("ID") & " ORDER BY film.Titel"
uden held, placerer jeg det forkert?
Avatar billede farving Nybegynder
07. juli 2006 - 20:25 #9
for det første er det nok film2genre i stedet for fil2genre :)

men så skal den se sådan her ud:

strSQL = "SELECT * FROM film INNER JOIN film2genre ON film.ID=film2genre.filmID WHERE film.ID=" & Request.QueryString("ID") & " ORDER BY film.Titel"

Mvh Carsten
Avatar billede lund_dk Praktikant
07. juli 2006 - 20:30 #10
WHERE film.ID=" & Request.QueryString("ID") & "

Det er jo ikke filmens ID jeg skal finde, men filmens genre jeg skal bruge, og genre IDen jeg henter fra Request.QueryString("ID")

Eller misforstår jeg?
Avatar billede farving Nybegynder
07. juli 2006 - 20:32 #11
strSQL = "SELECT * FROM film INNER JOIN film2genre ON film.ID=film2genre.filmID WHERE film2genre.genreID=" & Request.QueryString("ID") & " ORDER BY film.Titel"

Gør du nok ikke, nærmere mig der ik helt ved hvad du mener/mente :)

Prøv det der

Mvh Carsten
Avatar billede lund_dk Praktikant
07. juli 2006 - 20:51 #12
Perfekt.. Nu virker det.. mange tak :)
Avatar billede farving Nybegynder
07. juli 2006 - 21:38 #13
så lidt :)
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