Avatar billede karsten_larsen Praktikant
07. december 2002 - 09:00 Der er 7 kommentarer og
1 løsning

Ændring af brugernavn i database

Jeg har fået følgende til at virke efterhånden, dog ikke når der indtastes et nyt brugernavn, så får jeg en error '80020009' Exception occurred. Hvordan løses et sådan problem, så at brugeren får mulighed for at ændre sit brugernavn. Brugernavn bruges i login/huske cookie og til at hente data fra databasen. Jeg har et datafelt til som er ID, men kan ikke lige dreje hvordan og om det skal bruges i en sådan sammenhæng.

Nedenfor følger min kode.

:-)  Karsten


<%
Option Explicit
Dim sql, objRecBrugernavn, brugernavn, fornavn, efternavn, telefon, email, www, password, notfilled(6), badflag, count, strConnect,objConn,strUpdate

'Tag vaerdier fra formen
brugernavn = Request.Form("brugernavn")
fornavn = Request.Form("fornavn")
efternavn = Request.Form("efternavn")
telefon = Request.Form("telefon")
email = Request.Form("email")
www = Request.Form("www")
password = Request.Form("password")


' Tjek om alt er blevet fyldt ud, badflag bestemmer om fejlfunktion skal kaldes
badflag = 0

if brugernavn = "" then
    notfilled(0) = "Brugernavn"
    badflag = 1
end if
if fornavn = "" then
    notfilled(1) = "Fornavn"
    badflag = 1
end if
if efternavn = "" then
    notfilled(2) = "Efternavn"
    badflag = 1
end if
if telefon = "" then
    notfilled(3) = "Telefon"
    badflag = 1
end if
if email = "" then
    notfilled(4) = "Email"
    badflag = 1
end if
if www = "" then
    notfilled(5) = "WWW"
    badflag = 1
end if
if password = "" then
    notfilled(6) = "Password"
    badflag = 1
end if

if badflag = 1 then
    signuperror("nofield")
end if

'Skab forbindelse og indsaet brugerens oplysninger i databasen
%>
<!--#include file="database.inc"-->
<%
Set objRecBrugernavn = Server.CreateObject("ADODB.Recordset")
objRecBrugernavn.open "deltagere WHERE brugernavn = '" & brugernavn & "'", objConn, 3, 3

if  objRecBrugernavn("password") = password then
    objRecBrugernavn("brugernavn") = brugernavn
    objRecBrugernavn("fornavn") = fornavn
    objRecBrugernavn("efternavn") = efternavn
    objRecBrugernavn("telefon") = telefon
    objRecBrugernavn("email") = email
    objRecBrugernavn("www") = www
   
    objRecBrugernavn.Update
else
    signuperror("badpwd")
end if
objRecBrugernavn.close
set objRecBrugernavn = nothing
objConn.close
set objConn = nothing

Response.Redirect("profil.asp?updated=true")
%>

<%Function signuperror(errortype)%>
<html>
<head>
</head>
<body >


<%if errortype = "nofield" then%>
Du har ikke udfyldt følgende felter korrekt:
<br>
<%for count = 0 to 6%>
<%if notfilled(count) <> "" then%>
<b><%=notfilled(count)%></b><br>
<%end if%>
<%next%>


<%else%>
<p>Dit password er ikke korrekt</p>
<%end if%>
Avatar billede erikjacobsen Ekspert
07. december 2002 - 09:21 #1
objRecBrugernavn.open "select * deltagere WHERE brugernavn = '" & brugernavn & "'", objConn, 3, 3
Avatar billede erikjacobsen Ekspert
07. december 2002 - 09:27 #2
objRecBrugernavn.open "select * from deltagere WHERE brugernavn = '" & brugernavn & "'", objConn, 3, 3
Avatar billede eagleeye Praktikant
07. december 2002 - 10:49 #3
Hvis du vil ændre brugernavet så skal du lave din SQL som hendter bruger com skal ændres data i om, så den hendter brugeren med det unike ID ok ikke bruger da det jo så er forskelligt fra det som er i databasen..:

objRecBrugernavn.open "deltagere WHERE brugernavn = '" & brugernavn & "'", objConn, 3, 3

Til:
objRecBrugernavn.open "deltagere WHERE ID = " & brugerID , objConn, 3, 3


Så kan du tilføje denne til listen du henter:

brugerID = Request.Form("ID")
Avatar billede eagleeye Praktikant
07. december 2002 - 10:50 #4
Du skal bare huske at tilføje et hidden felt på din form som indeholder ID i stil med den måde du indsætter brugernanet i formen:


<input type="hidden" name="id" value="<%=recordSet("id")%>">
Avatar billede karsten_larsen Praktikant
07. december 2002 - 11:58 #5
Jeg har lige prøvet jeres svar af og det gav flere problemer. Prøver lige igen efter en ny kop kaffe.

:-) Karsten
Avatar billede karsten_larsen Praktikant
07. december 2002 - 13:05 #6
Ved at ændre af objRec med select * from giver samme fejl ved at ændre brugernavn.

Ved at ændre med ID så får jeg følgende fejl i profil.asp. Siden når at skrive at profilen er opdateret og så kommer så denne fejlmeddelse:

ADODB.Field error '80020009'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. /profil.asp, line 0

Brugernavnet ændres godt nok i databasen

?? karsten

Profil.asp er som følger:

<%
Option Explicit
Dim sql, rsProfil, brugernavn, strConnect,objConn,strUpdate
brugernavn = Request.Cookies("brugernavn")
%>
<html>
<head>
<title>Profil opdatering</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<%
if brugernavn = "" then
  nologin()
end if
%>
<!--#include file="database.inc"-->
<%
sql = "SELECT * FROM deltagere WHERE brugernavn = '" & brugernavn & "'"
Set rsProfil = Server.CreateObject("ADODB.Recordset")
rsProfil.Open sql, objConn, 3, 3
%>

<br>
<br>

<h3 align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><%=brugernavn%>'s
  profil</font></h3>
<%if Request.QueryString("updated") = "true" then%>
<font color="#CC0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">P</font><font color="#CC0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">rofilen
er opdateret kl. <%=Time()%></font> <font size="1">
<%else%>
</font><br clear="all">
<%end if%>

<form action="profile_update.asp" method="post" name="profileform">
  <table width="100%" cellpadding="2" cellspacing="0" border="0">
    <tr> <input type="hidden" name="Id" value="<%=rsProfil("Id")%>">
      <td width="56%"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Brugernavn</font></td>
      <td width="44%"><input type="text" name="brugernavn" size="20" value="<%=rsProfil("brugernavn")%>">
</td>
    </tr>
    <tr>
      <td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Fornavn:</font> </td>
      <td><input type="text" name="fornavn" size="20" value="<%=rsProfil("fornavn")%>">
</td>
    </tr>
    <tr>
      <td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Efternavn:</font> </td>
      <td><input type="text" name="efternavn" size="20" value="<%=rsProfil("efternavn")%>"></td>
    </tr>
    <tr>
      <td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Telefon:</font> </td>
      <td><input type="text" name="telefon" size="20" value="<%=rsProfil("telefon")%>">
</td>
    </tr>
    <tr>
      <td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Email:</font> </td>
      <td><input type="text" name="email" size="20" value="<%=rsProfil("email")%>"></td>
    </tr>
    <tr>
      <td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Hjemmeside</font></td>
      <td><input type="text" name="www" size="20" value="<%=rsProfil("www")%>"></td>
    </tr>
    <tr>
     
    </tr>
    <tr>
      <td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Indtast
        adgangskode:</font> </td>
      <td><input type="password" name="password" size="20"> </td>
    </tr>
    <tr>
      <td align="center">&nbsp; </td>
      <td> <div align="left">
          <input type="submit" name="submitbutton" value="Bekr&aelig;ft &aelig;ndring" onClick="profileform.submitbutton.value='Vent venligst...'">
        </div></td>
    </tr>
</table>

</form>
</body>
</html>

<%
rsProfil.close
set rsProfil = nothing
objConn.close
set objConn = nothing
%>

<%Function nologin()%>

<p align="center">Du skal være logget ind for at se din profil</p>

<p align="center"><a href="java script:window.close()">Luk dette vindue</a></p>

</body>
</html>
<%Response.end
End Function%>
Avatar billede eagleeye Praktikant
07. december 2002 - 13:09 #7
På din profile side hendter du brugernavnet fra en cookie:

brugernavn = Request.Cookies("brugernavn")


Det skal du også huske at opdater på siden som gemmer i databasen så brugernat passer i cookien., så du skal faktisk efter du har opdaterte databaen:

  objRecBrugernavn.Update
  response.cookies("brugernavn") = brugernavn
Avatar billede karsten_larsen Praktikant
07. december 2002 - 13:14 #8
-> Eagleeye

Ja nu virker det perfekt - mange tak for hjælpen.
:-) Karsten
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester