[SQL] Automatisch verwijderen van niet geactiveerde accounts

Pagina: 1
Acties:

  • emus
  • Registratie: Januari 2004
  • Laatst online: 04-01-2022
Hallo mensen, ik beraad me weer eens tot het machtige kennisforum xD waar ik vele problemen heb kunnen oplossen door alleen de search al _/-\o_

Echter heb ik nu alweer een probleem aangezien mijn tutorial offline is gehaald op phpfreakz omdat ze aan het opruimen zijn :/ .. ik heb de search gebruikt echter zonder resultaat O-)

Probleem:
Na vele dagen ben ik op zover gekomen dat mensen kunnen inloggen na het activeren van hun account. Nu wil ik dat tijdens deze inlog proces ook meteen dat accounts die niet zijn geactiveerd verwijderd worden uit mijn database.

In mijn members tabel (mysql) heb ik een cel met reg_date yyyy-mm-dd die na het activeren op 0000-00-00 wordt gezet zodat de geactiveerde accounts niet verwijderd worden.

Waar ik dus naar toe wil is de volgende: een sql query die de niet geactiveerde accounts verwijdert aan de hand van de huidige datum en de registratie datum waarbij het verschil tussen deze twee groter is dan 7 dagen.

Het gaat hier puur om de query, die deze entries voor mij kan verwijderen. . Ik weet dat dit een simpele query was, maar ik kom er niet meer op en mijn mooie tutorials is weg :'(

?? DELETE FROM tabel WHERE ......?

Wie helpt mij 8)

  • MIster X
  • Registratie: November 2001
  • Laatst online: 25-09 21:57
Waarom zet je je reg_date na activeren op 0? IMO is dat niet erg logisch. Ik zou die datum gewoon bewaren en een kolom activated maken (met een boolean of eventueel een datum). Waar je in ieder geval naar op zoek bent, is iets als:
SQL:
1
2
WHERE TO_DAYS(NOW()) - TO_DAYS(`reg_date`) > 7
    AND `activated` ...

Voor naslag moet je trouwens op http://dev.mysql.com/ zijn.

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
Ik zou die registratiedatum juist op 0 zetten bij het registreren, en bij het activeren krijgt 'ie de datum van de dag waarop de gebruiker zijn/haar account geactiveerd heeft.

SQL:
1
DELETE * FROM gebruikers WHERE regdate = 0


;)

Dit is trouwens een reader welke bij ons op school gebruikt wordt, wellicht een goede vervanger voor je tutorial ? Staat alle basiskennis in die je nodig hebt. Verder kun je het wel af met de site die degene boven mij gegeven heeft.

[ Voor 39% gewijzigd door mcdronkz op 22-12-2006 09:01 ]


  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

mcdronkz schreef op vrijdag 22 december 2006 @ 08:59:
Ik zou die registratiedatum juist op 0 zetten bij het registreren, en bij het activeren krijgt 'ie de datum van de dag waarop de gebruiker zijn/haar account geactiveerd heeft.

SQL:
1
DELETE * FROM gebruikers WHERE regdate = 0


;)
Dat is niet zo handig; want dan weet je nog niet hoelang dat account nou al niet geactiveerd is ;)

  • EdwinG
  • Registratie: Oktober 2002
  • Laatst online: 30-11 19:23
mcdronkz schreef op vrijdag 22 december 2006 @ 08:59:
Ik zou die registratiedatum juist op 0 zetten bij het registreren, en bij het activeren krijgt 'ie de datum van de dag waarop de gebruiker zijn/haar account geactiveerd heeft.

SQL:
1
DELETE * FROM gebruikers WHERE regdate = 0
Nadeel van deze methode is dat je net aangemaakte accounts ook verwijderd. Dus ook van iemand die zich 3 minuten geleden heeft aangemeld, en de bevestigings e-mail nog niet heeft ontvangen.

edit:
Net als hier boven mij gezegd wordt dus.

[ Voor 4% gewijzigd door EdwinG op 22-12-2006 09:22 ]

Bezoek eens een willekeurige pagina


  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
Oh ja, natuurlijk. Stom van me.

Anyway, dan zou ik iets doen met een apart veld genaamd "activated", zoals al eerder gesuggesteerd (correct woord ?) in dit topic.

  • EdwinG
  • Registratie: Oktober 2002
  • Laatst online: 30-11 19:23
Een kolom om aan te geven of een account actief is, kan bovendien ook gebruikt worden om een account tijdelijk uit te zetten, bijvoorbeeld bij de aanvraag van een nieuw wachtwoord. (gebruik dan wel een waarde dat het account niet per ongeluk verwijderd wordt tijdens het opnieuw aanvragen van een wachtwoord.)
gesuggereerd :)

Bezoek eens een willekeurige pagina


Verwijderd

Wat je dus kan doen is een double check zoals ik wel es op site doe

Als de activated op 0 staat en de reg datum is ouder dan bijv 24 uur dan verwijderen

Zo worden de niet geactiveerde members die zich nog geen 24 uur geleden hebben aangemeld gewoon bewaard

  • emus
  • Registratie: Januari 2004
  • Laatst online: 04-01-2022
MIster X schreef op vrijdag 22 december 2006 @ 01:29:
Waarom zet je je reg_date na activeren op 0? IMO is dat niet erg logisch. Ik zou die datum gewoon bewaren en een kolom activated maken (met een boolean of eventueel een datum). Waar je in ieder geval naar op zoek bent, is iets als:
SQL:
1
2
WHERE TO_DAYS(NOW()) - TO_DAYS(`reg_date`) > 7
    AND `activated` ...

Voor naslag moet je trouwens op http://dev.mysql.com/ zijn.
hmm, je hebt gelijk met het zette van de reg_date op 0.. ik ga het in ieder geval veranderen :+

  • emus
  • Registratie: Januari 2004
  • Laatst online: 04-01-2022
Yay.. ik heb het gevonden :o

voor de mensen die het willen weten, ik was op zoek naar dit:

DELETE FROM members
WHERE status = 0
AND reg_date < DATE_SUB( NOW(), INTERVAL 7 DAY

  • Kuhlie
  • Registratie: December 2002
  • Niet online
Prachtig, alleen de naamgeving is niet geweldig. 'status' kan van alles betekenen. Als het nu een enum('geregistreerd', 'geactiveerd') was, ok, maar nu is het alleen voor jou duidelijk :)
Pagina: 1