webForumDet fria alternativet

CD databas i Access/ASP/SQL

1 svar · 265 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej!
Har just börjat intressera mig för ASP och dess fantastiska värld. För att ha något att träna på har jag tänkt göra en databas av min CD-samling med ett webgränssnitt gjort i ASP. Jag vill därför inte använda Access till att lägga data i databasen utan vill helt använda webbaserade formulär. Där kommer problemet...

Databasen är konstruerad på följande sätt:

3 st tabeller:

artist
------
artist_id
artist_namn

album
-------
album_id
artist_id
album_namn
album_release

Song
------
Song_id
Song_namn
Song_lengd

För det första; är detta en bra uppdelning? Har tänkt på att en sång också kan finnas på flera album...

Då till det första problemet:
Jag har tänkt göra en inmatningssida för att fylla på med data som skall vara utformad ungefär så här:

Artist:...........
Album:............
Album release:..........

Låt 1:........... Längd:.........
Låt 2:........... Längd:.........
Osv

<Skicka poster!> <Radera!>

När man klickar på <Skicka poster!> ska informationen läggas in i rätt tabell. Hur gör man detta på ett bra sätt? Om det är så att t. ex Madonna redan finns i tabellen "artist" vill jag ju inte att hon ska läggas till igen utan bara att artist_id hämtas och läggas in i tabellen "album", där sedan resten av informationen läggs in.

Förfarandet skall vara så här om man vill lägga till en CD-skiva:

1. Kontrollera om artist redan finns i databasen. Om så inte är fallet -lägg till artisten.

2. Hämta artist_id.

3.Lägg till en rad i tabellen album som associerar den med artist_id.

4. Hämta album_id.

5. Lägg till en rad för varje låt i tabellen song som associerar med album_id.

Då kommer nästa problem!

Alla CD-skivor har ju inte samma antal låtar! Hur kan man göra det på ett smidigt sätt? Jag vill ju inte ha en massa tomma poster som associerar med album!

Jag har haft lite idéer om att göra ett standarformulär med 15 rader för låtar, men då kommer man ju till problemet med tomma poster. En annan idé har varit att göra registreringen av CD i tre steg. skriva in om Artist och Album, skicka informationen returnera album_id och på nästa sida välja antal låtar på skivan, skicka denna information som returnerar ett formulär med rätt antal fält där man skriver in låtarna och skickar till databasen. Denna lösning tycker jag inte verkar så smidig. Det måste ju finnas bättre sätt!

Jag vill ha flera tabeller i databasen för att göra den mer flexibel och kraftfull.

En annan fråga om Access; spelar det någon roll om man lägger till relationer där om man ska använda ASP och SQL för att bearbeta databasen/tabellerna?

Hoppas det finns någon som har lite ideér och lösningar på mina problem och tankar!

Tack på Förhand!

Henrik Lindell
Göteborg

------------------
Henke

[Redigerat av devotion den 21 jan 2001]

devotionMedlem sedan jan. 20013 582 inlägg
#2

Är jag på rätt väg med den här koden? Har inte testat utan bara "tänkt" Rätta mig gärna...

<%@ Language = VBScript %>

<% Option Explicit %>

<%
Dim objConn

Set objConn = Server.CreateObject("ADODBConnection")

objConn.ConnectionString = "DSN=mydb"
objConn.Open

Dim strAlbum_namn
Dim strArtist_namn

strAlbum_namn = Request.Form("album_namn")
strArtist_namn = Request.Form("artist_namn")

Dim strSQL
Dim objRS

Set objRS = Server.CreateObject("ADODB.Recordset")

strSQL = "SELECT artist_name FROM artist WHERE artist_name = '" & strArtist_namn & "'"

objRS.Open strSQL, objConn

If objRS.EOF Then

strSQL = "INSERT INTO artist(artist_name) VALUES('" & strArtist_namn & "')

objRS.Open strSQL, objConn

Else

strSQL = "SELECT artist_id FROM artist WHERE artist_name = '" & strArtist_namn & "'"

objRS.Open strSQL, objConn

Dim artist_id

artist_id = objRS(artist_id)

End If

strSQL= "INSERT INTO album(album_name, artist_id) Values('" & album_namn & "'," & artist_id & ")"

objRS.Open strSQL, objConn

objRS.Close
Set objRS = Nothing

objConn Close
Set objConn = Nothing

%>

/Henrik

------------------
Henke

[Redigerat av devotion den 21 jan 2001]

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)