<form name="frmDeleteProfile" method="post" action="/admin/showallusers.asp"> <input type="button" value="Ja, slet denne profil" onclick="if(confirm('Er du sikker på at du vil slette denne profil for altid?')) frmDeleteProfile.mode.value='delete'; frmDeleteProfile.submit();"> </form>
Giver flg. fejl:
Fejl: frmDeleteProfile.mode er nul eller ikke et objekt. Hvorfor kan jeg slette denne bruger? Jeg får bare den lille gule trekant i nederste venstre hjørne med denne fejl.
Det troede jeg også, og sådan laver jeg det normalt også. Men jeg tror det er denne her, der menes: frmDeleteProfile.mode.value='delete';
Meningen er, at der kommer en msgbox, hvor man bekræfter eller annullerer sletningen af profilen. Det er en kammerat, der lavede det i sin tid. Kan det laves med noget vbYes ....
Hvis du gider at lave noget, hvor det hele slettes fra profilen, pånær ID og username, sætter jeg gerne point op :o)
På den form du har vist i spørgsmålet er der ikke et hidden felt der er kun en knap. Når man tyrkker på knappen spørger den:
Er du sikker på at du vil slette denne profil for altid?
Så har man mulighed for at tykke på OK/Cancel. Tykkes Ok sætte frmDeleteProfile.mode.value til 'delete', men der er ikke noget felt der hedder mode derfor siger at frmDeleteProfile.mode er null.
din form bør se sådan her:
<form name="frmDeleteProfile" method="post" action="/admin/showallusers.asp?user=<%=Request.QueryString("user")%>"> <input type="hidden" value="cancel" name="mode"> <input type="button" value="Ja, slet denne profil" onclick="if(confirm('Er du sikker på at du vil slette denne profil for altid?')) frmDeleteProfile.mode.value='delete'; frmDeleteProfile.submit();"> </form>
du endda overvej om knappen ikke kun skal submitte formen hvis man vælger Ok. Så vil knappens kode være:
<input type="button" value="Ja, slet denne profil" onclick="if(confirm('Er du sikker på at du vil slette denne profil for altid?')) { frmDeleteProfile.mode.value='delete'; frmDeleteProfile.submit();}">
>>Hvis du gider at lave noget, hvor det hele slettes fra profilen, pånær ID og username
Ja (men det bliver ikke før i eftermiddag), har du et felt i user tabell som angiver om en bruger er aktiv eller sletet? Er der flere tabeller den skal slette fra?
Jeg vil gerne lade (f.eks.) det fulde navn, username og ID blive tilbage i DB, fordi man skal kunne se hvem der har skrevet et debatindlæg, hvem der har skrevet en artikel etc. Jeg synes det er noget rod og sjusk, når der f.eks. står "Forfatter: Profil slettet", eller "Indlæg besvaret af: Profil slettet". Så vil jeg hellere have, at der står "Forfatter: Steen Hansen (profil slettet). Man skal kunne se navnet på forfatteren, men man skal heller ikke være i tvivl om, at der er ikke nogen informationer at hente på denne person.
Ja, admin skal kunne deaktivere en bruger. Du ved selv der kan være mange årsager til at man ønsker at deaktivere en person. Sletning og deaktivering af en bruger er stort set det eneste jeg mangler i admin-modulet.
Jeg benytter dolog.asp, som danner cookies, hvis brugeren ønsker at gemme sine logon-informationer. Funktionen indeholder mulighed for få husket user/pwd, at blive logget på automatisk, eller man kan fravælge sig de muligheder og manuelt indtaste sine logon-informationer. Her bør jeg f.eks. kunne tjekke for, om RS("deactivated") = 1. Er det tilfældet, redirectes brugeren til en side (deactivated.asp), hvor der står "Din profil er deaktiveret. Mener du, at dette er en fejl, så send en besked til administrator ......". Samtlige data på brugeren skal blive liggende i DB, men brugeren skal bare ikke have mulighed for at logge ind, hvis vedkommende er deaktiveret.
Den tror jeg ikke volder de store problemer, det har jeg lavet før for et par år tilbage. Problemet lige nu er, at få slettet de unødige oplysninger på en profil, så det ikke fylder unødigt op i DB, men der skal dog ligge et navn tilbage, så man kan se forfatter etc. Og når man ønsker at slette en profil, skal man så lige have den ekstra fortrydelses-mulighed, så man ikke uforvarende får slettet en profil. Jeg har set flere steder, at man får slettet det, som man peger på, uden at få mulighed for at be/afkræfte sletningen. Ikke så smart :o)
Indtil videre er der kun sorteringen af visningen, der også skal slettes fra backendusersid og backendusersascdesc (se http://www.eksperten.dk/spm/696337). Navnene er ikke så gode, de er ikke så sigende. Jeg valgte dem bare lige for at kunne holde dem adskilt fra de andre tabeller i DB :o)
Det var noget af en smøre, men jeg håber du forstår mine intentioner. Når man skærer ind til benet, er der kun 3 faktorer at tage hensyn til:
1. Slet irrelevante oplysninger fra brugeren, når en profil slettes. På den måde har jeg stadig navnet på debatøren/forfatteren etc. Når RS("deleted") = 1, kan man sætte (profil slettet) bagefter. 2. Der skal lige angives en mulighed for at fortryde sletningen af profilen. 3. Der skal selvfølgelig også ryddes op i backendusersid og backendusersascdesc på brugerprofilen. Der er ingen grund til, at unødige data fylder op, så skal de bare slettes.
Hvis du vil lade fulde navn, username og ID blive tilbage i DB så skal du ikke lave en delete SQL sætning for den sletter hele posten. Så skal du lave en UPDATE SQL og sætte de felter der skal "slettet" til Null som betyder tom.
Så denne:
If Request.Form("mode") = "deleteuser" Then
Conn.Execute "DELETE password, middlename, lastname, createinfo .... FROM backendusersitg WHERE username = '" & Request.QueryString("user") & "'" Conn.Close
Hvis du også vil skrive (profil slettet) kunne du havde en kolonne i backendusersitg tabellen som som angiver som profilen er aktiv eller slettet. Så vidt jeg kan se har du kolonnen "deactivated". Den bør også bruges så folk ikke kan logge ind på en slettets bruger profil hvis man sikre sig at det kun er aktive profiler som kan logge ind. Hvis deactivated skal sættes til 1 når en bruger slettes skal sidste SQL udvides:
Men der skal umiddelbart ikke slettes i den backendusersid og backendusersascdesc tabellerne da de gælder for alle brugerne. Det som er bruger unikt ligger i backendusersitg og der kan de 2 kolonner sættes til null. Du må rette mig hvis jeg tager fejl.
Der var et par kolonner der skulle med: deleted=1 og chooseview, xChooseorder
eagleeye, jeg tror jeg har sovet i timen, for den visning man skulle kunne sortere, skulle være unik for hver enkelt bruger. Denne funktion kan jo genbruges, og skal også bruges til sortering af f.eks. artikler. Her kommer til at være flere hundrede, og så kan man have behov for at få dem listet efter oprettelsesdato, emne el.lign. Så det skal ikke være én indstilling, der gælder for alle, men en indstilling, som den enkelte bruger kan foretage. Kan vi få rettet det til? Jeg ved jeg snart beder om mere, end man kan sige er rimeligt, men jeg fik desværre ikke testet det af på flere brugerprofiler.
SLUDDER, du har ret, man kan jo bare nulstille chooseview og xChooseorder.
backendusersid og backendusersascdesc indeholder jo bare de muligheder, der er at vælge imellem, så den er god nok. Troede lige hele skidtet skulle til at laves om :)
Forøvrigt, så skal brugeren heller ikke trækkes ud i showallusers.asp (oversigtssiden af brugerne med sorteringen). Men det er vel bare at føje lidt til SQL-forespørgslen ... AND deleted <> 1
Til dette da der overføres "delete" fra formen og ikke "delteuser":
If Request.Form("mode") = "delete" Then
>>Forrøvrigt, så skal brugeren heller ikke trækkes ud i showallusers.asp >>(oversigtssiden af brugerne med sorteringen). >>Men det er vel bare at føje lidt til SQL-forespørgslen ... AND deleted <> 1
Ja det er bare at tilføje det eller.. AND deleted = 0 Hvis kolonnen er sat til 0 for en aktiv bruger
Navnet på den som skal slettes skal sættes ind som vist med ?user=xxxx men spørgsmålet er om det skal være Request.QueryString("user") eller om navnet kommer fra et recordset, hvis man kan vælge et slette en bruger via en lang liste?
Jeg har slet-knappen som den fra 03/04-2006 20:54:03.
Jeg har før lavet det på den måde, som du beskriver i 04/04-2006 22:00:01. Men jeg kan ikke finde den liste og den kode, så jeg tog det ovenstående fra et andet script, hvor en bruger kan slette sin egen profil. Vil det være mere hensigtsmæssigt at lave det som vist i 04/04-2006 22:00:01?
Jeg har været væk fra VB-scripting temmelig længe, og når man så ikke lige kan finde det frem, som man ellers har lavet, og som virker fint - ja, så kan man virkelig se hvor rusten man er blevet. Det er faktisk alt hvad jeg laver, som jeg skal have hjælp til igen. Jeg er MEGET glad for din indsats, eagleeye :o)
Ok, nu er den ved at være der. Men nu forsvandt den brugerprofil, som IKKE er blevet slettet. Når jeg kigger i DB, står der ud for hhv. den ene og den anden profil:
deleted NULL deleted 1
Men begge er forsvundet fra listen i showallusers.asp :/
ok, det er måske noget med hvordan Null håndteres i databasen. Har du mulighed for at sætte tallet 0 ind i deleted og sætte det defautl til 0?
Du kan prøve at rette SQL sætningen til:
SQL = "SELECT userID, username, firstname, middlename, lastname, lastseen, created, chooseview, xChooseorder FROM backendusersitg WHERE (deleted is null or deleted = 0) ORDER BY " & qOrderBy
>> en parantes rundt om en .... hvad kan man kalde det? Betingelse? :) Jo det kan man og man kan ikke undvære det hvis der mange betingelser på, og man skal huske at AND udføres for OR så det har stor betyding hvor man sætte () :)
Hvis de skal slettes dem permanent så skal du faktisk bruge den SQL sætning du viste i sprøgsmåls teksten:
Conn.Execute "DELETE FROM backendusersitg WHERE username = '" & Request.QueryString("user") & "'"
eagleeye, jeg ved ikke om det konflikter med reglerne, hvis jeg beder dig kigge på http://www.eksperten.dk/spm/700687. Men du er efterhånden så godt inde i det jeg er i gang med, at du hurtigt kan skaffe dig overblikket. Hvis du har tid og lyst, håber jeg du kigger på det. Hvis ikke, forstår jeg det også godt; du har allerede lavet et stort arbejde :o)
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.