Avatar billede knutbl Nybegynder
17. juli 2001 - 00:22 Der er 7 kommentarer og
1 løsning

Relasjoner i access og asp

Hei!
Har en access database (concerts.mdb) med tabellen \"allconcerts\". Tabellen inneholder feltene concertdate, location, city, info, links. Så langt fungerer alt vel og bra. Jeg vil i tillegg i utskriften av konsert-tabellen på nettet ha en kollonne med \"reviews\", der brukerne kan legge inn egne anmeldelser av konsertene de har vært på. På websiden skal kollonnen \"reviews\" i konsertoversikten inneholde en link til anmeldelsene KUN dersom det finnes anmeldelser til den aktuelle konserten.
Jeg tror jeg må lage en egen access-tabell til anmeldelsene, men hvordan lager jeg relasjonen fra allconcerts-tabellen til reviews-tabellen, slik at linkene til konsertanmeldelsene vises på samme linje som informasjonen om den aktuelle konserten?
Huff, dette ble veldig innviklet forklart... Håper noen forstår det!

Ha en fin dag!

Hilsen Knut B.
Avatar billede pcal Nybegynder
17. juli 2001 - 04:42 #1
Jeg forstår godt hvad det er du vil. Men hvilken del er det du er i tvivl om? Er det hvordan man sammenkæder primærnøgler med fremmednøgler i databasen eller er det selve udtrækket på din side du er i tvivl om??
Avatar billede knutbl Nybegynder
17. juli 2001 - 07:36 #2
Selve sammenkjedingen av primærnøkler med fremmednøkler tror jeg går greit, men problemet er hvordan jeg viser dette på konsert-siden min i en tabell slik:
dato - by - konsertsted - info - reviews
der de 4 første kolonnene kommer fra allconcerts-accesstabellen og den siste fra reviews-accesstabellen. Review\'ene fra konserten i København 12.juli skal stå på samme linje som konsertinfoen for denne konserten, mens det kun skal stå n/a (not available) ved f.eks. konserten i Oslo, der ingen enda har skrevet reviews.
Kan du eller noen andre hjelpe?
KnB
Avatar billede pcal Nybegynder
17. juli 2001 - 07:47 #3
Hmm..jeg vælger bare at skrive kommentar, da jeg er ganske ny på dette felt og ikke kan skrive en færdigpakket løsning til dig!!
Men skal du ikke bare lave et loop i et loop, hvor nøglerne passer sammen??
Jeg er måske heller ikke så god til at formulere det, men hvis du skriver din e-mail adresse kan jeg sende dig nogle scripts med tilhørende database, hvor du kan se hvordan fremmednøgler kan hentes ind på siden i et innerloop?
Avatar billede nordclc Nybegynder
17. juli 2001 - 08:12 #4
Det nemmeste er faktisk at lave en forespørgsel i Access og så lave en \"SELECT * FROM <FORESPØRGSEL>\".

//Claus
Avatar billede webbe Nybegynder
17. juli 2001 - 08:23 #5
En anden ting man kan gøre er at lave et koncert-id som så bliver primærnøgle i relationsdatabasen!

Dvs. hvis en koncert med Status Quo har id=13, så skal alle anmeldelser af den koncert også have et koncert-id=13!

Dermed kan du med dit link kalde alle anmeldelser med koncert-id=13!
Avatar billede knutbl Nybegynder
09. august 2001 - 07:36 #6
Webbe...
Kan du vise med kode hvordan jeg skal gjøre det du sier?
KnutB
Avatar billede webbe Nybegynder
09. august 2001 - 10:08 #7
Du får fx. vist en koncert.

Derefter har du en knap der hedder \"skriv anmeldelse\" el. lign., som sender dig hen til en side hvor brugeren kan skrive anmeldelsen!
Denne knap er placeret inden for to form-tags <form></form> og inden for disse form-tags laver du et hidden field du kalder for id og giver værdien rs(\"Id\") - denne værdi overfører du dermed til den næste side hvor du derefter kan ligge det i db\'en.

I kode vil det se således ud for den side hvor du viser din koncert:

<%
Option Explicit
%>
<%
Dim Connect, rs

Set Connect = Server.CreateObject(\"ADODB.Connection\")
Connect.Open \"dsn_name\"

Set rs = Server.CreateObject(\"ADODB.Recordset\")
rs.Open \"SELECT * FROM Koncerter WHERE Id=\"&request.querystring(\"id\"), Connect, 1, 3
%>
<html>
<head>
<title></title>
</head>
<body>
<%=rs(\"Titel\")\'Overskriften på din koncert%>
<%=rs(\"Body\")\'Beskrivelsen af din koncert%>
<br>
<form method=\"POST\" action=\"skriv_anmeld.asp\">
<input type=\"HIDDEN\" name=\"id\" value=\"<%=rs(\"Id\")%>\">
<input type=\"SUBMIT\" name=\"submit\" value=\"Skriv anmeldelse\">
</form>
</body>
</html>


Derefter den side hvor du skal gemme dine anmeldelser:

<%
Option Explicit
%>
<html>
<head>
<title></title>
</head>
<body>
Skriv din anmeldelse her:<br>
<form method=\"POST\" action=\"skriv_anmeld.asp?action=save\">
<input type=\"HIDDEN\" name=\"id\" value=\"<%Request.Form(\"id\")%>\">
<textarea name=\"anmeldelse\"></textarea>
<br>
<input type=\"SUBMIT\" name=\"submit\" value=\"Gem\">
</form>
<%
Dim Connect, sql

Set Connect = Server.CreateObject(\"ADODB.Connection\")
Connect.Open \"dsn_name\"

sql = \"INSERT INTO Anmeldelser (Koncert_id, Anmeldelse) VALUES (\"&\"\'\"&request.form(\"id\")&\"\', \'\"&request.form(\"anmeldelse\")&\"\')\"
Connect.Execute(sql)

resonse.redirect(\"koncert_ovs.asp\")
%>
</body>
</html>

Dermed får dine anmeldelser altid det rigtige koncert-id!

Hvis du så vil kalde dem senere (evt. samme med koncerten) skal du blot lave et nyt recordset - fx.:

Set rs1 = Server.CreateObject(\"ADODB.Recordset\")
rs1.Open \"SELECT * FROM Anmeldelser WHERE Koncert_id=\"&request.querystring(\"id\"), Connect, 1, 3
Avatar billede knutbl Nybegynder
09. august 2001 - 19:51 #8
Tusen takk, Webbe!
Genialt svar!

Ha en perfekt dag.

KnutB.
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