06. februar 2010 - 11:53Der er
15 kommentarer og 1 løsning
ASP / ACCES - Udskrive et profilnavn fra en tabel udfra et ID'nr i en anden tabel
Er igang med mit online community med login, postsystem osv. og det virker fint. I min database er alle oprettede bruger tildelt autogenereret 'id' - ved ikke lige helt hvordan jeg skal formulere mit spørgsmål, men.. når folk er logget ind kommer de til siden dinside.asp hvor jeg har lavet en liste hvor de kan se hvilkne besøgende de har haft.. siden udskriver så, eks: "2, 29. januar 2010" Hvor 2 er ID'et på den besøgende. Men istedet for at den udskriver "2" skal den gå ind og finde, i databasen, profilnavnet på ID'et "2".
I databasen har jeg: bruger, mail og visitor. Under visitor har jeg: ID, Visited_af, Visited_til og dato.
Jeg smider lige noget af kildekoden til siden herunder: ---------------------------------------------------
<!--#include file="protect.inc"--> <% ' Databaseforbindelse - husk at angive sti til din database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("database.mdb") Conn.Open DSN
strSQL = "Select * From bruger Where UserID = " & Request.Querystring("UserID") Set rs = Conn.Execute(strSQL)
sSQL="SELECT COUNT(*) as ccount from mail Where TIL = '" & Request.Querystring("UserID") & "' and læst='0'" Set rs2 = Conn.Execute(sSQL)
aSQL="SELECT * from visitor where visited_til = '" & request.QueryString("UserID") & "'" Set rs3 = Conn.Execute(aSQL)
'tSQL = "Select * From visitor Where visited_til = " & Request.Querystring("UserID") 'Set rs = Conn.Execute(tSQL)
Så mit spørgsmål er: Hvordan gør jeg så "Visited_af" istedet for at udskrive ID'et på den besøgende, går ind og finder ud af, eksempvis hvis ID'et = 2, så går den ind under tabellen "Bruger" og tjekker feltet "UserID" og matcher ID'et 2 med UserID 2 og tar navnet fra feltet "profil"
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Det jeg har problemer med er at den udskriver teksten (eks): "2, 29. januar 2010"
Hvor 2-tallet i det her tilfælde er ID'et fra tabellen 'Visitor'. Den skal så istedet for at udskrive 2-tallet gå ind i tabellen 'bruger' og finde id'et 2 der. Og så udfra det hente navnet der står i feltet 'profil'
Jeg havde misforstået dit problem lidt. Men som jeg ser det, bruger du flere SQL-sætninger end nødvendigt. Men det har selvfølgelig ikke betydning for om det virker eller ej.
Det du siger er altså at dette: rs3("visited_af") giver et tal. Jeg skal lige forstå din opbygning. Den tabel der hedder visitor. Der består alle kolonner af tal (og den sidste er dato)? Altså det hele er id'er.
Du skal vel noget lignende:
bSQL = "SELECT * FROM visitor, bruger WHERE visitor.ID = " & request.QueryString("UserID") & " AND visitor.visited_af = bruger.UserID " Set rs5 Conn.Execute(bSQL)
Og så når du skal udskrive det:
<%=rs5("")%> <-- Der skal så stå det felt i bruger, som er brugernavn. <%=rs5("dato")%>
bSQL = "SELECT * FROM visitor, bruger WHERE visitor.visited_til = " & request.QueryString("UserID") & " AND visitor.visited_af = bruger.UserID " Set rs5 Conn.Execute(bSQL)
Og så når du skal udskrive det:
<%=rs5("")%> <-- Der skal så stå det felt i tabellen bruger, som er brugernavn. <%=rs5("dato")%>
Altså det id du har i URL'en er vel id'et på den person, hvis profil du besøger. Derfor skal vi i vores databaseudtræk have den id (UserID) til at være lig med visitor.visited_til.
Dernæst skal vi have de rigtige brugernavne fra tabellen bruger. Det må være, hvor visitor.visitor_af er lig med ID'et fra bruger. I den kode jeg har skrevet ovenover går jeg ud fra, at det er bruger.UserID. Derfor visitor.visitor_af = bruger.UserID.
Når du skal printe navnet til skærmen er det nu bare rs5("") med navnet på den kolonne mellem "" som indeholder brugernavne.
Men kan det passe sætningen skal hedde: ---------------------------------------- bSQL = "SELECT * FROM visitor, bruger WHERE visitor.visited_til = '" & request.QueryString("UserID") & " AND visitor.visited_af = bruger.UserID & " & "'" Set rs5 = Conn.Execute(bSQL)
-----------------------------------------
tallene i databasen er ens, men den laver stadig fejl, så det må være bSQL-sætningen den er gal med?
bSQL = "SELECT * FROM visitor, bruger WHERE visitor.visited_til = "& request.QueryString("UserID") &" AND visitor.visited_af = bruger.UserID " Set rs5 = Conn.Execute(bSQL)
Kan ikke få det til at virke på den måde. Men har fundet på en anden måde at gøre det.
Istedet for at den skal ind og finde oplysninger fra to forskellige tabeller (bruger og mail) Så har jeg lavet et felt i (mail) som hedder 'profilnavn' og der går den så ind og henter profilnavnet istedet. Faktisk meget nemmere synes jeg
Synes godt om
Ny brugerNybegynder
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.