När en användare raderar sitt konto, kan du istället för att ta bort posten i databasen, uppdatera den med exempelvis "Oregistrerad användare" och ser till att man inte kan logga in med det kontot.
Mvh,
14 svar · 306 visningar · startad av G8
Hej
Har snickrat pa ett litet projekt ett tag nu och kom paa en sak igar som jag inte riktigt vet hur jag ska losa...
Sidan bestar bl.a. av ett forum dar man maste vara inloggad for att kunna skriva nya inlagg, alla kan lasa dock.
Man har mojligheten som anvandare att radera sin egna profil, ta bort fran databasen alltsa, och det ar da problemet uppstar.
I forumet star ju namnligen vem som har skrivit ett visst inlagg, startat en ny trad etc. och om den personen senare raderar sin profil sa uppstar problemet med att det inte gar att hitta en raderad anvandare som skrivit ett visst inlagg.
Either EOF or BOF is true or the current record has been deleted
eller natt sant spottar den ut sig, vilket ar helt forstaligt ju.
Det jag undrar ar om det ar nagon som har en smart losning pa detta problemet?
Jag tankte kanske skapa en tabell till dar man dublicerar den info om anvandaren som ar viktig, ID, Nick etc. och som inte raderas da man raderar en anvandare. Eller kanske helt enkelt ha en kolumn till i tabellen users som indikerar om kontot har blivit raderat, men da fortsatter ju databasen att vaxa annu mer..
Nan som har nagra forslag?
Mvh
//G8
När en användare raderar sitt konto, kan du istället för att ta bort posten i databasen, uppdatera den med exempelvis "Oregistrerad användare" och ser till att man inte kan logga in med det kontot.
Mvh,
@nders:
Ja, det skulle ju vara en losning, men det ar ju kul om man fortf. kan se vem som skrev inlagget. Kan kanske bli struligt om det skulle vara nagon som registrerar sig med samma nick sen dock... hmm, kanns lite klurigt det har... Jag menar, det finns ju en del uppenbara losningar, galler bara att hitta den basta... ;)
I så fall, så tycker jag du ska göra så här:
I medlemstabellen lägger du till ett fält (Ja/nej-fält eller tal eller något sånt), som kan tänkas heta Active. En vanlig medlem har True eller 1, och en 'avregistrerad' har False eller 0.
Se också till att vid en avregistrering tömma övriga informationsfält om medlemmen.
Du kan alltid välja att visa upp medlemmens namn på ett annat sätt än övriga, kanske en liten stjärna efter, om inläggsförfattaren är avregistrerad.
Mvh,
Ja, det skulle ju var en losning... rensa allt forutom det viktigaste som kommer att anvandas senare... :)
Pa sa satt hindrar jag ju axa, om jag vill, andra anvandare att anvanda sig av samma nickname som den avregistrerade da det kommer sta kvar i DB'n... :)
Jag föreslår att du gör som så att du har en kolumn i databasen som heter "registrerad". När man blir medlem så fylls det i "ja" i den kolumnen och när man tar bort sin användare fylls det i "nej" och lösenordet och annan info raderas... Sen på den sidan där medlemmarnas sidor visas kollar du bara om kolumnen "registrerad" är lika med ja eller nej.
If RecSet("registrerad") = "nej" Then%>Medlemmen finns inte på denna community, eller nått
Else
End If
Sen kan du ju låta alla poster i forumet och det vara kvar. Detta är bara vad jag skulle gjort men det finns säkert någon bättre lösning :)
Hej igen
Tänkte nu testa att göra så att man raderar allt som tillhör personen som ska tas bort förutom id, smeknamnet... Verkar inte gå så bra dock..
Jag får den att ta bort användarna, men det tar bort ALLT som tillhör den profilen :( Jag vill ju behålla en del...
stm = "DELETE users.username, users.password, users.email, users.age, users.city, users.icq, users.info, users.foruminlagg, users.datum FROM users where ID = " & UID
rs.open stm, connection,3,3
set rs = nothing
Connection.Close
Å förresten, varför kan jag inte köra rs.close i samband med denna koden?
Error Type:
ADODB.Recordset (0x800A0C93)
Operation is not allowed in this context.
Tacksam för hjälp ang. båda punkterna
Mvh
G8
UPDATE tabellen SET fält1 = '', fält2='', fält3='' WHERE ID = 2
Mvh,
Oki, ska testa med update @nders, som vanligt svarar du lika snabbt som en kobra hugger... :birp eller nån annan lam liknelse ;)
Ang. rs.close så hade jag rs.close innan rs = nothing. men men, behöver jag inte använda RecordSet öht så gör jag ju inte det :)
Jag fixade lite. Byt den koden du postade mot:
stm = "UPDATE USERS SET password='', email='', age=0, city='', icq=0, info='', datum=#1970-01-01# WHERE ID = " & UID
Connection.Execute stm,,128
Connection.Close
Jag tog bort username och foruminlagg ur frågan, eftersom jag anser att de skall vara kvar. Jag har gissat lite på datatyper också, så du kanske får rätta något.
Mvh,
Dels så är det skoj att hjälpa till och dels har jag inte så mycket för mig.
Jag ber om ursäkt om jag ger dig för mycket hjälp. ;)
Mvh,
hehe... jo, det är ju tack vare hjälpsamma personer som du själv som man börjar få lite häng på det här med asp.
Uppdateringen av tabellen funkar perfa nu iaf :e
Tack än en gång @nders
Bare hyggelig at du er glad i jobben min! :bire
jag gjorde bara
if rs.eof then
"användaren finns inte"
else
' all annan kod