Avatar billede mrjowns Novice
15. august 2001 - 14:56 Der er 18 kommentarer og
1 løsning

Tjekke post i recordset

Jeg skal tjekke, hvilke rettigheder brugeren har på mit site - derfor har jeg lavet dette:

<%
Dim Conn
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\\\\Nne00\\wwwroot\\database\\site-ka\\suporg.mdb;\"

\' Find Brugerens loginnavn (skal være på formen domæne/bruger)
    User = Request.Servervariables(\"LOGON_USER\")

    tmpArr = SPLIT( User, \"\\\" )
    Side = tmpArr(0)
    User = tmpArr( UBOUND(tmpArr) )
   
    session(\"User\") = lcase(User)

    Rettigheder = 1

    Dim RS, DB
    Set RS = Conn.Execute(\"Select * From Session Where User = \'\" & User & \"\'\")
    If    RS.EOF Then
        Sql = \"INSERT INTO Session (User, Rettigheder, Side)\"
        Sql = Sql & \"VALUES(\'\" & User & \"\',\'\" & Rettigheder & \"\',\'\" & Side & \"\')\"
    Conn.Execute (SQL)
   
\'    Her hiver vi indholdet af databasen ud, sorterer dem efter User
    Sql = \"SELECT * FROM Session ORDER BY User DESC\"
    Set Record = Conn.Execute(Sql)
%>
<html>

<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">
<meta name=\"GENERATOR\" content=\"Microsoft FrontPage 4.0\">
<meta name=\"ProgId\" content=\"FrontPage.Editor.Document\">
<title>New Page 1</title>
</head>

<body>
<table cellspacing=\"0\" width=\"200\" cellpadding=\"0\">
    <tr>
        <td align=\"center\" colspan=\"3\">Resultat fra database:</td>
    </tr>
    <tr>
        <td align=\"center\">User</td>
        <td align=\"center\">Rettigheder</td>
        <td align=\"center\">Domæne</td>
    </tr>

<% Do While Not Record.EOF %>
        <td style=\"font-size: 12px; font-weight: bold\"><% Response.Write Record(\"User\")%></td>
        <td align=\"center\" style=\"font-size: 12px; font-weight: bold\"><% Response.Write Record(\"Rettigheder\")%></td>
        <td align=\"center\" style=\"font-size: 12px; font-weight: bold\"><% Response.Write Record(\"Side\")%></td>
    </tr>
<%
Record.MoveNext
Loop
%>
</table>

</body>
</html>
<%
Else

\'    Her hiver vi indholdet af databasen ud, sorterer dem efter User
    Sql = \"SELECT * FROM Session ORDER BY User DESC\"
    Set Record = Conn.Execute(Sql)
   
    Bruger = \"Du er bruger\"
    Admin = \"Du er admin\"
   
    Dim Ret
    sql = \"select User from tabel\"
    set record=conn.execute(sql)
    If Instr(record(\"User\"), \"(\"\'User\'\")\") > 1 Then Ret = (\"Admin\")\"
    else
        Ret = (\"Bruger\")
    end if

%>
<html>

<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">
<meta name=\"GENERATOR\" content=\"Microsoft FrontPage 4.0\">
<meta name=\"ProgId\" content=\"FrontPage.Editor.Document\">
<title>New Page 1</title>
</head>

<body>
<table cellspacing=\"0\" width=\"200\" cellpadding=\"0\">
    <tr>
        <td align=\"center\" colspan=\"3\">Resultat fra database:</td>
    </tr>
    <tr>
        <td align=\"center\">User</td>
        <td align=\"center\">Rettigheder</td>
        <td align=\"center\">Domæne</td>
    </tr>

<% Do While Not Record.EOF %>
        <td style=\"font-size: 12px; font-weight: bold\"><% Response.Write Record(\"User\")%></td>
        <td align=\"center\" style=\"font-size: 12px; font-weight: bold\"><% Response.Write Record(\"Rettigheder\")%></td>
        <td align=\"center\" style=\"font-size: 12px; font-weight: bold\"><% Response.Write Record(\"Side\")%></td>
    </tr>
    <tr>
        <td align=\"center\" cellspan=\"3\">SÆTTES IND HER</td>

<%
Record.MoveNext
Loop
%>
</table>

</body>
</html>
<%
End if
Conn.Close
Set Conn = Nothing
%>

Der er faktisk først efter \"else\" det bliver interessant! Rettigheder kan have værdien 1 (bruger) og 2 (admin). Hvor ligger fejlen i det jeg har lavet og hvordan udskriver (skærm) jeg resultatet til der hvor jeg har skrevet \"SÆTTES IND HER\"?
Avatar billede madd Nybegynder
15. august 2001 - 15:05 #1
<? If rs(\"rettigheder\") = \"1\" Response.Write Bruger Else Response.Write Admin ?>
Avatar billede madd Nybegynder
15. august 2001 - 15:06 #2
Ahh.. for meget php..

<% If rs(\"rettigheder\") = \"1\" Response.Write Bruger Else Response.Write Admin %>
Avatar billede netsrac Praktikant
15. august 2001 - 15:07 #3
Siger en ting.... Then
Avatar billede madd Nybegynder
15. august 2001 - 15:11 #4
argh fuck.. :)

<% If rs(\"rettigheder\") = \"1\" Then Response.Write Bruger Else Response.Write Admin %>

bland aldrig asp og php sammen :/
Avatar billede mrjowns Novice
15. august 2001 - 15:11 #5
Kmadd > Kan du ikke skære det ud i pap for mig? Hvor tester du på nuværende bruger (User)? Rettigheder er jo konstant i øverste del af if-sætningen. Men hvis brugeren har besøgt siden før bliver rettigheder ikke tjekket - så jeg vil da tro man er nød til at smutte in og finde User og dermed finde de tilhørende rettigheder!

--jowns--
Avatar billede madd Nybegynder
15. august 2001 - 15:12 #6
nåh.. andet jeg har glemt?

undlod da at skrive == og () og ; ...

/Mattias
Avatar billede mrjowns Novice
15. august 2001 - 15:12 #7
Kmadd = madd SORRY :-)
Avatar billede nute Nybegynder
15. august 2001 - 15:24 #8
for det første så går det nok galt i denne linje:

If Instr(record(\"User\"), \"(\"\'User\'\")\") > 1 Then Ret = (\"Admin\")\"
    else
        Ret = (\"Bruger\")
    end if


skal nok være:

If Instr(record(\"User\"), \"User\" ) > 1 Then
  Ret = Bruger
else
  Ret = Admin
end if

deretter bytter du denne linje:

<td align=\"center\" cellspan=\"3\">SÆTTES IND HER</td>

om til

<td align=\"center\" cellspan=\"3\"><%= Ret %></td>

/nute
Avatar billede mrjowns Novice
15. august 2001 - 15:32 #9
Det ser nu sådan ud:

<%
Else

\'    Her hiver vi indholdet af databasen ud, sorterer dem efter User
    Sql = \"SELECT * FROM Session ORDER BY User DESC\"
    Set Record = Conn.Execute(Sql)
   
    Bruger = \"Du er bruger\"
    Admin = \"Du er admin\"
   
    Dim Ret
    sql = \"select User from Session\"
    set record=conn.execute(sql)
    If Instr(record(\"User\"), \"User\" ) > 1 Then
      Ret = Bruger
    else
    Ret = Admin
    end if
%>
------------------
        <td align=\"center\" cellspan=\"3\"><%= Ret %></td>


Jeg får fejlen:

ADODB.Recordset (0x800A0CC1)
Item cannot be found in the collection corresponding to the requested name or ordinal.
Avatar billede nute Nybegynder
15. august 2001 - 15:36 #10
får du ikke referense til et linjenummer, og hva står det i den linje ?
Avatar billede mrjowns Novice
15. august 2001 - 15:39 #11
Nu går det vist helt galt. Linie 103 er denne linie:

        <td align=\"center\" style=\"font-size: 12px; font-weight: bold\"><% Response.Write Record(\"Side\")%></td>

Hvorfor blander den sig nu? Arrrgghhh!
Avatar billede mrjowns Novice
15. august 2001 - 15:41 #12
Undskyld, det var denne:

        <td align=\"center\" style=\"font-size: 12px; font-weight: bold\"><% Response.Write Record(\"Rettigheder\") %></td>
Avatar billede nute Nybegynder
15. august 2001 - 15:42 #13
det er fordi din SQL ser sånn ut:

sql = \"select User from tabel\"
   
du skal også hente ut Rettigheder og Side:

sql = WSELECT User, Rettigheder, Side from tabel\"

/nute
Avatar billede mrjowns Novice
15. august 2001 - 15:46 #14
Hvor skal jeg sætte \" i

sql = WSELECT User, Rettigheder, Side from tabel\"

der mangler vist en?
Avatar billede nute Nybegynder
15. august 2001 - 15:52 #15
ahh...sorry:

sql = WSELECT User, Rettigheder, Side from tabel\"

skal være

sql = \"SELECT User, Rettigheder, Side from tabel\"
Avatar billede mrjowns Novice
15. august 2001 - 15:56 #16
Ok, ingen fejl! Men det sql\'en laver nu - tjekker den ikke om User > 1 - det skal jo være rettigheder for lige netop mig som User! Hvad gør den?
Avatar billede nute Nybegynder
15. august 2001 - 16:00 #17
det er denne if...then som sjekker om du er admin eller ikke ?!

If Instr(record(\"User\"), \"User\" ) > 1 Then
  Ret = Bruger
else
  Ret = Admin
end if

Jeg vet ikke helt hva som skjer her, men du må bare prøve deg frem. Legg inn noen response.write inne i if statementen for å e hva som skjer

If Instr(record(\"User\"), \"User\" ) > 1 Then
  response.write \"if...then er true\"
  Ret = Bruger
else
  response.write \"if...then er false\"
  Ret = Admin
end if

så kan du jo bare rette til som det behøves...

Avatar billede mrjowns Novice
15. august 2001 - 16:03 #18
OK - mange tak for hjælpen! Du har vist fået rimelig mange af mine point idag!!!  :-) hehe!
Avatar billede nute Nybegynder
15. august 2001 - 16:07 #19
det var så litt :) jeg har fått noen points av deg idag, ja, og takk for dem :)
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

IT-JOB