Avatar billede doeboy Nybegynder
03. juli 2003 - 16:23 Der er 6 kommentarer og
1 løsning

Fejl i relatition mellem tabeller (forum i access)

jeg har lavet et forum  og et bruger login
hvor forumet Ligger i tabellen Forum    og brugerne ligger i tabellen Members

jeg har så registret brugers  id navn og avatar ved hjælp af sessions  og de skrives så i forum tabellen
men der er jo ikke nogen grund til bruge unødvendig plads i databasen (access) så jeg vil blot registrer bruger id  i forum tabellen  og lave relatition til members tabellen

Mit problem er så at jeg kan kun få den til virke engang
derefter forsvinder brugernes Navn og avatar Bruger id bliver overtaget af andre der skriver i forum

Sådan her skal det se ud (gammel med information i forum Db'en)    http://www26.brinkster.com/doeboydk/visemne.asp?beskedid=213

Her er så min anden hvor jeg laver relation mellem tabellerne med fejl i
http://www26.brinkster.com/doeboydk/visemne1.asp?beskedid=213
Avatar billede doeboy Nybegynder
03. juli 2003 - 16:25 #1
Her er min kode der viser siden

<%
'her laves en session til identificering  af besked til besvarelse

session("Beskedid") = Request("Beskedid")

'her åbnes databasen i forbindelse med Id feltet Beskedid

Set Forum = Server.CreateObject ("ADODB.Recordset")
Forum.Open "SELECT * FROM Beskeder WHERE beskedid="  & Request.QueryString ("Beskedid") , forbindelse

set user = forum.fields("id")
set profil = server.createobject ("Adodb.recordset")
profil.open "select * from members where id = " &  user , forbindelse
%>

<html>
<head>
<title>Online Productions Denmark Forum</title>
</head>
<body bgcolor="black">
<center>
<% ' her vises det originale Indlæg %>

<table border="1"  width="610" bgcolor="white" border="1">

<tr><td colspan="2" bgcolor="#c5c0d1">
<a href="nybesked.asp"><img src="images/new.gif" border="0"></a>&nbsp;<a href="nybesvarelse.asp"><img src="images/reply.gif" border="0"></a></font>
</td></tr>

<tr><td colspan="2" bgcolor="#c5c0d1">
<b><i><% = forum.Fields("BeskedEmne")%> </b></i>
</td></tr>

<tr>
<td width="150" align="left" valign="top">
<font size="2">
<img src="images/<% = profil.Fields("avatar")%>"><br>
<b><% = profil.Fields("name")%></b><br>   
<b>Member#</b> <% = profil.Fields("id")%>
</font>
</td>
   
<td width="500" align="left" valign="top" ><font size='1'>Created on &nbsp; <% = forum.Fields("dato")%></font>
   
<hr style='position:absolute;' width='150'><br><br>
<% = smileys(forum.Fields("Beskedtekst"))%> </td>
</tr>
</table>

<%
' her Lukkes det originale indlæg
forum.close
set forum = Nothing

profil.close
set profil = Nothing

%>

<%
' Svar til det original 
Set forum = Server.CreateObject ("ADODB.Recordset")
forum.Open "SELECT * FROM Beskeder WHERE SvarID =  " & Request.QueryString ("Beskedid") , forbindelse

set user = forum.fields("id")
set profilsv = server.createobject ("Adodb.recordset")
profilsv.open "select * from members where id = " &  user , forbindelse
%>

<%
' sålænge der er poster  kører den tabellen igennem
While NOT forum.EOF
%>

<table border="1"  width="610" bgcolor="white" border="1">
<tr>
<td colspan="2" background="top.jpg">
<br>
</td></tr>

<tr>
<td width="150" align="left" valign="top">
<img src="images/<% = profilsv.Fields("avatar")%>"><br>
<font size="2"><b><% = profilsv.Fields("name")%></b><br>
<b>Member#</b> <% = profilsv.Fields("id")%>
</font>
</td>
<td width="500" align="left" valign="top" ><font size='1'>Created on &nbsp; <% = forum.Fields("dato")%></font>

<hr style='position:absolute;' width='150'><br><br>
<% = smileys(forum.Fields("Beskedtekst"))%> </td>
</tr>
</table>
</table>

<%
' viser næste indlæg

forum.Movenext
wend

profilsv.Movenext
%>
<%
'  her lukkes database forbindelsen

forum.close
set forum = Nothing

profilsv.close
set profilsv = Nothing
%>
Avatar billede doeboy Nybegynder
03. juli 2003 - 17:20 #2
Jeg tror det noget med at jeg ikke får loopet ordentlig
hvis jeg skriver 

forum.Movenext
wend

profilsv.Movenext
wend

får jeg Expected statement Wend 
men uden gør jeg ikke ??
Avatar billede eagleeye Praktikant
03. juli 2003 - 17:29 #3
I hvilken kolonne ligger du userID i forum tabellen ?
Avatar billede eagleeye Praktikant
03. juli 2003 - 17:32 #4
Lige nu ser det ud som user ID'et ligger i kolonne en ID?

set user = forum.fields("id")


Når du hendter ID'et ud skal der ikke set foran user, så linjen skal være

user = forum.fields("id")
Avatar billede eagleeye Praktikant
03. juli 2003 - 17:39 #5
Når du udskriver svarne til de for skellige indløg hendtes ID kun på den første user og den føste user brliver brugt til hver post så dette styk kode skal rettes så den hendter personen ud for hver post.:

Det kunne evt væree en SQL som lavede en JOIN på de to kolonne så du kun laver et udtræk:

SQL = "SELECT * FROM Beskeder INNER JOIN members ON Beskeder.id = members.id WHERE Beskeder.SvarID = " & Request.QueryString ("Beskedid")



<%
' Svar til det original 
Set forum = Server.CreateObject ("ADODB.Recordset")
forum.Open "SELECT * FROM Beskeder WHERE SvarID =  " & Request.QueryString ("Beskedid") , forbindelse

set user = forum.fields("id")
set profilsv = server.createobject ("Adodb.recordset")
profilsv.open "select * from members where id = " &  user , forbindelse
%>

<%
' sålænge der er poster  kører den tabellen igennem
While NOT forum.EOF
%>

<table border="1"  width="610" bgcolor="white" border="1">
<tr>
<td colspan="2" background="top.jpg">
<br>
</td></tr>

<tr>
<td width="150" align="left" valign="top">
<img src="images/<% = profilsv.Fields("avatar")%>"><br>
<font size="2"><b><% = profilsv.Fields("name")%></b><br>
<b>Member#</b> <% = profilsv.Fields("id")%>
</font>
</td>



Hvis du laver det med to recordset så skal koden være som dette hvor den hender fra members for hver besked i forumet:


<%
' Svar til det original 
Set forum = Server.CreateObject ("ADODB.Recordset")
forum.Open "SELECT * FROM Beskeder WHERE SvarID =  " & Request.QueryString ("Beskedid") , forbindelse

%>

<%
' sålænge der er poster  kører den tabellen igennem
set profilsv = server.createobject ("Adodb.recordset")
While NOT forum.EOF

user = forum.fields("id")
profilsv.open "select * from members where id = " &  user , forbindelse

%>

<table border="1"  width="610" bgcolor="white" border="1">
<tr>
<td colspan="2" background="top.jpg">
<br>
</td></tr>

<tr>
<td width="150" align="left" valign="top">
<img src="images/<% = profilsv.Fields("avatar")%>"><br>
<font size="2"><b><% = profilsv.Fields("name")%></b><br>
<b>Member#</b> <% = profilsv.Fields("id")%>
<%
profilsv.Close
%>
</font>
</td>



Så skal du også fjerne linjen, da du ikke skal loop igennem profil tabellen:

profilsv.Movenext
Avatar billede doeboy Nybegynder
03. juli 2003 - 22:39 #6
hey eageleye 

ser ud som om det eneste der bare lige skulle rettes  var
set user  rettet til --->
user = forum.fields("id")
og så blot lukke  profilsv til sidst ?
Avatar billede doeboy Nybegynder
03. juli 2003 - 22:50 #7
Fedt Virker  nu skal jeg blot have tilpasset de andre sider =)
tak for hjælpen
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