webForumDet fria alternativet

Problem med borttagna anvandare

ASP

14 svar · 306 visningar · startad av G8

Medlem sedan jan. 20011 213 inlägg
Frågan#1

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

Medlem sedan juni 200032 967 inlägg
#2

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,

Medlem sedan jan. 20011 213 inlägg
#3

@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... ;)

Medlem sedan juni 200032 967 inlägg
#4

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,

Medlem sedan jan. 20011 213 inlägg
#5

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... :)

Medlem sedan juli 2002549 inlägg
#6

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 :)

Medlem sedan jan. 20011 213 inlägg
#7

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

Medlem sedan juni 200032 967 inlägg
#8
  1. Du ska inte använda DELETE (DELETE tar bort hela poster i databasen), utan UPDATE.
UPDATE tabellen SET fält1 = '', fält2='', fält3='' WHERE ID = 2
  1. Du ska inte använda recordsets överhuvudtaget. Du ska bara exekvera frågan. Felmeddelandet får du nog för att du redan satt objektet till Nothing.

Mvh,

Medlem sedan jan. 20011 213 inlägg
#9

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 :)

Medlem sedan juni 200032 967 inlägg
#10

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,

Medlem sedan jan. 20011 213 inlägg
#11

Tack, men du behöver ju inte göra jobbet åt mig ;)

Eller är du sysslolös? ;)

//G8

Medlem sedan juni 200032 967 inlägg
#12

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,

Medlem sedan jan. 20011 213 inlägg
#13

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

Medlem sedan juni 200032 967 inlägg
#14

Bare hyggelig at du er glad i jobben min! :bire

Medlem sedan juni 20019 519 inlägg
#15

jag gjorde bara
if rs.eof then
"användaren finns inte"
else
' all annan kod

250 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)