Avatar billede jansangill Nybegynder
14. december 2005 - 01:56 Der er 13 kommentarer og
1 løsning

Huske bruger efter login

Lad os sige jeg har 2 tabeller i access, som indeholder disse felter:

tabel1:
id (primær)
bruger (tekst)
kode (tekst)

tabel2:
id (primær)
bruger (tal)
emne (memo)

Mit problem er, at jeg gerne vil have at efter man er logget ind, skal den huske hvem der er logget ind og hvem det er der har oprettet de forskellige emner.

Hvordan kan man gøre det?
Avatar billede Slettet bruger
14. december 2005 - 06:09 #1
1) Du laver en tabel LogedIn, som inde holder en kolonne til id fra tabel1. Når brugeren logger på skriver du dennes brugerId i LogedIn tabellen. Samtidigt med at du gemmer Id i en session variabel.

2) I din on session_onend sørger du for at slette tal svarende til det Id hvor sessionen ender. Husk hvis du bruger access er der ikke adgang til server.mappath.

Med hensyn til hvem har skrevet hvad, hvis bruger i tabel2 er id fra tabel1 så: select * from tabel1 t1 inner join tabel2 t2 on (t1.id = t2.bruger)

Du kan så sætte noget where og vælge hvilke kolonner du ønsker ud.
Avatar billede fennec Nybegynder
14. december 2005 - 10:15 #2
Det er vel nok bare at gemme brugerID'et i en session når man logger ind.

Dit login tjek:
set rs = conn.execute("select * from tabel1 where bruger='etEller' and kode='andet'")
if rs.eof then
  response.write "Forkert brugernave/password"
else
  session("brugerID") = rs("id")
  response.write "OK"
end if

Du kan så på alle sider hente brugerID'et fra session("brugerID")
Avatar billede jansangill Nybegynder
14. december 2005 - 12:51 #3
jeg har prøvet mig lidt frem, men hver gang jeg prøver at teste det kommer det med denne fejltagelse:

Microsoft JET Database Engine error '80040e07'
Data type mismatch in criteria expression.

Min login er:

'sql
set db = conn.execute("SELECT * FROM bruger WHERE bruger = '"&brugernavn&"' AND kode = '"&kodeord&"'")
%>
<%
'tjekekr om brugernavn og kodeord er i databsen
If Not (db.BOF Or db.Eof) Then
Session("brugerID") = db("id")
session("login") = True
response.Redirect("mainForum.asp")
%>

'min sql til at få denne brugers navn vist er foreløbig sådan:

brugerID = cint(session("brugerID"))

set db = conn.execute("SELECT * FROM (bruger INNER JOIN forum ON bruger.id = forum.bruger) WHERE forum.bruger = '" & brugerID & "'")

'og her vil jeg skrive den ud

<table width="100%">
    <tr>
        <td width="100%"><%=db("bruger")%></td>
        <td width="100%">&nbsp;</td>
    </tr>
</table>


kryptos med hensyn til punkt 1 og 2, kan du udddybe det - mener du at jeg skal lave en tabel i access som hedder loggedIN?
Avatar billede fennec Nybegynder
14. december 2005 - 13:06 #4
forum.bruger er tal så der skal ikke ' omkring:

WHERE forum.bruger = " & brugerID &""
Avatar billede jansangill Nybegynder
14. december 2005 - 13:31 #5
mange tak fennec, det hjalp lidt på det, men har stadig en mærkelig irretrende problem: Mit emne, som også skal loopes bliver godt nok loopet, men den forbliver den første post hele vejen ned. Som vist på denne side:

http://testmig.dk//hih/sangill/project/uForum/topic1.asp

Hvad kan det være - jeg er villig til at afsætte lidt ekstra point hvis du giver mig en hjælpende hånd:S

set db = conn.execute("SELECT * FROM bruger INNER JOIN forum ON bruger.id = forum.bruger")

set rs = conn.execute ("select emne from forum")

%>
</head>
<body>

<% do while not db.eof%>

<table width="100%">
    <tr>
        <td width="100%"><%=db("bruger.bruger")%></td>
        <td width="100%"><%=rs("emne")%></td>
    </tr>
</table>

<%
db.moveNext
loop
%>
Avatar billede jansangill Nybegynder
14. december 2005 - 13:35 #6
hmnn har selv lige fundet en problem, jeg beder jo kun db.eof om at loope, men hvis jeg gøt det sådan:

set db = conn.execute("SELECT * FROM bruger INNER JOIN forum ON bruger.id = forum.bruger")

%>
</head>
<body>

<% do while not db.eof AND rs.eof%>

<table width="100%">
    <tr>
        <td width="100%"><%=db("bruger.bruger")%></td>
        <td width="100%"><%=db("forum.emne")%></td>
    </tr>
</table>

<%
db.moveNext
loop
%>
Avatar billede jansangill Nybegynder
14. december 2005 - 13:38 #7
en gang til:

set db = conn.execute("SELECT * FROM bruger INNER JOIN forum ON bruger.id = forum.bruger")

%>
</head>
<body>

<% do while not db.eof%>

<table width="100%">
    <tr>
        <td width="100%"><%=db("bruger.bruger")%></td>
        <td width="100%"><%=db("forum.emne")%></td>
    </tr>
</table>

<%
db.moveNext
loop
%>

giver den denne fejl:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/hih/sangill/project/uForum/topic1.asp, line 24
Avatar billede fennec Nybegynder
14. december 2005 - 13:41 #8
Hvilken linje er nr 24??
Avatar billede jansangill Nybegynder
14. december 2005 - 13:42 #9
<td width="100%"><%=db("forum.emne")%></td>
Avatar billede jansangill Nybegynder
14. december 2005 - 13:52 #10
fennec jeg har bare lavet en nødløsning - looper bare begge ud, men det burde kunne gøres bare ved den første sql. Hvis du ikke vil bøvle mere med det, så gi mig bare en svar og jeg accepterer.

tak for hjælpen

set db = conn.execute("SELECT * FROM bruger INNER JOIN forum ON bruger.id = forum.bruger")
set rs = conn.execute ("select * from forum")
%>
</head>
<body>

<% do while not db.eof%>
<% do while not rs.eof%>
<table width="100%">
    <tr>
        <td width="100%"><%=db("bruger.bruger")%></td>
        <td width="100%"><%=rs("emne")%></td>
    </tr>
</table>

<%
db.moveNext

rs.movenext
loop
loop
%>
Avatar billede fennec Nybegynder
14. december 2005 - 14:08 #11
Prøv lige med denne:
set db = conn.execute("SELECT b.bruger, f.emne FROM bruger b INNER JOIN forum f ON b.id = f.bruger")
...
<% do while not db.eof%>
<table width="100%">
    <tr>
        <td width="100%"><%=db("bruger")%></td>
        <td width="100%"><%=db("emne")%></td>
    </tr>
</table>
<%
db.moveNext
loop
Avatar billede jansangill Nybegynder
14. december 2005 - 14:14 #12
jeg må jo indrømme at det der er den rigtige løsning til mit problem. Mange tak fennec, drop det som svar
Avatar billede jansangill Nybegynder
14. december 2005 - 14:30 #13
men på denne måde kan man jo ikke gøre dette:
<td width="75%"><a href="emneTopic1.asp?id=<%=rs("id")%>"><%=rs("emne")%></a></td>

men nvm, jeg finder ud af noget.
Avatar billede fennec Nybegynder
14. december 2005 - 14:37 #14
Smid det med på selecten:
set db = conn.execute("SELECT b.bruger, f.emne, f.id FROM bruger b INNER JOIN forum f ON b.id = f.bruger")
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