webForumDet fria alternativet

Hur skall jag bäst göra det??

ASP

5 svar · 288 visningar · startad av Pudolf

Medlem sedan juli 2000221 inlägg
Frågan#1

Helloj!

Jag har en databas med en tabell där det finns information om bilar. Men jag skulle vilja ha lite bilder på bilarna.

Så jag behöver lite tips om hur databasen då skall se ut.

Ska jag exempelvis lägga in kanske 12 nya kolumner i min tabell (Bil). Den första med namnet bild1, sedan bild2, bild3 ända upp till bild12. Och sedan på min sida där jag lägger in allt i databasen ha 12 st "Textfields" där jag skriver in URL till bilden (/sökväg/bilden.jpg).

Så här skulle databasen kunna se ut då:

ID     Namn       Blabla      bild1      bild2    bild3 etc...
1      Hejsan     någonting     /bilden/sökväg

(REDIGERAT: min "teckning" ovan blev visst inte så bra....)

Då skulle väl SQL kunna se ut såhär:

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "DBQ=" & Server.Mappath("/db/filen.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
SQLStmt = "INSERT INTO Bil "
SQLStmt = SQLStmt & "(Rubrik, Minirubrik, Text, Farg, Marke, bild1, bild2, bild3, bild4, bild5, bild6, OSV......) "
SQLStmt = SQLStmt & "VALUES('" & Trim(Request.Form("Rubrik")) & "', '" & Trim(Request.Form("Minirubrik")) & "', '" & Trim(Request.Form("Text")) & "', '" & Trim(Request.Form("Farg")) & "', '" & Trim(Request.Form("bild1")) & "', '" & Trim(Request.Form("bild2")) & "', '" & Trim(Request.Form("Marke")) & "'); "
Connection.Execute(SQLStmt)
Connection.Close

(jag skrev inte alla "bild1, bild2 osv"
tar så lång tid/plats)

Hjälp mig! Är detta bra? Eller har någon en bättre idè? En enkel idè med kod kanske? :-)

TACKSAM FÖR SVAR!

[Redigerat av Pudolf den 22 jul 2000]

Medlem sedan dec. 19998 577 inlägg
#2

Ungefär så skulle jag också göra... fast jag skulle nog göra antalet bilder dynamiskt och med ett fält för alla bilder...

Då skulle det fältet vara av datatypen text, och alla bilder skulle vara kolonseparerat t.ex: "bild1.jpg:bild2.jpg:bild3.jpg"

Och sedan separera upp dessa i en array med funktionen SPLIT().

Sedan när du skall lägga till en bild så hämtar du bara textsträngen som lägger i fältet och ökar på den... Eller om du skall ta bort en bild, så letar du bara reda på vart i strängen den ligger och ta bort den...

Så skulle jag har gjort... :)

------------------
Prisa inte snus
www.webeye.nu

Medlem sedan apr. 20007 588 inlägg
#3

Gör ett relationsobjekt istället.

Tabell BIL

bil_id
namn

Tabell bildRO

bil_id
bild_id

Tabell bild

bild_id
bildURL

På så sätt kan varje bil ha hur många bilder som helst, helt dynamiskt.

SQL-satsen för att hämta ut en specifik bils bilder kan se ut så här:

SELECT bild_id, bildURL FROM bild WHERE bild_id = (SELECT bild_id FROM bildRO WHERE bil_id = ** SÄTT IN BILENS ID HÄR**)

Obs att jag slängde ihop koden "on-the-fly" och att den är otestad.

------------------

1010011010 - The binary number of the beast

Medlem sedan juli 2000221 inlägg
#4

Tack för att ni svarade, Vide och sgtpepper.

Det kanske blir bäst med flera tabeller ändå. Men jag är inte så duktig på Access 97 (som jag använder för att skapa databaser, är inte direkt duktig i ASP för den delen heller.)

Hursomhelst,
Det där med Relationsobjekt. Behöver jag göra något speciellt i Access för att det ska fyngera? T ex, Lägga en relation mellan vissa tabeller/kolumner.

Och hur skulle INSERT INTO, se ut med detta "relationsobjekt" i användning?
Jag behöver ju då skriva en till INSERT INTO för "tabellRO" och sedan en för "tabell bil". Eller ordnar det sig automatiskt på något (mystiskt) sätt?

Vilka kolumner skall vara Primary Key (om de inte e Priary Key, vilka datatyper ska de vara då?)
Går det med detta sätt att varje bil's bilder bärjar om från 1. ex:

bild_id    --    bild_id
  1   --   --   --  1
  1   --   --   --  2
  2   --   --   --  1
  3   --   --   --  1

Något sådant, kanske!

Hoppas ni förstår, TACKSAM FÖR SVAR!

[Redigerat av Pudolf den 22 jul 2000]

Medlem sedan dec. 19996 721 inlägg
#5

I BIL-tabellen ska bilid var primärnyckel, i bild-tabellen bildid, och i nyckeltabellen ska båda ihop utgöra en sammansatt nyckel (ctrl-klick i Access tror jag).

Du behöver inte blanda in relationshanteringen i Access.

sgtpeppers kod var bra, men det bör vara WHERE bild_id IN i ställer för WHERE bild_id =

------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB

Medlem sedan juli 2000221 inlägg
#6

tack!

om jag nu har 12 st "textfields"
där jag fyller i URL, till varje bild (det får högst vara 12 bilder per post/artikel). URL*en jag skriver in ser ut såhär:

/sökväg/artikelID-1_bild1.jpg
och nästa bild
/sökväg/artikelID-1_bild2.jpg

och så vidare.

Skulle någon kunna skriva en SQL- INSERT INTO koden till detta bild-exempel som mina frågor handlor om?

För jag har ingen aning om det här med relationsobjekt. Tacksam för svar!

268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)