04. juli 2005 - 15:41Der er
6 kommentarer og 1 løsning
Hvordan ændre en post i databasen?
Hej - jeg har fundet en ASP-kode, som giver mig adgang til at læse i en Access-database:
<% Dim adoCon 'Database Connection Variable Dim rsCheckUser 'Database Recordset Variable Dim SQLtekst 'Database query sring Dim BrugernavnDB 'Holds the user name
SQLtekst = "SELECT Password FROM Brugerliste WHERE Brugernavn = '" & BrugernavnDB & "'" Set rsCheckUser = adoCon.execute( SQLtekst )
If NOT rsCheckUser.EOF Then If rsCheckUser("Password") = strPassword Then Session("blnIsUserGood") = True Session.Timeout = 60 Set adoCon = Nothing Set strCon = Nothing Set rsCheckUser = Nothing Response.Redirect"Velkomstside.asp?Brugernavn=" & BrugernavnDB End If End If
Set adoCon = Nothing Set strCon = Nothing Set rsCheckUser = Nothing Session("blnIsUserGood") = False Response.Redirect"Ingen_adgang.htm" %>
Funktionen tjekker, om det indtastede Brugernavn og Password passer sammen ifølge databasen - og viderestiller til den relevante side.
Jeg vil gerne udvide koden, sådan at den fundne post i databasen samtidig markeres. F.eks. derved at et felt ved navn "Visited" sættes="true".
Hvordan gør jeg det? Jeg har brug for den præcise kode, for jeg er ikke særlig fortrolig med ASP.
Prøv nedenstående, det er ikke testet men det burde virke:
<% Dim adoCon 'Database Connection Variable Dim rsCheckUser 'Database Recordset Variable Dim SQLtekst 'Database query sring Dim BrugernavnDB 'Holds the user name
SQLtekst = "SELECT Password, BrugerID FROM Brugerliste WHERE Brugernavn = '" & BrugernavnDB & "'" Set rsCheckUser = adoCon.execute( SQLtekst )
If NOT rsCheckUser.EOF Then If rsCheckUser("Password") = strPassword Then Session("blnIsUserGood") = True
' find brugerens ID brugerId = rsCheckUser("BrugerID")
' gemmer noget tekst i feltet Visited SQL = "UPDATE Brugerliste SET Visited = 'true' WHERE BrugerID = " & brugerId adoCon.Execute(SQL)
Session.Timeout = 60 Response.Redirect"Velkomstside.asp?Brugernavn=" & BrugernavnDB End If End If
Set adoCon = Nothing Set strCon = Nothing Set rsCheckUser = Nothing Session("blnIsUserGood") = False Response.Redirect"Ingen_adgang.htm" %>
Som du kan se har i din første SQL sætning tilføjet "BrugerID" der hvor du udvælger fra databasen. Hvis brugeren er 'ok' opdateres hans profil med tekststrengen "true" i feltet visited.
Jeg har desuden fjernet de 3 linier hvor du sætter = nothing inde i if-sætningen...der er ingen grund til at gøre det flere gange.
..du bør måske nok også lukke din connection og dit recordset også.
Måske skal man slet ikke bruge SQL her. Metoden kunne være:
Åbn tabellen Brugerliste. Find den post hvor Brugernavn = 'BrugernavnDB'. Gør denne post klar til redigering. I denne post sættes feltet Visited='true'. Posten opdateres. Tabellen lukkes.
pfp -> Nej hvor er jeg dum. (Vent et øjeblik, mens jeg går ud og hænger mig ...)
- Så, nu er jeg tilbage.
Din kode var korrekt. Men jeg spottede en lille fejl i din sidekommentar ("Jeg har desuden fjernet de 3 linier hvor du sætter = nothing inde i if-sætningen...der er ingen grund til at gøre det flere gange"). Linjerne efter en Redirect vil vistnok ikke blive udført, derfor lod jeg stædigt de 3 linjer stå. Desværre kom jeg derved til at lukke adoCon før dine to nye linjer.
Jeg har spildt både din og min tid, hermed min uforbeholdne undskyldning - læg et svar! Jeg er virkelig glad for løsningen.
Jeg vil nok gøre koden mere elegant, for du har da ret i at det er dumt at skrive de samme 3 linjer mere end én gang.
Intet at undskylde, jeg kender selv kun alt for godt de der små dumheder man bare ikke ikke lige kan få øje på.
Hermed et svar.
/pfp
Synes godt om
Ny brugerNybegynder
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.