Avatar billede marie14 Nybegynder
19. august 2005 - 13:58 Der er 137 kommentarer og
1 løsning

Opdatering af brugeroplysninger i formularen

Jeg har et simpelt script, der gør, at brugeren kan rette sine oplysninger, men som det ser ud nu, skal de indtaste alle oplysninger forfra, hvordan kan jeg sørge for, at formularen husker brugerens oplysninger?
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN
strSQL = "UPDATE bruger SET Name='" & Request.Form("Name")"', o.s.v.....
Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing
response.redirect("xxx.asp")
%>
</body>
Avatar billede softspot Forsker
19. august 2005 - 14:06 #1
Hvis du ikke vil hente data frem og putte i felterne inden de begynder opdateringen, så er du vel nød til at antage, at et tomt felt betyder "ingen opdatering af dette felt". I det tilfælde kan du opbygge din SQL med nogle betingelser...

Noget i stil med dette:

SQLset = ""
SQL = "UPDATE bruger SET "
if request.form("name") <> "" then
  if len(SQLset) > 0 then SQLset = SQLset & ","
  SQLset = SQLset & "Name='" & Request.Form("Name") & "'"
end if
if request.form("address") <> "" then
  if len(SQLset) > 0 then SQLset = SQLset & ","
  SQLset = SQLset & "Address='" & Request.Form("Address") & "'"
end if
SQL = SQL & SQLset & " WHERE id = " & brugerid


Hvor brugerid er id for den bruger der er igang med at opdatere...
Avatar billede marie14 Nybegynder
19. august 2005 - 14:21 #2
Hvordan så hvis man bruger deres password og name til, at genkende brugeren i stedet for ID?
Avatar billede softspot Forsker
19. august 2005 - 14:30 #3
så skal du udskifte den sidste linie med:

SQL = SQL & SQLset & " WHERE password = '" & password & "' AND name like '" & username & "'"

Du skal være opmærksom på at username så ikke må kunne ændres af brugeren, da dette nødvendigvis må fungere som en sammensat nøgle ifht. databasen. Ellers skal du i det mindste gemme de gamle navn i formularen (f.eks. i et skjult felt), så du kan få fat i brugerens oprindelige oplysninger inden disse ændres. Så kunne din where-clause se således ud:

SQL = SQL & SQLset & " WHERE password = '" & password & "' AND name like '" & request.form("originalName") & "'"
Avatar billede marie14 Nybegynder
22. august 2005 - 11:10 #4
Det ødelægger ikke opdateringen, men det fungerer ikke som jeg gerne vil have det til.
Jeg vil gerne have, at felterne er udfyldt med brugerens allerede givne oplysninger, når de får opdaterings formularen frem.
Avatar billede softspot Forsker
22. august 2005 - 12:49 #5
Jeg forstår ikke den første kommentar, men den anden kan håndteres ved at du læser informationerne idet du opbygger skærmbilledet til inddatering af data. Hvis du viser koden til den formular du vil have data i, kan jeg godt hjælpe dig videre...

Jeg skulle mene at dit SQL skal se således ud:
SQL = "SELECT * FROM bruger WHERE username LIKE '" & username & "'"

hvor username indeholder det brugernavn der skal hentes data til.
Avatar billede softspot Forsker
22. august 2005 - 12:49 #6
Hmm... det var vist sådan her:

SQL = "SELECT * FROM bruger WHERE name LIKE '" & username & "'"
Avatar billede marie14 Nybegynder
22. august 2005 - 13:16 #7
Det jeg mener med, at den ikke "ødelægger" noget er, at der skal jo ikke mange forkerte koder til før du ikke kan se siden.
Her er min formular:
<form action="xxx.asp" method="post" onsubmit="validering();return false;">
  <div align="center"><br>
    <table width="528" height="350"  border="1" align="left" bordercolor="#99CCFF" id="edit">
      <tr>
        <td colspan="3" nowrap bordercolor="#FFFFFF"><div align="left"> </div></td>
      </tr>
      <tr>
        <td width="31%" nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td width="22%" bordercolor="#FFFFFF">&nbsp;</td>
        <td width="47%" bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left" class="style1">Username:</div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">Name:</span></div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">Password: </span></div></td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">
          <div align="center" class="style1">
            <div align="left">
              <input name="Username" type="text" id="Username" size="30">
              <br>   
            </div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left">
        <input name="Name" type="text" id="Name" size="30">
        </div></td>
        <td nowrap bordercolor="#FFFFFF">
          <div align="center" class="style1">
            <div align="left">
              <input name="Password" type="password" id="Password" size="20">
            </div>
        </div></td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left"></div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">E-mail:</span></div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"></div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="center" class="style1">
            <div align="left">
              <input name="Email" type="text" id="Email" size="30">
</div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="center" class="style1">
            <div align="left">            </div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF"><input name="submit" type="submit" class="style1" value="Update">
        <input name="Reset" type="reset" class="style1" value="Reset"></td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
    </table>
Avatar billede softspot Forsker
22. august 2005 - 13:45 #8
Ok, men det skjulte felt og udvælgelsen af data inden formular-opbygning, vil jeg tro dette kunne fungere:
<%
' Åben en forbindelse til databasen
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

' BEMÆRK AT SUBMITKNAPPENS NAVN ER ÆNDRET AHT. EVT. JAVASCRIPT
' DER SUBMITTER VIA KODE!
' At knappen hedder submit giver en konflikt mellem funktionen form.submit
' og kontrollen form.submit...
if Request.Form("mySubmit") <> "" then
  ' Så skal der opdateres!
  oUsername = request.form("originalUsername")
  oPassword = request.form("originalPassword")
  SQLset = ""
  SQL = "UPDATE bruger SET "
  SQLset = SQLset & "Name='" & Request.Form("Name") & "'"
  SQLset = SQLset & ", Username='" & Request.Form("Username") & "'"
  SQLset = SQLset & ", Password='" & Request.Form("Password") & "'"
  SQLset = SQLset & ", Email='" & Request.Form("Email") & "'"

  SQL = SQL & SQLset & " WHERE password = '" & oPassword & "' AND oUsername like '" & request.form("originalUsername") & "'"

  conn.Execute SQL
  conn.Close
  set conn = nothing
  Response.Redirect "xxx.asp"
else
  ' Så skal der indlæses brugerdata!
  SQL = "SELECT * FROM bruger WHERE username LIKE '" & username & "'"
  set rs = conn.execute(SQL)
end if
%>
<form action="xxx.asp" method="post" onsubmit="validering();return false;">
  <input type="hidden" name="originalUsername" value="<%=rs("username")%>">
  <input type="hidden" name="originalPassword" value="<%=rs("password")%>">
  <div align="center"><br>
    <table width="528" height="350"  border="1" align="left" bordercolor="#99CCFF" id="edit">
      <tr>
        <td colspan="3" nowrap bordercolor="#FFFFFF"><div align="left"> </div></td>
      </tr>
      <tr>
        <td width="31%" nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td width="22%" bordercolor="#FFFFFF">&nbsp;</td>
        <td width="47%" bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left" class="style1">Username:</div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">Name:</span></div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">Password: </span></div></td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">
          <div align="center" class="style1">
            <div align="left">
              <input name="Username" type="text" id="Username" value="<%=rs("username")%>" size="30">
              <br>   
            </div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left">
        <input name="Name" type="text" id="Name" value="<%=rs("name")%>" size="30">
        </div></td>
        <td nowrap bordercolor="#FFFFFF">
          <div align="center" class="style1">
            <div align="left">
              <input name="Password" type="password" id="Password" value="<%=rs("password")%>" size="20">
            </div>
        </div></td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left"></div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">E-mail:</span></div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"></div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="center" class="style1">
            <div align="left">
              <input name="Email" type="text" id="Email" value="<%=rs("email")%>" size="30">
</div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="center" class="style1">
            <div align="left">            </div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF"><input name="mySubmit" type="submit" class="style1" value="Update">
        <input name="myReset" type="reset" class="style1" value="Reset"></td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
    </table>
  </div>
</form>


Jeg undrer mig lidt over at du på onSubmit ubetinget returnerer false!? Det vil vel stoppe ethvert submit-forsøg...?

Desuden har jeg tilladt mig at ændre lidt på navngivningen af dine knapper, da de vil give problemer hvis du ønsker at benytte javascript til at submitte din for på et eller andet tidspunkt (om ikke for andet så for at bringe denne erfarin videre til et andet tidspunkt, hvor du måtte have problemer med at submitte forms).

Jeg er lidt usikker på om man kan tildele en default-værdi til en input af typen password, men prøv lige om det fungerer...
Avatar billede softspot Forsker
22. august 2005 - 13:46 #9
Note to self: Så kunne det være en super idé at lukke forbindelsen efter at formularen er opbygget! (sorry) Den stump VBScript kan du nok godt selv lige smide på, ikk'?
Avatar billede marie14 Nybegynder
23. august 2005 - 12:24 #10
Jeg kan godt se ideen i det. Du laver en database forbindelse og laver en response.write på hver af felterne, ikke?
Jeg er dog forvirret over de hidden fields. Kan jeg ikke bruge navn og password som hidden fields?
Hvad gør jeg i øvrigt hvis en bruger har oprettet sig 2 gange med to forskellige user names og 2 forskellige passwords?
Hvad angår submit valideringen; der ligger et javascript, der ganske enkelt betinger, at alle felter skal være udfyldt.
Lukningen af databasen, er det ikke det du allerede har skrevet, inden formularen begynder: conn.Execute SQL
  conn.Close
  set conn = nothing
Avatar billede softspot Forsker
23. august 2005 - 12:42 #11
Besvarelse af spm. i nævnte rækkefølge:

1. Jo

2. Hidden fields benyttes til at holde de oprindelige informationer om brugeren, da denne jo kan rette i informationer der benyttes til at finde brugeren med ved opdatering. Eksempel: brugernavn=a, password=aa retter til brugernavn=b, password=bb, når der så skal opdateres søger jeg efter brugernavn=b og password=bb, men det er i værste fald en helt anden bruge og i bedste fald en non-eksistent bruger... og det bliver brugerens informationer jo ikke opdateret af :)

3. Du har vel svært ved at validere om en bruger opretter sig to gange i dit system, du kan opfordre til at de ikke gør det. Hvad angår brugeren, så får denne bare to konti at vedligholde information på... men det er jo brugerens eget problem.

4. Det er kun et problem at kalde din knap submit hvis du i javascript rent faktisk kalder form.submit(). Hvis din valideringsfunktion returnerer en true eller false alt efter om formularen er valid, burde det ikke give problemer. Jeg nævner det bare for at du måske kunne undgå denne slags navnesammenfald (og medfølgende hårmangel) på et senere tidspunkt når du nu laver andre formularer... :)

5. Ja, men forbindelsen bliver kun lukket i tilfælde at opdatering. Den skal også lukkes når brugerens oplysninger aflæses og vises i formularen. Dette skal gøres i bunden af siden, da felterne skal kunne læses fra recordsettet under opbygningen af formularen. Der skal altså være to conn.close i koden på din side. Tilføj dette i bunden:

<%
conn.close
set conn = nothing
%>
Avatar billede marie14 Nybegynder
23. august 2005 - 13:28 #12
Jeg har fået denne fejlmelding:
Description Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
Er du stødt på den før?
Avatar billede softspot Forsker
23. august 2005 - 13:36 #13
Ja, det er fordi forspørgslen ikke har fundet noget resultat men man alligevel begynder at læse værdier fra recordset'et...

Jeg fik ikke initieret username inde jeg brugte den i forspørgslen. Hvor kommer username fra når en bruger skal vedligeholde sine informationer? Hvis det f.eks. er Session, så kunne du tilføje denne stump kode efter else-sætningen:

username = Session("username")
Avatar billede marie14 Nybegynder
23. august 2005 - 13:55 #14
Username ligger i databasen.
Avatar billede softspot Forsker
23. august 2005 - 14:03 #15
Ja, men brugeren skal vel logge på systemet for at rette sine oplysninger og hvordan holder du på den tilstand (jeg ville selv vælge session, men derfor kan du jo godt have valgt en anden fremgangsmåde, f.eks. cookies, querystringparametre eller sådan noget).
Avatar billede marie14 Nybegynder
23. august 2005 - 14:12 #16
Jeg har f.eks en delete side og der logger folk sig på med navn og password, hvorefter den deleter deres oplysninger, kan man ikke lave det på en lign. måde med update?
Avatar billede softspot Forsker
23. august 2005 - 14:14 #17
Jo, men kan du fortælle mig hvordan de sletter deres oplysninger, så kan jeg hjælpe dig med at rette koden til så det også fungerer i update? :)
Avatar billede marie14 Nybegynder
23. august 2005 - 15:55 #18
Ok, her er asp siden:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

strSQL = "DELETE FROM bruger WHERE " &_
"password = '" & request.form("password") & "' " &_
" and name = '" & request.form("name") & "'"
Conn.Execute(strSQL)


Conn.Close
Set Conn = Nothing
response.redirect("xxx.asp")
%>
Og her er form siden:
<script type="text/javascript">

function validering()
  {
  error = 0;

   
  if((document.forms[0].Name.value=='') && (error==0)) 
  {       
    alert('Please write your name!');
    document.forms[0].Name.focus();
    error = 1;       
  }
         
  if((document.forms[0].Password.value=='') && (error==0)) 
  {       
    alert('Please write your password!');
    document.forms[0].Password.focus();
    error = 1;       
  }   
   
 
  if(error == 0)
  document.forms[0].submit();   
  }

</script>
<form action="yyy.asp" method="post" onsubmit="validering();return false;">
 
  <div align="left"><br>
  </div>
  <table width="350" height="296"  border="1" bordercolor="#99CCFF">
    <tr>
      <td colspan="3" bordercolor="#FFFFFF"><div align="left"><span class="style3">GTO Recycle <img src="........gif" width="70" height="77"></span> </div></td>
    </tr>
    <tr>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
    </tr>
    <tr>
      <td bordercolor="#FFFFFF"><span class="style1">Name:</span></td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF"><span class="style1">Password: </span></td>
    </tr>
    <tr>
      <td width="36%" bordercolor="#FFFFFF"><input name="Name" type="text" id="Name"></td>
      <td width="35%" bordercolor="#FFFFFF">&nbsp;</td>
      <td width="29%" bordercolor="#FFFFFF"><input name="Password" type="password" id="Password"></td>
    </tr>
    <tr>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
    </tr>
    <tr>
      <td height="76" bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF"><input name="submit" type="submit" class="style1" value="Delete "></td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
    </tr>
  </table>
  <p>&nbsp;    </p>
  <p>&nbsp;        </p>
</form>
Avatar billede softspot Forsker
23. august 2005 - 16:41 #19
Udfordringen med opdateringsformularen er at man ikke ved hvilken bruger der skal opdateres inden brugeren har indtastet sine brugeroplysninger og man derfor ikke kan indlæse oplysningerne til visning for redigering.

Derfor bliver du nok nød til at lægge et ekstra trin ind i processen, hvor brugeren indtaster brugernavn og adgangskode inden opdateringsskærmbilledet kan vises. Det bør ikke være nok bare at indtaste brugernavn, da man så kan se andres oplysninger hvis man alene kender deres brugernavn, hvilket, du nok er enig med mig i, ikke er hensigtsmæssigt. Er dette en acceptabel løsning?
Avatar billede marie14 Nybegynder
23. august 2005 - 17:03 #20
Ja, det er det. Jeg har selv haft tanken, men vidste ikke rigtigt hvordan jeg skulle få det til, at hænge sammen. :-)
Avatar billede marie14 Nybegynder
23. august 2005 - 17:05 #21
Kan vi ikke bruge navn og password i stedet?
Avatar billede softspot Forsker
23. august 2005 - 18:21 #22
Hmm... jeg vender lige tilbage senere på aftenen, for jeg har lige nogle arrangementer som jeg skal tage hånd om. Håber ikke det haster så meget... at vi ikke kan nå det i aften :)
Avatar billede marie14 Nybegynder
23. august 2005 - 19:08 #23
Nej, det er helt ok. :-)
Avatar billede softspot Forsker
23. august 2005 - 22:32 #24
Det vil som udgangspunkt ikke ændre noget at bruge andre data, for vi skal stadig have fat i den bruger det drejer sig om inden vi kan hente informationer om denne. Samtidig skal sikkerheden omkring ændring af data tages med i overvejelserne, så du ikke har brugere der pludselig tager navnforandring uden de selv ved det... :)

Jeg ville helt klart anbefale en form for login eller præautorisation forud for ændring af data.
Avatar billede marie14 Nybegynder
24. august 2005 - 08:47 #25
Kan vi ikke tage udgangspunkt i den login side folk bruger til at delete?
Avatar billede softspot Forsker
24. august 2005 - 09:12 #26
Jo, så vil jeg tro det er noget i stil med dette (til senere reference så lad os kalde den login.asp):

<%
if Request.Form("Login") <> "" then
  Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
  Conn.Open DSN

  strSQL = "SELECT name FROM bruger WHERE " &_
"password = '" & request.form("password") & "' " &_
" AND name LIKE '" & request.form("name") & "'"
  set rs = Conn.Execute(strSQL)
  if not rs.eof then
    session("username") = rs("name")
  end if
  Conn.Close
  Set Conn = Nothing
  ' så skulle vi gerne redirecte til den side der oprindelig blev forespurgt
  response.redirect Request.ServerVariables("SCRIPT_NAME")
end if
%>
Og her er form siden:

<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post" onsubmit="validering();return false;">
 
  <div align="left"><br>
  </div>
  <table width="350" height="296"  border="1" bordercolor="#99CCFF">
    <tr>
      <td colspan="3" bordercolor="#FFFFFF"><div align="left"><span class="style3">GTO Recycle <img src="........gif" width="70" height="77"></span> </div></td>
    </tr>
    <tr>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
    </tr>
    <tr>
      <td bordercolor="#FFFFFF"><span class="style1">Name:</span></td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF"><span class="style1">Password: </span></td>
    </tr>
    <tr>
      <td width="36%" bordercolor="#FFFFFF"><input name="Name" type="text" id="Name"></td>
      <td width="35%" bordercolor="#FFFFFF">&nbsp;</td>
      <td width="29%" bordercolor="#FFFFFF"><input name="Password" type="password" id="Password"></td>
    </tr>
    <tr>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
    </tr>
    <tr>
      <td height="76" bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF"><input name="Login" type="submit" class="style1" value="Login"></td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
    </tr>
  </table>
  <p>&nbsp;    </p>
  <p>&nbsp;        </p>
</form>


xxx.asp kommer så til at se nogenlunde således ud:
<%
' Hvis brugeren ikke er logget på, så smide denne over på login-siden...
if isEmpty(session("username")) or len(cstr(session("username"))) = 0 then
  Server.Transfer "login.asp"
end if

' Åben en forbindelse til databasen
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

' BEMÆRK AT SUBMITKNAPPENS NAVN ER ÆNDRET AHT. EVT. JAVASCRIPT
' DER SUBMITTER VIA KODE!
' At knappen hedder submit giver en konflikt mellem funktionen form.submit
' og kontrollen form.submit...
if Request.Form("mySubmit") <> "" then
  ' Så skal der opdateres!
  SQLset = ""
  SQL = "UPDATE bruger SET "
  SQLset = SQLset & "Name='" & Request.Form("Name") & "'"
  SQLset = SQLset & ", Username='" & Request.Form("Username") & "'"
  SQLset = SQLset & ", Password='" & Request.Form("Password") & "'"
  SQLset = SQLset & ", Email='" & Request.Form("Email") & "'"

  SQL = SQL & SQLset & " WHERE password = '" & Request.Form("Password") & "' AND username like '" & request.form("username") & "'"

  conn.Execute SQL
  conn.Close
  set conn = nothing
  Response.Redirect "xxx.asp"
else
  ' Så skal der indlæses brugerdata!
  username = session("username")
  SQL = "SELECT * FROM bruger WHERE username LIKE '" & username & "'"
  set rs = conn.execute(SQL)
end if
%>
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post" onsubmit="validering();return false;">
  <div align="center"><br>
    <table width="528" height="350"  border="1" align="left" bordercolor="#99CCFF" id="edit">
      <tr>
        <td colspan="3" nowrap bordercolor="#FFFFFF"><div align="left"> </div></td>
      </tr>
      <tr>
        <td width="31%" nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td width="22%" bordercolor="#FFFFFF">&nbsp;</td>
        <td width="47%" bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left" class="style1">Username:</div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">Name:</span></div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">Password: </span></div></td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">
          <div align="center" class="style1">
            <div align="left">
              <input name="Username" type="text" id="Username" value="<%=rs("username")%>" size="30">
              <br>   
            </div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left">
        <input name="Name" type="text" id="Name" value="<%=rs("name")%>" size="30">
        </div></td>
        <td nowrap bordercolor="#FFFFFF">
          <div align="center" class="style1">
            <div align="left">
              <input name="Password" type="password" id="Password" value="<%=rs("password")%>" size="20">
            </div>
        </div></td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left"></div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">E-mail:</span></div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"></div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="center" class="style1">
            <div align="left">
              <input name="Email" type="text" id="Email" value="<%=rs("email")%>" size="30">
</div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="center" class="style1">
            <div align="left">            </div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF"><input name="mySubmit" type="submit" class="style1" value="Update">
        <input name="myReset" type="reset" class="style1" value="Reset"></td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
    </table>
  </div>
</form>
<%
Conn.Close
set Conn = nothing
%>
Avatar billede softspot Forsker
24. august 2005 - 09:15 #27
For at holde konsistens ifht. det check der laves på opdateringsformularen, kunne det godt være vi skulle bruge username i loginform check... :/

<%
if Request.Form("Login") <> "" then
  Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
  Conn.Open DSN

  strSQL = "SELECT username FROM bruger WHERE " &_
"password = '" & request.form("password") & "' " &_
" AND username LIKE '" & request.form("name") & "'"
  set rs = Conn.Execute(strSQL)
  if not rs.eof then
    session("username") = rs("username")
  end if
  Conn.Close
  Set Conn = Nothing
  ' så skulle vi gerne redirecte til den side der oprindelig blev forespurgt
  response.redirect Request.ServerVariables("SCRIPT_NAME")
end if
%>
Avatar billede marie14 Nybegynder
24. august 2005 - 10:38 #28
Tak for det. Jeg skal lige gennemprøve det og vender tilbage senere. Håber du stadig er her?
Avatar billede marie14 Nybegynder
24. august 2005 - 11:04 #29
Du laver to sider, ikke?
En login.asp og en xxx.asp
Men hvis du bruger username skal der vel også være et felt på login siden der hedder username.
Avatar billede softspot Forsker
24. august 2005 - 11:24 #30
Jo, det er korrekt. Kan du selv rette det med name kontra username?
Avatar billede softspot Forsker
24. august 2005 - 11:24 #31
Om ikke andet så er jeg her i eftermiddag (sporadisk i værste fald :))...
Avatar billede marie14 Nybegynder
24. august 2005 - 14:26 #32
Den bliver ved med, at sende mig tilbage til login siden.
Avatar billede softspot Forsker
24. august 2005 - 15:22 #33
Prøv lige at sætte disse to linier ind lige før Response.Redirect

Response.Write(Request.ServerVariables("SCRIPT_NAME"))
Response.End

Hvad skriver den så?
Avatar billede marie14 Nybegynder
24. august 2005 - 15:30 #34
Hvis jeg skriver sådan her:
Response.Write(Request.ServerVariables("SCRIPT_NAME"))
End if
Skriver den stivejen til sig selv
Avatar billede softspot Forsker
24. august 2005 - 15:34 #35
Dvs. login.asp?

Det er fordi jeg lavede server.transfer og forventede egentlig at den skrev adressen på den side som men oprindelig forespurgte (f.eks. xxx.asp).
Avatar billede marie14 Nybegynder
24. august 2005 - 15:36 #36
Ja login.asp
Avatar billede softspot Forsker
24. august 2005 - 15:40 #37
Øjeblik... tester lige noget...
Avatar billede softspot Forsker
24. august 2005 - 15:50 #38
Spøjst! Jeg synes det fungerer godt nok i min testbænk...

Kan du ikke lige prøve at paste den kode du bruger herind (både login.asp og xxx.asp)?
Avatar billede marie14 Nybegynder
24. august 2005 - 15:55 #39
<%
if Request.Form("Login") <> "" then
  Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
  Conn.Open DSN

  strSQL = "SELECT name FROM bruger WHERE " &_
"password = '" & request.form("password") & "' " &_
" AND name LIKE '" & request.form("name") & "'"
  set rs = Conn.Execute(strSQL)
  if not rs.eof then
    session("username") = rs("name")
  end if
  Conn.Close
  Set Conn = Nothing
  ' så skulle vi gerne redirecte til den side der oprindelig blev forespurgt
  response.redirect Request.ServerVariables("SCRIPT_NAME")
end if
%>
Og her er form siden:

<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post" onsubmit="validering();return false;">
 
  <div align="left"><br>
  </div>
  <table width="350" height="296"  border="1" bordercolor="#99CCFF">
    <tr>
      <td colspan="3" bordercolor="#FFFFFF"><div align="left"><span class="style3">GTO Recycle <img src="........gif" width="70" height="77"></span> </div></td>
    </tr>
    <tr>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
    </tr>
    <tr>
      <td bordercolor="#FFFFFF"><span class="style1">Name:</span></td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF"><span class="style1">Password: </span></td>
    </tr>
    <tr>
      <td width="36%" bordercolor="#FFFFFF"><input name="Name" type="text" id="Name"></td>
      <td width="35%" bordercolor="#FFFFFF">&nbsp;</td>
      <td width="29%" bordercolor="#FFFFFF"><input name="Password" type="password" id="Password"></td>
    </tr>
    <tr>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
    </tr>
    <tr>
      <td height="76" bordercolor="#FFFFFF">&nbsp;</td>
      <td bordercolor="#FFFFFF"><input name="Login" type="submit" class="style1" value="Login"></td>
      <td bordercolor="#FFFFFF">&nbsp;</td>
    </tr>
  </table>
  <p>&nbsp;    </p>
  <p>&nbsp;        </p>
</form>


xxx.asp kommer så til at se nogenlunde således ud:
<%
' Hvis brugeren ikke er logget på, så smide denne over på login-siden...
if isEmpty(session("username")) or len(cstr(session("username"))) = 0 then
  Server.Transfer "login.asp"
end if

' Åben en forbindelse til databasen
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

' BEMÆRK AT SUBMITKNAPPENS NAVN ER ÆNDRET AHT. EVT. JAVASCRIPT
' DER SUBMITTER VIA KODE!
' At knappen hedder submit giver en konflikt mellem funktionen form.submit
' og kontrollen form.submit...
if Request.Form("mySubmit") <> "" then
  ' Så skal der opdateres!
  SQLset = ""
  SQL = "UPDATE bruger SET "
  SQLset = SQLset & "Name='" & Request.Form("Name") & "'"
  SQLset = SQLset & ", Username='" & Request.Form("Username") & "'"
  SQLset = SQLset & ", Password='" & Request.Form("Password") & "'"
  SQLset = SQLset & ", Email='" & Request.Form("Email") & "'"

  SQL = SQL & SQLset & " WHERE password = '" & Request.Form("Password") & "' AND username like '" & request.form("username") & "'"

  conn.Execute SQL
  conn.Close
  set conn = nothing
  Response.Redirect "xxx.asp"
else
  ' Så skal der indlæses brugerdata!
  username = session("username")
  SQL = "SELECT * FROM bruger WHERE username LIKE '" & username & "'"
  set rs = conn.execute(SQL)
end if
%>
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post" onsubmit="validering();return false;">
  <div align="center"><br>
    <table width="528" height="350"  border="1" align="left" bordercolor="#99CCFF" id="edit">
      <tr>
        <td colspan="3" nowrap bordercolor="#FFFFFF"><div align="left"> </div></td>
      </tr>
      <tr>
        <td width="31%" nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td width="22%" bordercolor="#FFFFFF">&nbsp;</td>
        <td width="47%" bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left" class="style1">Username:</div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">Name:</span></div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">Password: </span></div></td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">
          <div align="center" class="style1">
            <div align="left">
              <input name="Username" type="text" id="Username" value="<%=rs("username")%>" size="30">
              <br>   
            </div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left">
        <input name="Name" type="text" id="Name" value="<%=rs("name")%>" size="30">
        </div></td>
        <td nowrap bordercolor="#FFFFFF">
          <div align="center" class="style1">
            <div align="left">
              <input name="Password" type="password" id="Password" value="<%=rs("password")%>" size="20">
            </div>
        </div></td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left"></div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="left"><span class="style1">E-mail:</span></div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="left"></div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF"><div align="center" class="style1">
            <div align="left">
              <input name="Email" type="text" id="Email" value="<%=rs("email")%>" size="30">
</div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF"><div align="center" class="style1">
            <div align="left">            </div>
        </div></td>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
      <tr>
        <td nowrap bordercolor="#FFFFFF">&nbsp;</td>
        <td bordercolor="#FFFFFF"><input name="mySubmit" type="submit" class="style1" value="Update">
        <input name="myReset" type="reset" class="style1" value="Reset"></td>
        <td bordercolor="#FFFFFF">&nbsp;</td>
      </tr>
    </table>
  </div>
</form>
<%
Conn.Close
set Conn = nothing
%>
Avatar billede softspot Forsker
24. august 2005 - 16:02 #40
Eehm... har du bare taget det jeg postede 24/08-2005 09:12:08 og kopieret ned i et nyt post, for jeg synes ikke det bærer præg af at være ændret iht. de mellemliggende posts...?

Hvis du er lidt seriøs og gerne vil have en løsning, så forventer jeg også at du prøver at deltage lidt aktivt. Det er lidt vigtigt at jeg ser den kode DER RENT FAKTISK KØRER og som du får fejlene i, eller kan jeg jo sidder her til jul - og det har jeg ikke lyst til.
Avatar billede softspot Forsker
24. august 2005 - 16:42 #41
Du er i øvrigt opmærksom på at du skal starte opdatering ved at klade xxx.asp og ikke login.asp (du skal rent faktisk ikke kalde login.asp manuelt, den bliver kaldt efter behov)...?
Avatar billede marie14 Nybegynder
25. august 2005 - 09:09 #42
Jeg er meget seriøs og jeg har prøvet de forskellige forslag du har givet mig. Jeg kunne dog godt tænke mig, at det var mere enkelt og tættere på det jeg har i forvejen. Som du kan se, kan jeg lidt asp, men jeg er bestemt ikke en haj endnu, desværre.. :-(
Avatar billede softspot Forsker
25. august 2005 - 11:49 #43
Det jeg synes gør teknikken lidt besværlig er at du er nød til at identificere brugeren inden du kan læse deres informationer fra databasen og dem har vi ikke fordi brugeren ikke logger sig på dit system. Det betyder at brugeren er nød til at identificere sig overfor systemet hver gang vedkommende skal lave ændringer i sin profil.

Jeg tror jeg har givet udtryk for det i mine tidligere posts, men jeg vil mene at et login kan gøre teknikken omkring dine ændring af brugeroplysninger lettere at håndtere rent teknisk og give brugeren en bedre oplevelse af "flow" i dit system.

Jeg vil gerne hjælpe med at bygge et skelet op som du så kan tilføje dit layout bagefter. Det er min overbevisning at det bliver lettere at gennemskue koden og funktionaliteten hvis der ikke er så meget "layoutkode" indblandet i det. Hvad synes du om den plan?
Avatar billede softspot Forsker
25. august 2005 - 11:51 #44
I forlængelse af det sidste svar, så skal du først og fremmest fortælle mig hvad det er du rent faktisk vil have og hvad det skal bruges til...
Avatar billede marie14 Nybegynder
25. august 2005 - 12:05 #45
Lad os prøve din plan.
Det jeg forestiller mig er:
Man har et opdate link på forsiden
det fører en til login siden hvorman skal logge sig op med Navn og Password,
derefter kommer man ind på en side hvor alle ens oplysninger er hentet frem og man kan redigere i dem, når man har submittet de opdaterede oplysninger bliver man redirected til forsiden.
Avatar billede marie14 Nybegynder
25. august 2005 - 12:07 #46
logge sig på, mener jeg selvfølelig...:-)
Avatar billede softspot Forsker
25. august 2005 - 12:10 #47
Kan du, om databasen, også oplyse mig om tabelnavne og feltnavne i de relevante tabeller (der er "bruger", men er der andre jeg skal vide noget om). Altså gerne en feltlists og datatype på de enkelte felter.
Avatar billede marie14 Nybegynder
25. august 2005 - 12:20 #48
De hedder Username, Name, Password, Email. Datatypen er text og selvfølgelig Autonumber på ID. Måske skal du også have det med, at jeg gerne vil have en dropdown liste og et skrivefelt i formularen, men dem har jeg også som text data i databasen. Lad os kalde dropdown listen for Kategori og skrivefeltet for beskrivelse. Vi kan jo kalde felterne det samme i databasen. Lyder det ok?
Avatar billede softspot Forsker
25. august 2005 - 12:30 #49
Ja, det lyder ok. Jeg studser blot lidt over skrivefeltet, skal det ikke være et notatfelt (kan holde mere data end et tekstfelt)?
Avatar billede marie14 Nybegynder
25. august 2005 - 12:32 #50
Nej, lad os holde os til et textfield.
Avatar billede softspot Forsker
25. august 2005 - 12:34 #51
ok
Avatar billede softspot Forsker
25. august 2005 - 13:06 #52
Vi skal blot være er enige om flg.:

1. Username og Password er det som brugeren identificerer sig med overfor systemet, hvor Username typisk er en kort udgave af Name, f.eks. initialer el.lign.

2. Name og Email er bare, overfor systemet, beskrivende tekster der gør at brugeren kan genkende sig selv.

3. Kategori skal bare indeholde den værdi som brugeren vælger i dropdown-listen, der er altså ikke nogen referencer til andre tabeller involveret i dette.

4. Beskrivelse er et fritekstfelt som aldrig bliver længere end 255 karakterer.

Er det korrekt opfattet (jeg ved det omstændigt, men bare for at være sikker inden vi kommer for langt)?
Avatar billede marie14 Nybegynder
25. august 2005 - 13:34 #53
1. +2.Brugeren identificerer sig med Navn og Password. Username kunne evt. bruges til en velkomst hilsen, men for, at gøre det enkelt skulle vi måske bare droppe Username?
3. Det er korrekt
4. Det skulle ikke være nødvendigt med mere end 255 karakterer.
Jeg er bare glad for, du gider at hjælpe.
Avatar billede softspot Forsker
25. august 2005 - 13:47 #54
Jeg har ikke noget imod at hjælpe - bare jeg føler det giver mening for dig :)

Hvad angår 1+2, så kan vi godt aftale at Name og Password er login informationer, men typisk er det termerne Username og Password der bliver brugt til det. Jeg tror også det var årsagen til at vi har snakket en smule forbi hinanden hidtil. Jeg synes det er fint at have et Fullname som man kan bruge i grænsefladen, når man skal skrive personlige beskeder til brugerne, som sagt skal vi bare være enige om terminologien :)
Avatar billede marie14 Nybegynder
25. august 2005 - 13:59 #55
Jeg tror, du har ret i, at det er derfor vi har snakket forbi hinanden. :-)
Vi holder os til Navn og Password.
Avatar billede softspot Forsker
25. august 2005 - 22:29 #56
OK... er du der stadig, for jeg har en håndfuld asp-filer til dig :)
Avatar billede softspot Forsker
25. august 2005 - 22:39 #57
Kopier de enkelte kodestumper ud i hver sin fil og læg dem i samme folder på din webserver. Ret stien til databasen i setupConn.asp så den passer til din og prøv at køre det...


forside.asp:
------------

<%@ language="vbscript" codepage="1252" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>forside</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  </head>
  <body>
   
    <p>Dette er forsiden hvor man kan logge på med sine brugeroplysninger og <a href="userinfo.asp">ændre sin profil</a>.</p>   

  </body>
</html>


så login.asp:
-------------

<%@ language="vbscript" codepage="1252" %>
<%
Server.Execute "setupConn.asp"

if Request.Form("Login") <> "" then
    strConn = Session.Contents("ConnectionString")
    strSQL = "SELECT ID FROM bruger WHERE Navn LIKE '" & Replace(cstr(Request.Form("Navn")),"'","''") & "' AND Password = '" & Replace(cstr(Request.Form("Password")),"'","''") & "'"
    set objConn = Server.CreateObject("ADODB.Connection")
   
    ' Forbind til databasen
    objConn.Open strConn
   
    ' Find brugeren
    set objRs = objConn.Execute(strSQL)
   
    ' Hvis der var et resultat, så findes brugeren og login informationerne var korrekte!
    if not objRs.EOF then
        ' Læg brugerens ID i en session-variabel så vi ved hver der er logget på
        Session.Contents("userid") = cstr(objRs("ID"))
    end if
   
    ' Oprydning!
    objRs.Close
    objConn.Close
    set objRs = nothing
    set objConn = nothing
   
    ' Naviger til den side som oprindelig blev forespurgt
    Response.Redirect Request.ServerVariables("SCRIPT_NAME")
end if
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>Login</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  </head>
  <body>
   
    <form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post">
        Brugernavn: <input type="text" name="Navn"><br>
        Adgangskode: <input type="password" name="Password"><br>
        <input type="submit" name="Login" value="Log på">
    </form>

  </body>
</html>


og userinfo.asp:
----------------

<%@ language="vbscript" codepage="1252" %>
<%
if IsEmpty(Session.Contents("userid")) OR cstr(Session.Contents("userid") & "") = "" then
    Server.Transfer "login.asp"
end if

Server.Execute "setupConn.asp"

strConn = Session.Contents("ConnectionString")
set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn

if cstr(Request.Form("Opdater")) <> "" then
    SQLBeskrivelse = Replace(Request.Form("Beskrivelse"),"'","''")
    if len(SQLBeskrivelse) > 255 then
        SQLBeskrivelse = left(SQLBeskrivelse, 255)
    end if
    ' Så skal vi igang med at opdatere brugerens data
    strSQL = "UPDATE bruger SET"
    strSQL = strSQL & " Navn='" & Replace(Request.Form("Navn"),"'","''") & "'"
    strSQL = strSQL & ", [Password]='" & Replace(Request.Form("Password"),"'","''") & "'"
    strSQL = strSQL & ", Email='" & Replace(Request.Form("Email"),"'","''") & "'"
    strSQL = strSQL & ", Kategori='" & Request.Form("Kategori") & "'"
    strSQL = strSQL & ", Beskrivelse='" & SQLBeskrivelse & "'"
    strSQL = strSQL & " WHERE ID=" & Session.Contents("userid")

    objConn.Execute strSQL

    objConn.Close
    set objConn = nothing
    Response.Redirect "forside.asp"
end if

if cstr(Request.Form("Slet")) <> "" then
    strSQL = "DELETE FROM bruger WHERE ID=" & Session.Contents("userid")
    objConn.Execute strSQL

    objConn.Close
    set objConn = nothing
    Session.Contents("userid") = Empty
    Response.Redirect "deluser.asp"
end if

if cstr(Request.Form("Logaf")) <> "" then
    Session.Contents("userid") = Empty
    Session.Abandon
    Response.Redirect "forside.asp"
end if

' Sæt SQL til indlæsning af brugeroplysninger op
strSQL = "SELECT * FROM bruger WHERE ID = " & Session.Contents("userid")

' Læs oplysningerne
set objRs = objConn.Execute(strSQL)

' Gem oplysningerne i lokale variable til brug i opbygningen af HTML
if not objRs.EOF then
    Navn = cstr(objRs("Navn") & "")
    Password = cstr(objRs("Password") & "")
    Email = cstr(objRs("Email") & "")
    Kategori = cstr(objRs("Kategori") & "")
    Beskrivelse = cstr(objRs("Beskrivelse") & "")
end if

' Oprydning!
objRs.close
objConn.Close
set objRs = nothing
set objConn = nothing

' ===================================================================
' KATEGORIER:
' I dette eksempel benyttes et array af kategorier og kategorinøgler,
' men i et virkeligheden burde dette måske vedligeholdes i databasen
' i sin egen tabel. Princippet med at opbygge OPTIONS-listen kan
' stadig benyttes selvom man skulle vælge at lægge værdierne i databasen.
' ===================================================================
' Opsæt kategorier med tekst hhv. nøgle skiftevis, altså formatet er:
' tekst, nøgle, tekst, nøgle... osv.
' =============== !!! VIGTIGT !!! ===================================
' Det er vigtigt at der altid er en nøgle (gerne en tom streng) til hver
' tekst, da indekseringen ellers går itu.
' =============== !!! VIGTIGT !!! ===================================
strKategorier = "[Vælg kategori],,Kategori 1,Kategori 1,Kategori 2,Kategori 2,Kategori 3,Kategori 3,Kategori 4,Kategori 4"
' Split strengen op så kategorierne kommer over i et array med tekst og nøgle skiftevis
arrKategorier = Split(strKategorier, ",")

' Opbyg HTML-streng som danner OPTIONS med kategorierne
Kategorier = vbCrLf
for idx = 0 to ((ubound(arrKategorier) + 1) / 2) - 1
    strKategoriText = arrKategorier(idx * 2)
    strKategoriValue = arrKategorier(idx * 2 + 1)
    Kategorier = Kategorier & "<option value=""" & strKategoriValue & """"
    if strKategoriValue = Kategori then
        Kategorier = Kategorier & " SELECTED"
    end if
    Kategorier = Kategorier & ">" & strKategoriText & vbCrLf
next

' Så kan opbygningen af formularen begynde!
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>Vedligehold brugeroplysninger</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
        .label { float:left; width:120px; }
    </style>
  </head>
  <body>
   
    <form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post">
        <span class="label">Brugernavn:</span><input type="text" maxlength="255" name="Navn" value="<%=Navn%>"><br>
        <span class="label">Adgangskode:</span><input type="password" maxlength=50" name="Password" value="<%=Password%>"><br>
        <span class="label">Email:</span><input type="text" maxlength=255" name="Email" value="<%=Email%>"><br>
        <span class="label">Kategori:</span><select name="Kategori"><%=Kategorier%></select><br>
        <span class="label">Beskrivelse:</span><textarea name="Beskrivelse" cols="50" rows="5"><%=Beskrivelse%></textarea><br>
        <span class="label">&nbsp;</span>
            <input type="submit" name="Opdater" value="Opdater">
            <input type="submit" name="Slet" value="Slet">
            <input type="submit" name="Logaf" value="Log af"><br><br>
    </form>

  </body>
</html>


deluser.asp:
------------

<%@ language="vbscript" codepage="1252" %>
<%
if IsEmpty(Session.Contents("userid")) OR cstr(Session.Contents("userid") & "") = "" then
    Server.Transfer "login.asp"
end if
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>Brugeren er slettet</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  </head>
  <body>
   
    <p>Din brugerprofil er nu slettet fra vores database.</p>   
    <p>Hvis du ønsker at oprette en ny, kan du gøre det på siden <a href="#">registrering af ny bruger</a>.</p>

  </body>
</html>

og sidst men ikke mindst setupConn.asp:
---------------------------------------

<%
function MapPathX(path)
  if left(path,1) = "/" then
    root = Server.MapPath("/")
    path = right(path,len(path)-1)
  else
    root = Server.MapPath(".")
  end if
 
  vfolders = split(path, "/")
 
  for each folder in vfolders
    if folder = ".." then
      root = left(root, instrrev(root, "\") - 1)
    else
      root = root & "\" & folder
    end if
  next
  MapPathX = root
end function

' Test om MapPath kan gå udenfor roden af webserveren
if Server.MapPath("/") = Server.MapPath("/..") then
    ' Hvis ikke så brug custom-funktionen ovenfor (MapPathX)
    dbPath = MapPathX("/../data/db1.mdb")
else
    ' ellers brug den indbyggede MapPath
    dbPath = Server.MapPath("/../data/db1.mdb")
end if

' Gem connectionstring i session, så man kan komme til den
' andre steder for denne bruger...
Session.Contents("ConnectionString") = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath
%>

------------------------------------------
Databasen ser således ud:
bruger =
  ID [Autonumber - unique]
+ Navn [text - 255 - requied - zerolength allowed]
+ Password [text - 50 - required - zerolength allowed]
+ Email [text - 255 - required - zerolength allowed]
+ Kategori [text - 50 - required - zerolength allowed]
+ Beskrivelse [text - 255 - required - zerolength allowed]
Avatar billede softspot Forsker
25. august 2005 - 22:40 #58
Der mangler pt. en mulighed for at oprette en bruger (en mindre detalje ;)), men nu kan du jo lige se om det overhovedet kan bruges til noget...
Avatar billede softspot Forsker
25. august 2005 - 22:57 #59
Nu også med mulighed for at oprette brugere:

forside.asp:
---------------------

<%@ language="vbscript" codepage="1252" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>forside</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  </head>
  <body>
   
    <p>Dette er forsiden hvor man kan logge på med sine brugeroplysninger og <a href="userinfo.asp">ændre sin profil</a>.</p>   
    <p>Hvis du ikke har en profil i forvejen kan du <a href="userinfo.asp?mode=new">oprette en ny her</a>.</p>

  </body>
</html>


userinfo.asp:
---------------------

<%@ language="vbscript" codepage="1252" %>
<%
if cstr(Request.QueryString("mode")) = "new" then
    Session.Contents("userid") = 0
else
    if IsEmpty(Session.Contents("userid")) OR cstr(Session.Contents("userid") & "") = "" then
        Server.Transfer "login.asp"
    end if
end if

Server.Execute "setupConn.asp"

strConn = Session.Contents("ConnectionString")
set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn

if cstr(Request.Form("Opdater")) <> "" then
    SQLBeskrivelse = Replace(Request.Form("Beskrivelse"),"'","''")
    if len(SQLBeskrivelse) > 255 then
        SQLBeskrivelse = left(SQLBeskrivelse, 255)
    end if
   
    if Session.Contents("userid") > 0 then
        ' Så skal vi igang med at opdatere brugerens data
        strSQL = "UPDATE bruger SET"
        strSQL = strSQL & " Navn='" & Replace(Request.Form("Navn"),"'","''") & "'"
        strSQL = strSQL & ", [Password]='" & Replace(Request.Form("Password"),"'","''") & "'"
        strSQL = strSQL & ", Email='" & Replace(Request.Form("Email"),"'","''") & "'"
        strSQL = strSQL & ", Kategori='" & Request.Form("Kategori") & "'"
        strSQL = strSQL & ", Beskrivelse='" & SQLBeskrivelse & "'"
        strSQL = strSQL & " WHERE ID=" & Session.Contents("userid")

        objConn.Execute strSQL
    else
        ' så skal vi igang med at oprette en ny bruger
        strSQL = "INSERT INTO bruger"
        strSQL = strSQL & "(Navn,[Password],Email,Kategori,Beskrivelse) "
        strSQL = strSQL & "VALUES("
        strSQL = strSQL & "'" & Replace(Request.Form("Navn"),"'","''") & "'"
        strSQL = strSQL & ",'" & Replace(Request.Form("Password"),"'","''") & "'"
        strSQL = strSQL & ",'" & Replace(Request.Form("Email"),"'","''") & "'"
        strSQL = strSQL & ",'" & Request.Form("Kategori") & "'"
        strSQL = strSQL & ",'" & SQLBeskrivelse & "'"
        strSQL = strSQL & ")"

        objConn.Execute strSQL
       
        set objRs = objConn.Execute("SELECT @@IDENTITY AS newId")
        if not objRs.EOF then
            Session.Contents("userid") = cstr(objRs("newId"))
        end if
        objRs.Close
        set objRs = nothing
    end if
   
    objConn.Close
    set objConn = nothing
    Response.Redirect "forside.asp"
end if

if cstr(Request.Form("Slet")) <> "" then
    strSQL = "DELETE FROM bruger WHERE ID=" & Session.Contents("userid")
    objConn.Execute strSQL

    objConn.Close
    set objConn = nothing
    Session.Contents("userid") = Empty
    Response.Redirect "deluser.asp"
end if

if cstr(Request.Form("Logaf")) <> "" then
    Session.Contents("userid") = Empty
    Session.Abandon
    Response.Redirect "forside.asp"
end if

if Session.Contents("userid") > 0 then
    ' Sæt SQL til indlæsning af brugeroplysninger op
    strSQL = "SELECT * FROM bruger WHERE ID = " & Session.Contents("userid")

    ' Læs oplysningerne
    set objRs = objConn.Execute(strSQL)

    ' Gem oplysningerne i lokale variable til brug i opbygningen af HTML
    if not objRs.EOF then
        Navn = cstr(objRs("Navn") & "")
        Password = cstr(objRs("Password") & "")
        Email = cstr(objRs("Email") & "")
        Kategori = cstr(objRs("Kategori") & "")
        Beskrivelse = cstr(objRs("Beskrivelse") & "")
    end if

    ' Oprydning!
    objRs.close
    objConn.Close
    set objRs = nothing
    set objConn = nothing
end if

' ===================================================================
' KATEGORIER:
' I dette eksempel benyttes et array af kategorier og kategorinøgler,
' men i et virkeligheden burde dette måske vedligeholdes i databasen
' i sin egen tabel. Princippet med at opbygge OPTIONS-listen kan
' stadig benyttes selvom man skulle vælge at lægge værdierne i databasen.
' ===================================================================
' Opsæt kategorier med tekst hhv. nøgle skiftevis, altså formatet er:
' tekst, nøgle, tekst, nøgle... osv.
' =============== !!! VIGTIGT !!! ===================================
' Det er vigtigt at der altid er en nøgle (gerne en tom streng) til hver
' tekst, da indekseringen ellers går itu.
' =============== !!! VIGTIGT !!! ===================================
strKategorier = "[Vælg kategori],,Kategori 1,Kategori 1,Kategori 2,Kategori 2,Kategori 3,Kategori 3,Kategori 4,Kategori 4"
' Split strengen op så kategorierne kommer over i et array med tekst og nøgle skiftevis
arrKategorier = Split(strKategorier, ",")

' Opbyg HTML-streng som danner OPTIONS med kategorierne
Kategorier = vbCrLf
for idx = 0 to ((ubound(arrKategorier) + 1) / 2) - 1
    strKategoriText = arrKategorier(idx * 2)
    strKategoriValue = arrKategorier(idx * 2 + 1)
    Kategorier = Kategorier & "<option value=""" & strKategoriValue & """"
    if strKategoriValue = Kategori then
        Kategorier = Kategorier & " SELECTED"
    end if
    Kategorier = Kategorier & ">" & strKategoriText & vbCrLf
next

' Så kan opbygningen af formularen begynde!
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>Vedligehold brugeroplysninger</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
        .label { float:left; width:120px; }
    </style>
  </head>
  <body>
   
    <form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post">
        <span class="label">Brugernavn:</span><input type="text" maxlength="255" name="Navn" value="<%=Navn%>"><br>
        <span class="label">Adgangskode:</span><input type="password" maxlength=50" name="Password" value="<%=Password%>"><br>
        <span class="label">Email:</span><input type="text" maxlength=255" name="Email" value="<%=Email%>"><br>
        <span class="label">Kategori:</span><select name="Kategori"><%=Kategorier%></select><br>
        <span class="label">Beskrivelse:</span><textarea name="Beskrivelse" cols="50" rows="5"><%=Beskrivelse%></textarea><br>
        <span class="label">&nbsp;</span>
            <input type="submit" name="Opdater" value="Opdater">
            <input type="submit" name="Slet" value="Slet">
            <input type="submit" name="Logaf" value="Log af"><br><br>
    </form>

  </body>
</html>
Avatar billede marie14 Nybegynder
26. august 2005 - 11:32 #60
Det fungerer jo bare som smurt i olie! :-)
Tusind tak!!!
Jeg har kun et par bitte små spørgsmål.
Når man kommer ind på opret bruger siden, hedder knapppen opdater.
Kan man ikke tilføje en knap der hedder opret bruger?
Og når man har slettet kommer man tilbage til login siden.
Burde man ikke komme tilbage til forsiden?
Avatar billede softspot Forsker
26. august 2005 - 11:48 #61
Det skulle være rettet i denne version (userinfo.asp):

<%@ language="vbscript" codepage="1252" %>
<%
if cstr(Request.QueryString("mode")) = "new" then
    Session.Contents("userid") = 0
else
    if IsEmpty(Session.Contents("userid")) OR cstr(Session.Contents("userid") & "") = "" then
        Server.Transfer "login.asp"
    end if
end if

Server.Execute "setupConn.asp"

strConn = Session.Contents("ConnectionString")
set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn

if cstr(Request.Form("Opdater")) <> "" then
    SQLBeskrivelse = Replace(Request.Form("Beskrivelse"),"'","''")
    if len(SQLBeskrivelse) > 255 then
        SQLBeskrivelse = left(SQLBeskrivelse, 255)
    end if
   
    if Session.Contents("userid") > 0 then
        ' Så skal vi igang med at opdatere brugerens data
        strSQL = "UPDATE bruger SET"
        strSQL = strSQL & " Navn='" & Replace(Request.Form("Navn"),"'","''") & "'"
        strSQL = strSQL & ", [Password]='" & Replace(Request.Form("Password"),"'","''") & "'"
        strSQL = strSQL & ", Email='" & Replace(Request.Form("Email"),"'","''") & "'"
        strSQL = strSQL & ", Kategori='" & Request.Form("Kategori") & "'"
        strSQL = strSQL & ", Beskrivelse='" & SQLBeskrivelse & "'"
        strSQL = strSQL & " WHERE ID=" & Session.Contents("userid")

        objConn.Execute strSQL
    else
        ' så skal vi igang med at oprette en ny bruger
        strSQL = "INSERT INTO bruger"
        strSQL = strSQL & "(Navn,[Password],Email,Kategori,Beskrivelse) "
        strSQL = strSQL & "VALUES("
        strSQL = strSQL & "'" & Replace(Request.Form("Navn"),"'","''") & "'"
        strSQL = strSQL & ",'" & Replace(Request.Form("Password"),"'","''") & "'"
        strSQL = strSQL & ",'" & Replace(Request.Form("Email"),"'","''") & "'"
        strSQL = strSQL & ",'" & Request.Form("Kategori") & "'"
        strSQL = strSQL & ",'" & SQLBeskrivelse & "'"
        strSQL = strSQL & ")"

        objConn.Execute strSQL
       
        set objRs = objConn.Execute("SELECT @@IDENTITY AS newId")
        if not objRs.EOF then
            Session.Contents("userid") = cstr(objRs("newId"))
        end if
        objRs.Close
        set objRs = nothing
    end if
   
    objConn.Close
    set objConn = nothing
    Response.Redirect "forside.asp"
end if

if cstr(Request.Form("Slet")) <> "" then
    strSQL = "DELETE FROM bruger WHERE ID=" & Session.Contents("userid")
    objConn.Execute strSQL

    objConn.Close
    set objConn = nothing
    Session.Contents("userid") = Empty
    Response.Redirect "forside.asp"
end if

if cstr(Request.Form("Logaf")) <> "" then
    objConn.Close
    set objConn = nothing
    Session.Contents("userid") = Empty
    Session.Abandon
    Response.Redirect "forside.asp"
end if

if Session.Contents("userid") > 0 then
    SaveButton = "Opdater"
    ' Sæt SQL til indlæsning af brugeroplysninger op
    strSQL = "SELECT * FROM bruger WHERE ID = " & Session.Contents("userid")

    ' Læs oplysningerne
    set objRs = objConn.Execute(strSQL)

    ' Gem oplysningerne i lokale variable til brug i opbygningen af HTML
    if not objRs.EOF then
        Navn = cstr(objRs("Navn") & "")
        Password = cstr(objRs("Password") & "")
        Email = cstr(objRs("Email") & "")
        Kategori = cstr(objRs("Kategori") & "")
        Beskrivelse = cstr(objRs("Beskrivelse") & "")
    end if

    ' Oprydning!
    objRs.close
    objConn.Close
    set objRs = nothing
    set objConn = nothing
else
    SaveButton = "Opret"
end if

' ===================================================================
' KATEGORIER:
' I dette eksempel benyttes et array af kategorier og kategorinøgler,
' men i et virkeligheden burde dette måske vedligeholdes i databasen
' i sin egen tabel. Princippet med at opbygge OPTIONS-listen kan
' stadig benyttes selvom man skulle vælge at lægge værdierne i databasen.
' ===================================================================
' Opsæt kategorier med tekst hhv. nøgle skiftevis, altså formatet er:
' tekst, nøgle, tekst, nøgle... osv.
' =============== !!! VIGTIGT !!! ===================================
' Det er vigtigt at der altid er en nøgle (gerne en tom streng) til hver
' tekst, da indekseringen ellers går itu.
' =============== !!! VIGTIGT !!! ===================================
strKategorier = "[Vælg kategori],,Kategori 1,Kategori 1,Kategori 2,Kategori 2,Kategori 3,Kategori 3,Kategori 4,Kategori 4"
' Split strengen op så kategorierne kommer over i et array med tekst og nøgle skiftevis
arrKategorier = Split(strKategorier, ",")

' Opbyg HTML-streng som danner OPTIONS med kategorierne
Kategorier = vbCrLf
for idx = 0 to ((ubound(arrKategorier) + 1) / 2) - 1
    strKategoriText = arrKategorier(idx * 2)
    strKategoriValue = arrKategorier(idx * 2 + 1)
    Kategorier = Kategorier & "<option value=""" & strKategoriValue & """"
    if strKategoriValue = Kategori then
        Kategorier = Kategorier & " SELECTED"
    end if
    Kategorier = Kategorier & ">" & strKategoriText & vbCrLf
next

' Så kan opbygningen af formularen begynde!
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>Vedligehold brugeroplysninger</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
        .label { float:left; width:120px; }
    </style>
  </head>
  <body>
   
    <form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post">
        <span class="label">Brugernavn:</span><input type="text" maxlength="255" name="Navn" value="<%=Navn%>"><br>
        <span class="label">Adgangskode:</span><input type="password" maxlength=50" name="Password" value="<%=Password%>"><br>
        <span class="label">Email:</span><input type="text" maxlength=255" name="Email" value="<%=Email%>"><br>
        <span class="label">Kategori:</span><select name="Kategori"><%=Kategorier%></select><br>
        <span class="label">Beskrivelse:</span><textarea name="Beskrivelse" cols="50" rows="5"><%=Beskrivelse%></textarea><br>
        <span class="label">&nbsp;</span>
            <input type="submit" name="Opdater" value="<%=SaveButton%>">
            <input type="submit" name="Slet" value="Slet">
            <input type="submit" name="Logaf" value="Log af"><br><br>
    </form>

  </body>
</html>
Avatar billede softspot Forsker
26. august 2005 - 11:48 #62
filen deluser.asp falder bort (den var der også mest til demonstration af hvordan man kan oplyse brugeren om hvad der sker)...
Avatar billede marie14 Nybegynder
26. august 2005 - 12:39 #63
Hvordan så når jeg gerne vil have, at forsiden skal vise indholdet af databasen?
Undtagen Password.
Avatar billede softspot Forsker
26. august 2005 - 12:43 #64
Altså den aktuelle bruger?
Avatar billede marie14 Nybegynder
26. august 2005 - 12:45 #65
Nej, alle dem der har oprettet sig i databasen.
Avatar billede softspot Forsker
26. august 2005 - 12:59 #66
Noget i stil med dette (både aktuelle bruger og allesammen :))


<%@ language="vbscript" codepage="1252" %>
<%
Userinfo = ""
Userlist = ""

strConn = Session.Contents("ConnectionString")
set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn

if not IsEmpty(Session.Contents("userid")) then
    set objRs = objConn.Execute("SELECT * FROM bruger WHERE ID=" & Session.Contents("userid"))
    if not objRs.EOF then
        Userinfo = "<div class=""userinfo"">"
        Userinfo = Userinfo & "<strong>Brugeroplysninger:</strong>"
        Userinfo = Userinfo & "<div>Navn: " & objRs("Navn") & "</div>"
        Userinfo = Userinfo & "<div>Email: " & objRs("Email") & "</div>"
        Userinfo = Userinfo & "<div>Kategori: " & objRs("Kategori") & "</div>"
        Userinfo = Userinfo & "<div>Beskrivelse:<br>" & objRs("Beskrivelse") & "</div>"
        Userinfo = Userinfo & "</div>"
    end if
    objRs.Close
    set objRs = nothing
end if

set objRs = objConn.Execute("SELECT * FROM bruger")
Userlist = "<table cellpadding=0 cellspacing=0 border=0>"
Userlist = Userlist & "<tr><th width=75>Navn</th><th width=150>Email</th><th width=75>Kategori</th><th width=250>Beskrivelse</th></tr>"
do while not objRs.EOF
    Userlist = Userlist & "<tr><td>" & objRs("Navn") & "</td><td>" & objRs("Email") & "</td><td>" & objRs("Kategori") & "</td><td>" & objRs("Beskrivelse") & "</td></tr>"
    objRs.movenext
loop
Userlist = Userlist & "</table>"

objConn.Close
set objConn = nothing

%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>forside</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
        .userinfo { float:right; width:150px; font-size:10px; font-family:verdana,sans-serif;}
        th { text-align:left; }
    </style>
  </head>
  <body>
    <%=Userinfo%>
    <p>Dette er forsiden hvor man kan logge på med sine brugeroplysninger og <a href="userinfo.asp">ændre sin profil</a>.</p>   
    <p>Hvis du ikke har en profil i forvejen kan du <a href="userinfo.asp?mode=new">oprette en ny her</a>.</p>
   
    <%=Userlist%>
  </body>
</html>
Avatar billede marie14 Nybegynder
26. august 2005 - 13:10 #67
Den kommer med denne fejlmelding:
Description [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
Avatar billede softspot Forsker
26. august 2005 - 13:19 #68
i toppen f.eks. inden Userinfo kan du indsætte denne linie:

Server.Execute "setupConn.asp"
Avatar billede marie14 Nybegynder
26. august 2005 - 13:29 #69
Super! Nu virker det også. :-)
Har du mod på...måske ikke lige i dag, men i weekenden eller evt. mandag,at hjælpe mig med hvordan man kan oploade billeder til databasen? Jeg har fundet et script der kan oploade billeder uden komponenter, men det kniber lidt med, at få stivejen ind i databasen. Jeg kan evt oprette det som et nyt spørgsmål?
Avatar billede softspot Forsker
26. august 2005 - 13:52 #70
Lad os prøve at kigge på det senere... jeg vender tilbage imorgen senest :)
Avatar billede marie14 Nybegynder
26. august 2005 - 13:56 #71
Ok. :-)
Avatar billede marie14 Nybegynder
27. august 2005 - 18:08 #72
Du må sige til når du har tid..
Avatar billede softspot Forsker
27. august 2005 - 20:18 #73
Jeg skal lige forstå hvad der ligger i opgaven. Umiddelbart lyder det som om du "bare" skal have en sti til dine billeder i en database, men der må ligge mere skjult i den udfordring...?
Avatar billede marie14 Nybegynder
27. august 2005 - 22:06 #74
Nej det er ideen i det. Jeg er dog lidt i tvivl om billedet skal være et link folk kan klikke sig ind på eller om man skal kunne se det sammen med de andre brugeroplysninger på forsiden?
Avatar billede softspot Forsker
27. august 2005 - 22:16 #75
Jeg overfortolker muligvis, men er det et spørgsmål om hvorvidt billedet skal gemmes på disken som en fil eller i databasen som et BLOB-felt...? Hvis ja, så vil jeg anbefale det første :)

Om det skal være et link eller vises på forsiden, er vel blot et spørgsmål om at lave et link eller et image-tag...?
Avatar billede marie14 Nybegynder
28. august 2005 - 18:41 #76
Ja, jeg tror du har ret i det du siger, men hvis man har billederne i en mappe er det vel nok, at have stivejen i databasen?
Avatar billede softspot Forsker
28. august 2005 - 19:41 #77
Jeps. Det er måden jeg selv ville gøre det på (databaser, specielt filbaserede som Access) har det med at blive tunge at danse med hvis man lægger billeder direkte i databasen...

Hvordan skal billederne kobles sammen med det eksisterende system? Er det noget der kan kobles med brugeren eller er det et helt andet delsystem du er på jagt efter?
Avatar billede marie14 Nybegynder
29. august 2005 - 12:05 #78
Det skal koples på brugeren.
Avatar billede softspot Forsker
29. august 2005 - 12:12 #79
Og det er bare et billede?

Og skal det vises for den aktuelle bruger eller på bruger i oversigten?
Avatar billede marie14 Nybegynder
29. august 2005 - 12:21 #80
Den skal enten vises på brugeren i oversigten eller der skal vises et link. 
Hvordan får jeg i øvrigt gjort email adressen aktiv i oversigten?
Den jeg havde før så sådan ud:
"<a href='mailto:" & rs("Email") & "'>" & rs("Email") & "</a>"
Skal jeg bare bytte rs ud med objRs, som du bruger?
Avatar billede softspot Forsker
29. august 2005 - 12:21 #81
Vil det sige at du skal have din brugertabel til at se nogenlunde således ud:

bruger =
  ID [Autonumber - unique]
+ Navn [text - 255 - requied - zerolength allowed]
+ Password [text - 50 - required - zerolength allowed]
+ Email [text - 255 - required - zerolength allowed]
+ Kategori [text - 50 - required - zerolength allowed]
+ Beskrivelse [text - 255 - required - zerolength allowed]
+ Billedesti [text - 255 - required - zerolength allowed]

hvor billedesti kommer til at indeholde den relative sti til billedet ifht. rodsitet på din webserver...?
Avatar billede softspot Forsker
29. august 2005 - 12:24 #82
Ja, byt rs med objRs (det er bare et andet navn til det samme formål).

Du kan godt lave mailadressen som du skriver, det er dog ikke særlig godt at bruge denne metode hvis du laver sider til et offentligt site, da der findes "høstere" af emailadresser, som automatisk læser websider og scanner for emails. Hvordan du sikrer dig er en helt anden opgave, men du kan ganske givet finde nogle eksempler på google...
Avatar billede marie14 Nybegynder
29. august 2005 - 12:33 #83
1. Ja, til billedstien.
2. Det er et lukket site. Så det skulle ikke være et problem. :-)
Avatar billede softspot Forsker
29. august 2005 - 12:50 #84
Hvis brugerens billede skal med i listen på forside kunne du bruge denne kode:


set objRs = objConn.Execute("SELECT * FROM bruger")
Userlist = "<table cellpadding=0 cellspacing=0 border=0>"
Userlist = Userlist & "<tr><th width=75>Navn</th><th width=150>Email</th><th width=75>Kategori</th><th width=250>Beskrivelse</th></tr>"
do while not objRs.EOF
    Userlist = Userlist & "<tr>"
    Userlist = Userlist & "<td>" & objRs("Navn") & "</td>"
    Userlist = Userlist & "<td>" & objRs("Email") & "</td>"
    Userlist = Userlist & "<td>" & objRs("Kategori") & "</td>"
    Userlist = Userlist & "<td>" & objRs("Beskrivelse") & "</td>"
    Userlist = Userlist & "<td><img src=""" & objRs("Billedesti") & """ width=""80""></td>"
    Userlist = Userlist & "</tr>"
    objRs.movenext
loop
Userlist = Userlist & "</table>"
objRs.close


Jeg er dog stadig lidt usikker på om dette faktisk er hvad du søger.
Avatar billede marie14 Nybegynder
29. august 2005 - 13:11 #85
Jeg tror, at det er det jeg søger...
men jeg ved ikke om den opload funktion jeg fundet kan flettes sammen med dit script.
Avatar billede marie14 Nybegynder
29. august 2005 - 13:12 #86
har fundet..:-)
Avatar billede softspot Forsker
29. august 2005 - 13:26 #87
klart nok ;)

Anyway! Hvad er det for en uploadfunktion du har fundet så?
Avatar billede marie14 Nybegynder
29. august 2005 - 13:31 #88
Avatar billede softspot Forsker
29. august 2005 - 16:08 #89
Når du har kaldt FileUpload står du med et path (den første parameter) og et filnavn (den 6. parameter). Disse skal jo bare sættes sammen og smides i feltet Billedesti (som du lige har oprettet i bruger-tabellen :)), så har du stien til dit billede som du kan bruge der hvor det nu er nødvendigt.
Avatar billede marie14 Nybegynder
29. august 2005 - 16:10 #90
Jeg prøver...
Avatar billede softspot Forsker
29. august 2005 - 16:24 #91
Den aktuelle brugers id findes som bekendt i Session.Contents("userid") (idet jeg antager at brugeren skal være logget på for at kunne uploade billeder), så det burde bare være et spørgsmål om at kalde UPDATE således:


SQL = "UPDATE bruger "
SQL = SQL & "SET Billedesti = '" & strPath & strFilename &"' "
SQL = SQL & "WHERE ID=" & session.contents("userid")
Avatar billede marie14 Nybegynder
30. august 2005 - 13:02 #92
Jeg ville jo gerne have, at folk kunne oploade et billede samtidig med, at de opretter sig som brugere og at de kan opdatere deres billede hvis de har behov for det.
Hvordan får jeg disse 2 til, at fungere sammen?
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post">
<FORM ENCTYPE="multipart/form-data" ACTION="uploadgfx.asp" METHOD="POST">
Jeg vil i øvrigt gerne have, at der bare er et link på forsiden til billedet så man kan klikke på det hvis man vil se billedet.
Håber ikke, jeg er for krævende.. :-)
Avatar billede softspot Forsker
30. august 2005 - 14:34 #93
Jeg tror faktisk ikke den komponent du har fundet er i stand til det du efterspørger, da den ser ud til kun at håndtere et input-felt af typen "file". Det kan der naturligvis gøres noget ved, men jeg vil da foreslå at du leder efter en anden udgave (for jeg kan ikke love at jeg kan ændre den du har fundet, så den kommer til at fungere tilfredsstillende, lige med det samme).
Avatar billede marie14 Nybegynder
30. august 2005 - 14:38 #94
Men det er jo en uden komponent?
Avatar billede softspot Forsker
30. august 2005 - 14:42 #95
Komponent forstået på den måde at du har en blok isoleret kode som kan et eller andet, men summa sumarum: det kode du har fundet kan ikke det du har behov for. :)
Avatar billede marie14 Nybegynder
30. august 2005 - 14:43 #96
Hmmm.. det var vel nok ærgeligt...:-(
Avatar billede softspot Forsker
30. august 2005 - 14:46 #97
Ja, men der er helt sikkert noget andet kode derude som rent faktisk kan det du har brug for, så du skal bare søge... :)
Avatar billede marie14 Nybegynder
30. august 2005 - 15:05 #98
Hvis jeg finder noget, vil du så lige kigge på, om det er helt ude i skoven?
Avatar billede softspot Forsker
30. august 2005 - 15:08 #99
Ja, du kan bare smide et link herinde :)
Avatar billede marie14 Nybegynder
07. september 2005 - 14:10 #100
Hej igen softspot.
Jeg har haft lidt for travlt med andre ting, derfor først nu..
Vil du prøve, at kigge på dette link? : http://www.codeproject.com/asp/Display_Images_from_Data.asp

Ved du i øvrigt hvordan man får dato på, for hvornår brugeren opretter sig?
Avatar billede softspot Forsker
07. september 2005 - 16:49 #101
Ja, så skal du have oprettet et nyt felt i databasen som er af typen datetime (lad os kalde det OprettetDato). Derefter skal du rette din insert SQL-sætninger til dette:

  ' så skal vi igang med at oprette en ny bruger
  strSQL = "INSERT INTO bruger"
  strSQL = strSQL & "(Navn,[Password],Email,Kategori,Beskrivelse,OprettetDato) "
  strSQL = strSQL & "VALUES("
  strSQL = strSQL & "'" & Replace(Request.Form("Navn"),"'","''") & "'"
  strSQL = strSQL & ",'" & Replace(Request.Form("Password"),"'","''") & "'"
  strSQL = strSQL & ",'" & Replace(Request.Form("Email"),"'","''") & "'"
  strSQL = strSQL & ",'" & Request.Form("Kategori") & "'"
  strSQL = strSQL & ",'" & SQLBeskrivelse & "'"
  strSQL = strSQL & ",#" & now & "#"
  strSQL = strSQL & ")"
Avatar billede softspot Forsker
07. september 2005 - 21:02 #102
Ang. det link du har smidt, så tror jeg ikke du kan bruge det til noget, da det ser ud til at være et eksempel på hvordan man bruger aspSmartUpload til at gemme uploadede billeder i databasen og trække dem ud igen...
Avatar billede marie14 Nybegynder
08. september 2005 - 09:16 #103
Har du nogen anelse om hvor jeg kan finde noget brugbart?
Avatar billede marie14 Nybegynder
08. september 2005 - 10:41 #104
Dato funktionen kommer med denne fejlmelding:
Number of query values and destination fields are not the same
Avatar billede softspot Forsker
08. september 2005 - 11:50 #105
Huskede du at tilføje feltet i feltlisten (3. linie)?

Huskede du at tilføje det i databasen?
Avatar billede marie14 Nybegynder
08. september 2005 - 12:11 #106
Hvis du mener om jeg gjorde som du beskrev oven for, så ja.
Jeg lavede feltet i databasen og tilføjede denne linje:
strSQL = strSQL & ",#" & now & "#"
Avatar billede softspot Forsker
08. september 2005 - 12:15 #107
Dvs. du stadig mangler at tilføje feltet i feltlisten

  strSQL = strSQL & "(Navn,[Password],Email,Kategori,Beskrivelse,OprettetDato) "
Avatar billede marie14 Nybegynder
08. september 2005 - 12:22 #108
Nu virker det selvfølgelig. :-)
Avatar billede softspot Forsker
08. september 2005 - 12:25 #109
:)
Avatar billede marie14 Nybegynder
08. september 2005 - 12:27 #110
Kan du give mig et eller andet hint om hvad jeg skal kigge efter når jeg leder efter en upload billed funktion?
Avatar billede softspot Forsker
08. september 2005 - 12:31 #111
Det er ikke noget jeg selv har benyttet mig meget af på de (få) ASP-sites jeg har lavet tidligere, så jeg har ikke den store erfaring med hvilke komponenter man kan bruge. Jeg har dog (foranlediget af denne tråd) selv prøvet at fedte lidt med noget kode som kunne håndtere flere filer. Jeg er kommet frem til en klasse som kan bruges, men jeg absolut ikke er perfekt på det aktuelle stadie. Jeg kan lige prøve at lægge en demo af den op på min server, så kan du hente den derfra med lidt eksempelkode til...
Avatar billede marie14 Nybegynder
08. september 2005 - 12:34 #112
Det ville være skønt, men hvordan får jeg fat i den?
Har du en side jeg kan hente den fra?
Avatar billede softspot Forsker
08. september 2005 - 23:52 #113
Koden ligger i øjeblikket på http://www.softspot.dk/forside/erfaringsdeling/scriptaspupload.aspx

Siden skal på et eller andet tidspunkt også beskrive hvordan du bruger kontrollen, men indholds- og formuleringsmæssigt er den stadig under udarbejdelse...
Avatar billede marie14 Nybegynder
09. september 2005 - 09:14 #114
Jeg kan ikke åbne filen. Kan jeg få den som en zip i stedet?
Avatar billede softspot Forsker
09. september 2005 - 09:22 #115
Prøv nu.
Avatar billede marie14 Nybegynder
09. september 2005 - 09:32 #116
Ja, det gik lidt bedre. Kan jeg teste siderne eller er de ikke færdige?
Avatar billede softspot Forsker
09. september 2005 - 09:35 #117
Det er i princippet en køreklar demo, men du kan jo få til opgave at melde tilbage hvis der er nogle problemer med klassen... :)
Avatar billede marie14 Nybegynder
09. september 2005 - 09:43 #118
Det skal jeg gøre. :-)
Fungerer den sammen med en database?
Jeg har i øvrigt et spørgsmål vedr. det tidligere script du har givet mig.
i denne sætning: strKategorier = "[Vælg kategori],,Kategori 1,Kategori 1,Kategori 2,Kategori 2,Kategori 3,Kategori 3,Kategori 4,Kategori 4" skal jeg jo skifte kategorier ud med nogle andre benævnelser, skal jeg skrive hver titel 2 gange som du har gjort? Og er der andre steder det skal ændres?
Avatar billede softspot Forsker
09. september 2005 - 09:53 #119
Strengen består af skiftevis Tekst som ses i listen og den value som den tekst får i listen, altså:

<option value="value-fra-array">tekst-fra-array

strKategorier = "tekst-fra-array,value-fra-array,tekst-fra-array,value-fra-array,tekst-fra-array,value-fra-array"

Giver det mening?

Jeg mener ikke der er andre steder du skal rette, da value bliver gemt i databasen som den er.
Avatar billede marie14 Nybegynder
09. september 2005 - 10:06 #120
Øøøh, det skal nok være lidt tydeligere.
Kan du give mig et eksempel? Lad os side en kategori hedder Familie, hvad så?
Undskyld, jeg skal have det ind med skeer. :-)
Avatar billede marie14 Nybegynder
09. september 2005 - 10:23 #121
Den ene kategori 1 er den der bliver vist i menuen og den anden er den der går ind i databasen?
Avatar billede softspot Forsker
09. september 2005 - 10:24 #122
ja
Avatar billede marie14 Nybegynder
09. september 2005 - 10:29 #123
Jeg har testet dine sider. Den gemmer navnene på billedfilerne og tekster ok, men billederne skal vel uploades til en mappe og stivejen ind i en database?
Er det planen?
Avatar billede softspot Forsker
09. september 2005 - 10:32 #124
I den funktion der hedder SaveToFile kan du angive en absolut sti (se evt. beskrivelsen af egenskaber og metoder i bunden af den side hvor du hentede klassen).
Avatar billede marie14 Nybegynder
09. september 2005 - 11:02 #125
Det er godt nok for viderekommende det du laver. Jeg bliver helt svedt!!

Er det dette stykke du vil have jeg skal ændre?:

Public Sub SaveToFile(filename)
        SaveBinaryData filename, MultiByteToBinary(binContent)
    End Sub

Jeg ville jo også gerne have at det blev til et link på det vi har kaldt forside, så folk selv kan vælge, om de vil se billedet eller ej.
Avatar billede softspot Forsker
09. september 2005 - 11:11 #126
Du skal ikke ændre i selve klassen, altså den fil der hedde SASPU.cls.asp (faktisk vil jeg anbefale at du holder dig fra den :)).

Du skal kigge i den fil der hedder testSASPU.asp. Den indeholder nogle ganske få eksempler på hvordan man kan bruge klassen. Desuden vil jeg igen henvise til den side hvor du hentede zip-filen. Der skulle gerne stå noget mere om hvordan den bliver brugt. Hvis der er noget information på den sidstenævnte side som du gerne vil have på, kan du lige sige til, så vil jeg se hvad jeg kan gøre for at gøre forklaringen bedre. Der er plads til forbedring - det er helt sikkert :)
Avatar billede marie14 Nybegynder
09. september 2005 - 12:25 #127
Nu ser stivejen sådan her ud:
obj.SaveToFile(Server.MapPath("data.mdb" & obj.FileName))
Og jeg har sat en connection ind til databasen.
Er det helt ude i skoven?
Den skriver i hvertfald ikke noget i databasen.
Avatar billede softspot Forsker
09. september 2005 - 12:39 #128
Ja, det er helt ude i skoven :)

obj.SaveToFile gemme den uploadede fil på serverens harddisk. Det filnavn som du gemmer den under, skal du så indsætte i databasen (i det felt der hedder billedesti).

Din kode bør altså se nogenlunde således ud for at gemme filen:

obj.SaveToFile(Server.MapPath("upload/" & obj.FileName))

hvis du vil gemme den i en mappe der hedder upload og ligger i samme folder som dit uploadscript. Dernæst skal du indsætte den i databasen, som gennemgået tidligere i denne tråd. I den forbindelse kan det være en idé at gemme filnavnet i en variabel så den er til at genbruge ifm. opdateringen af databasen:

gemtFil = Server.MapPath("upload/" & obj.FileName)
obj.SaveToFile(gemtFil)

Så skal du bare bruge gemtFil i din SQL-sætning.

PS. Tag dig nu god tid til at læse hvad jeg skriver og sammenhold det med de ting vi har drøftet tidligere i denne tråd. Så er jeg sikker på at du nok skal få det til at hænge sammen... :)
Avatar billede marie14 Nybegynder
10. september 2005 - 14:40 #129
Jeg vil prøve, at udarbejde upload funktionen som du beskriver, men lige nu har jeg stadig et problem tilbage med det tidligere script. Jeg har kunne udvide det med et ekstra felt og dato, men når jeg prøver med et mere, bliver den ved med, at komme med denne fejlmelding:
Number of query values and destination fields are not the same.
Hvor laver jeg fejlen?
Avatar billede softspot Forsker
10. september 2005 - 15:34 #130
Hvornår er det du får den fejl (opret, opdater, begge steder eller et helt tredie sted) og hvor? Hvordan ser din kode ud lige nu (den omkring databaseoperationerne og i særdeleshed den kode hvor fejlen opstår)?
Avatar billede marie14 Nybegynder
10. september 2005 - 15:37 #131
Det er når jeg opretter.
Avatar billede softspot Forsker
10. september 2005 - 15:46 #132
...og den aktuelle kode...
Avatar billede marie14 Nybegynder
10. september 2005 - 16:00 #133
Nu er jeg ikke interesseret i at alle kender mine filnavne m.v. så jeg har kaldt de 2 tilføjede felter for x og y.
<%@ language="vbscript" codepage="1252" %>
<%
if cstr(Request.QueryString("mode")) = "new" then
    Session.Contents("userid") = 0
else
    if IsEmpty(Session.Contents("userid")) OR cstr(Session.Contents("userid") & "") = "" then
        Server.Transfer "login.asp"
    end if
end if

Server.Execute "setupConn.asp"

strConn = Session.Contents("ConnectionString")
set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn

if cstr(Request.Form("Opdater")) <> "" then
    SQLBeskrivelse = Replace(Request.Form("Beskrivelse"),"'","''")
    if len(SQLBeskrivelse) > 255 then
        SQLBeskrivelse = left(SQLBeskrivelse, 255)
    end if
   
    if Session.Contents("userid") > 0 then
        ' Så skal vi igang med at opdatere brugerens data
        strSQL = "UPDATE bruger SET"
        strSQL = strSQL & " xxx='" & Replace(Request.Form("xxx"),"'","''") & "'"
        strSQL = strSQL & " Navn='" & Replace(Request.Form("Navn"),"'","''") & "'"
        strSQL = strSQL & ", [Password]='" & Replace(Request.Form("Password"),"'","''") & "'"
        strSQL = strSQL & ", Email='" & Replace(Request.Form("Email"),"'","''") & "'"
        strSQL = strSQL & ", yyy='" & Replace(Request.Form("yyy"),"'","''") & "'"
        strSQL = strSQL & ", Kategori='" & Request.Form("Kategori") & "'"
        strSQL = strSQL & ", Beskrivelse='" & SQLBeskrivelse & "'"
        strSQL = strSQL & " WHERE ID=" & Session.Contents("userid")

        objConn.Execute strSQL
    else
        ' så skal vi igang med at oprette en ny bruger
        strSQL = "INSERT INTO bruger"
        strSQL = strSQL & "(xxx,Navn,[Password],Email,yyy,Kategori,Beskrivelse,OprettetDato) "
        strSQL = strSQL & "VALUES("
        trSQL = strSQL & "'" & Replace(Request.Form("xxx"),"'","''") & "'"
        strSQL = strSQL & "'" & Replace(Request.Form("Navn"),"'","''") & "'"
        strSQL = strSQL & ",'" & Replace(Request.Form("Password"),"'","''") & "'"
        strSQL = strSQL & ",'" & Replace(Request.Form("Email"),"'","''") & "'"
        strSQL = strSQL & ",'" & Replace(Request.Form("yyy"),"'","''") & "'"
        strSQL = strSQL & ",'" & Request.Form("Kategori") & "'"
        strSQL = strSQL & ",'" & SQLBeskrivelse & "'"
        strSQL = strSQL & ",#" & now & "#"
        strSQL = strSQL & ")"

        objConn.Execute strSQL
       
        set objRs = objConn.Execute("SELECT @@IDENTITY AS newId")
        if not objRs.EOF then
            Session.Contents("userid") = cstr(objRs("newId"))
        end if
        objRs.Close
        set objRs = nothing
    end if
   
    objConn.Close
    set objConn = nothing
    Response.Redirect "forside.asp"
end if

if cstr(Request.Form("Slet")) <> "" then
    strSQL = "DELETE FROM bruger WHERE ID=" & Session.Contents("userid")
    objConn.Execute strSQL

    objConn.Close
    set objConn = nothing
    Session.Contents("userid") = Empty
    Response.Redirect "forside.asp"
end if

if cstr(Request.Form("Logaf")) <> "" then
    objConn.Close
    set objConn = nothing
    Session.Contents("userid") = Empty
    Session.Abandon
    Response.Redirect "forside.asp"
end if

if Session.Contents("userid") > 0 then
    SaveButton = "Update"
    ' Sæt SQL til indlæsning af brugeroplysninger op
    strSQL = "SELECT * FROM bruger WHERE ID = " & Session.Contents("userid")

    ' Læs oplysningerne
    set objRs = objConn.Execute(strSQL)

    ' Gem oplysningerne i lokale variable til brug i opbygningen af HTML
    if not objRs.EOF then
        Price = cstr(objRs("xxx") & "")
        Navn = cstr(objRs("Navn") & "")
        Password = cstr(objRs("Password") & "")
        Email = cstr(objRs("Email") & "")
        Subsidiary = cstr(objRs("yyy") & "")
        Kategori = cstr(objRs("Kategori") & "")
        Beskrivelse = cstr(objRs("Beskrivelse") & "")
    end if

    ' Oprydning!
    objRs.close
    objConn.Close
    set objRs = nothing
    set objConn = nothing
else
    SaveButton = "Submit"
end if

' ===================================================================
' KATEGORIER:
' I dette eksempel benyttes et array af kategorier og kategorinøgler,
' men i et virkeligheden burde dette måske vedligeholdes i databasen
' i sin egen tabel. Princippet med at opbygge OPTIONS-listen kan
' stadig benyttes selvom man skulle vælge at lægge værdierne i databasen.
' ===================================================================
' Opsæt kategorier med tekst hhv. nøgle skiftevis, altså formatet er:
' tekst, nøgle, tekst, nøgle... osv.
' =============== !!! VIGTIGT !!! ===================================
' Det er vigtigt at der altid er en nøgle (gerne en tom streng) til hver
' tekst, da indekseringen ellers går itu.
' =============== !!! VIGTIGT !!! ===================================
strKategorier = "[Vælg kategori],,Kategori 1,Kategori 1,Kategori 2,kategori 2,Kategori 3, Kategori 3, Kategori 4, Kategori 4"
' Split strengen op så kategorierne kommer over i et array med tekst og nøgle skiftevis
arrKategorier = Split(strKategorier, ",")

' Opbyg HTML-streng som danner OPTIONS med kategorierne
Kategorier = vbCrLf
for idx = 0 to ((ubound(arrKategorier) + 1) / 2) - 1
    strKategoriText = arrKategorier(idx * 2)
    strKategoriValue = arrKategorier(idx * 2 + 1)
    Kategorier = Kategorier & "<option value=""" & strKategoriValue & """"
    if strKategoriValue = Kategori then
        Kategorier = Kategorier & " SELECTED"
    end if
    Kategorier = Kategorier & ">" & strKategoriText & vbCrLf
next

' Så kan opbygningen af formularen begynde!
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>Vedligehold brugeroplysninger</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
        .label { float:left; width:120px; }
    body,td,th {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #06275B;
}
a {
    font-size: 12px;
    color: #06275B;
}
a:link {
    text-decoration: underline;
}
a:visited {
    text-decoration: underline;
    color: #06275B;
}
a:hover {
    text-decoration: none;
    color: #99CCFF;
}
a:active {
    text-decoration: underline;
    color: #06275B;
}
.style2 {font-family: Arial, Helvetica, sans-serif}
    .style4 {float: left; width: 120px; font-weight: bold; }
    </style>
  </head>
  <body>
   
    <form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post">
    <span class="style4">Price:</span>
        <input type="text" maxlength="255" name="xxx value="<%=xxx%>"><br>
        <span class="style4">Name:</span>
        <input type="text" maxlength="255" name="Navn" value="<%=Navn%>"><br>
        <span class="style4">Password:</span>
        <input type="password" maxlength=50" name="Password" value="<%=Password%>"><br>
        <span class="style4">Email:</span>
        <input type="text" maxlength=255" name="Email" value="<%=Email%>"><br>
        <span class="style4">Subsidiary:</span>
        <input type="text" maxlength="255" name="yyy" value="<%=yyy%>"><br>
        <span class="style4">Equipment:</span>
        <select name="Kategori" class="style2"><%=Kategorier%></select>
        <br>
        <span class="style4">Description:</span>
        <textarea name="Beskrivelse" cols="50" rows="5"><%=Beskrivelse%></textarea>
        <br>
        <span class="label">&nbsp;</span>
            <input name="Opdater" type="submit" class="style4" value="<%=SaveButton%>">
            <input name="Slet" type="submit" class="style4" value="Delete">
            <input name="Logaf" type="submit" class="style4" value="Logoff">
            <br><br>
    </form>

  </body>
</html>
Avatar billede softspot Forsker
10. september 2005 - 16:12 #134
Der er noget galt med denne stump kode:

strSQL = strSQL & "VALUES("
trSQL = strSQL & "'" & Replace(Request.Form("xxx"),"'","''") & "'"
strSQL = strSQL & "'" & Replace(Request.Form("Navn"),"'","''") & "'"

der mangler et s i strSQL i den midterste linie.

Ud over det så er name-attributten på xxx-feltet i din form ikke afsluttet med anførselstegn (men det antager jeg skyldes din iver for at skjule feltnavne, hvilket jeg ikke helt forstår - men det er nok bare mig... :)).
Avatar billede marie14 Nybegynder
10. september 2005 - 16:25 #135
Er det ikke bare et s der mangler?
Det er en copy/paste fejl?
Det site jeg arbejder på er for en lille gruppe brugere og er password beskyttet.
Når jeg sidder og tester gider jeg ikke lægge password på, så derfor er det ikke smart, at alle får stivejene.
Avatar billede softspot Forsker
10. september 2005 - 16:42 #136
Jeg kan kun se at du havde maskeret feltnavne og det er vel ikke stinavne...?

Anyway! Hvordan kommer du afsted med at lave en copy/paste-fejl inde midt i en kodefil!? Har du siddet og kopieret hver enkelt linie eller hvordan... for mig virker det oplagt at det var der fejlen lå, da det netop vil give ubalance i antallet af felter og antallet af værdier...

Kan du ikke prøve at skrive den SQL som genereres ud og stoppe udførslen umiddelbart efter, så du kan se hvad det er for noget den prøver at smide i hovedet på databasen...?
Avatar billede marie14 Nybegynder
10. september 2005 - 18:16 #137
Jeg var med i en asp brevkasse der påstod, at de ikke opgav ens personlige data til tredje mand, men ikke desto mindre kunne jeg finde alle mine data på google, mit fulde navn, min email, min fødselsdato og år m.v. Jeg søgte på mit efternavn p.g.a slægtsforskning, men fik en overraskelse. Så nu har jeg vænnet mig til altid at skrive andre navne.
Avatar billede softspot Forsker
11. september 2005 - 00:06 #138
Jeg kan sagtens forstå din bekymring, men et feltnavn kan vel næppe være inkriminerende for nogen. Hvis det er til nogen hjælp kan du sende SQL output og evt. aktuelle sourcekode til min email jan(a)softspot.dk, så er der ikke andre der får det at se (ikke med mit samtykke i det mindste).
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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