Toon posts:

[ASP] Koppeling tussen twee databases

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo, ik heb een probleem met het koppelen van twee Microsoft Acces-databases.
Het gaat over een registratieformulier. De code van de tekstbalkjes is :

code:
1
<input type="text" name="clip10" value="<%=tmp_clip10%>" size="30">


elke met een eigen name en value.

Ik wil dit echter veranderen in een meerkeuze-box; hier ontstaat het probleem. Deze dropdown-box moet namelijk gegevens tonen uit een andere database. Dit kan door middel van de volgende code :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<select size="1" name="D1" style="font-family: Arial; font-size: 11px; width: 270">
<%

' Declareer de id om een selectie te kunnen maken in de database
Dim id
' Lees de id uit de url en zet hem in de variabele
id = request.querystring("id")

' Als er geen id is opgegeven zet dan de id op 1 
' zodat er geen fout ontstaat bij de sql query
if id = "" then

id = "1"

end if

' Declareer de variabele voor de connectiestring (StringConnectie -> strCon)
Dim strCon

' Zet de connectiestring in de variabele. Hier is dit dus een ODBC connectie.
accessDB = server.mappath("database.mdb")
strCon = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="
strCon = strCon & accessDB & ";"


' Maak een serverobject aan voor de connectie (ObjectConnectie -> objCon)
Dim objCon
Set objCon = Server.CreateObject ( "ADODB.Connection" )

' Open de verbinding met de database. Voor objCon wordt er een 
' verbinding geopend met opgegeven database.
objCon.Open strCon

' De SQL query om de gegevens uit de database te halen.
SQL = "SELECT * FROM Tracks ORDER BY Artiest ASC, Nummer ASC"

' Plaats de gegevens van de SQL Query in de recordset objRec.
set objRec = objCon.execute(SQL)

%>

<% 

' Herhaal het onderstaande totdat het einde van de recordset is bereikt.
' Zet de waarde van de recordset van alle velden tussen de <td></td> tags. 
' Bij elke loop word er een rij van de tabel neergezet.
Do While Not objRec.EOF

%>
<option><%= objRec.Fields("Artiest").Value %> - <%= objRec.Fields("Nummer").Value %></option>
<%

' Ga naar het volgende record om de waarden in een nieuwe rij te laten zien.
objRec.MoveNext
Loop

%>
</select>


Het lukt me om het juist weer te geven, maar nu moet het geheel nog op de juiste manier worden opgeslagen. De dropdown-box geeft de waarden 'Artiest' en 'Nummer' weer.
Nu wil ik dat de bijbehorende waarde 'URL' wordt opgeslagen.

Ik moet dus op een of andere manier de code [value="<%=tmp_clip10%>"] verwerken in de code.

Ik hoop dat iemand kan helpen !

[ Voor 30% gewijzigd door Verwijderd op 31-08-2005 12:32 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:50

Creepy

Tactical Espionage Splatterer

Ik snap niet helemaal wat je bedoelt maar je kan toch prima na het posten van je form de value ophalen van die dropdownbox?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Ik weet niet hoe dat moet ! Ik moet van deze code :

<input type="text" name="clip10" value="<%=tmp_clip10%>" size="30">

een code maken die eruit ziet als :

<option><%= objRec.Fields("Artiest").Value %> - <%= objRec.Fields("Nummer").Value %></option>

In de tweede regel moet ik ergens de value (<%=tmp_clip10%>) toevoegen, neem ik aan. Daarbij moet deze value niet de Artiest + Nummer zijn, maar de code <%= objRec.Fields("URL").Value %>.

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
wat ik begrijp uit je post (correct me if I'm wrong)

Je hebt waardes uit DB1 in een dropdownbox staan, en je wilt afhankelijk van de keuze een waarde opslaan uit DB2 (een url)?

Mischien is het een idee als dat kan om je database ontwerp aan te passen door het url veld ook in DB1 beschikbaar te maken?

anders moet je na het posten van je form een selectie query doen die de juiste Url ophaalt en die weer opslaan.

(ik moet zeggen dat ik het een erg vreemde contructie vind zoals je hem omschrijft dus mischien kun je wat speciefieker zijn, en je code tussen code tags plaatsen, dat leest wat makkelijker)

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


Verwijderd

Topicstarter
Ok. Het kost me wat werk, maar het is mogelijk om de twee databases in elkaar te voegen.
Echter, dan weet ik nog niet wat te doen.

Een oplossing waarmee ik
code:
1
<input type="text" name="clip9" value="<%=tmp_clip9%>" size="30">

kan veranderen in een code als
code:
1
<select size="1" name="D1"><option><%= objRec.Fields("Artiest").Value %> - <%= objRec.Fields("Nummer").Value %></option></select>

waarbij niet de artiest- en nummer-gegevens, maar de bijbehorende URL wordt opgeslagen;
heb ik nog niet gevonden !

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
code:
1
<option value="<%=HIER JE URL%>"><%= objRec.Fields("Artiest").Value %> - <%= objRec.Fields("Nummer").Value %></option></select>


zoiets :?

Ik moet zeggen dat ik er nog niet echt veel van snap wat je wilt.

Als je een url in je db hebt staan kun je hem eruit halen en ergens opslaan net als ieder ander veld...

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


Verwijderd

Topicstarter
Ik zal kort uitleggen waar het voor dient. Misschien weet jij een makkelijkere manier om het gewenste resultaat te bereiken.

Het gaat om de mediaplayer die te bereiken is via www.distract.nl (de lay-out is nog onder constructie...). Je vind hier een database van clips (database 1).

Als je linksboven in de player op 'Uw playlist' klikt, kan je toegang krijgen tot een persoonlijke playlist (lidgegevens staan in database 2). Met gebruikersnaam 'admin' en wachtwoord 'admin' kan je toegang krijgen.

Je ziet nu een pagina waar eerst de accountgegevens staan; dat spreekt voor zich. Daarna staat clip 1 t/m 10. Hier kan de bezoeker URL's van streams ingeven. Als de bezoeker vervolgens op 'save changes' drukt, en daarna op 'uw playlist afspelen', worden alle ingevulde streams achter elkaar afgespeeld.

Het probleem zit hem in het invullen van de URL's van de streams. De gemiddelde gebruiker weet niet hoe deze te vinden, en per slot van rekening heb ik een database met alle clips !

Ik moet dus een manier zoeken om deze twee zaken te koppelen. Het beste naar mijn idee is dat achter Clip 1 t/m 10 een dropdown-box komt met alle clips (uit database 1). De bezoeker kan dan een clip selecteren. Nadat hij geklikt heeft op 'save changes' moet de URL van dat nummer in database 2 worden opgeslagen.

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Ik zou je databases samen voegen en een tabel maken met streams, een tabel met users, en een koppeltabel met streams die bij users horen.(lees eens iets over het modeleren van data(bases))

je kunt dan aan hand van de user de bijbehorende streams ophalen en weergeven.

Ook het opslaan word een stuk makkelijker. Dit is allemaal eenvoudig te bereiken met behulp van asp.

goede naslag werken voor asp zijn o.a www.w3schools.com, www.aspfaqs.com en www.asp101.com

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 02-04 08:55

giMoz

iets met meester...

het gaat idd om de
<option VALUE="<hier dan een waarde>">ARTIES - TITLE</option>

je kan dan in asp gewoon request("selectboxnaam") en je krijgt de value van de option

Of niet natuurlijk...


Verwijderd

Topicstarter
Ik heb de twee databases inmiddels succesvol samengevoegd. Echter, hier is een nieuw probleempje ontstaan; hoewel ik denk dat dit een beginners-probleem is...

De member-pagina gebruikt het volgende SQL-statement :
Sql = "SELECT * FROM tbl_users WHERE ID=" & usr_ID

Ik wil echter op deze pagina niet alleen gebruik maken van de waardes uit tabel 'tbl_users' , maar ook van de waardes uit tabel 'tbl_clips'. Als ik in bovenstaand statement na 'tbl_users' dit toevoeg, werkt hij niet correct omdat de usr_ID niet terugkomt in de lijst met clips.

Kan ik het statement veranderen zodat ik ook de clipgegevens kan veranderen ? Of moet ik mijn database anders modelleren ?

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
maak een koppel tabel met daarin user id en clip id en zo kun je dan clips aan users koppelen en een select op uitvoeren.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 08-04 12:54

Jaspertje

Max & Milo.. lief

Is er een koppeling tussen 'tbl_users' en 'tbl_clips' (staat in 'tbl_clips' ergens een kolom User_ID of visa versa?) of heb je al een koppeltabel. Als dat zo is, dan zou je een Inner Join kunnen gebruiken:

SELECT * FROM tbl_users U INNER JOIN tbl_clips S On U.ID = S.ID WHERE U.ID=" & usr_ID

een kleine aanmerking: je kan je ID veld voor de duidelijkheid misschien beter iets uitgebreider schrijven: UserID en ClipID. Als ze allebei ID heten, kan dat verwarring mee brengen, ook zijn koppelingen dan duidelijker, UserID in tabel 1 is hetzelfde als USERID in tabel 2 (oftewel, ze hebben een relatie met elkaar)
Pagina: 1