Pagina 1 van 1

Query voor opschonen ledenlijst

Geplaatst: 25 dec 2012, 23:49
door Wijo
  • Adres van je forum: http://www.bijenhouden.nl http://
    Event. modificaties op je forum:
    Wanneer ontstond het probleem?
    phpBB versie: 3.0.7.-PL1


    Heb je onlangs iets veranderd aan je forum?
    Wat is het probleem?
Ik heb een behoorlijke opschoning gemaakt in onze ledenlijst. Ik zoek nu nog hoe ik een zoekopdracht kan invoeren voor deelnemers, die zich op een bepaalde datum hebben geregistreerd, geen berichten hebben geplaatst, en hun laatste activiteit na bijvoorbeeld een week na registratiedatum is geweest. Ik wil deze deelnemers verwijderen uit de deelnemerslijst. Kan iemand een daarvoor een querie voor mij maken?

Re: Querie voor opschonen ledenlijst

Geplaatst: 26 dec 2012, 00:02
door Pola
Nee, het is beter om niet rechtstreeks in de database zaken te verwijderen door middel van MySQL queries. Veel gegevens zijn namelijk gekoppeld in meerdere tabellen. Je kunt niet zomaar alleen leden verwijderen uit de users tabel.

Ik twijfel even of 3.0.7-PL1 dezelfde mogelijkheden heeft als de laatste phpBB3 versies wat betreft het automatisch opruimen van leden.
Controleer eens of je het volgende kunt doen:
  • Beheerderspaneel
  • GEBRUIKERS EN GROEPEN
  • Gebruikers automatisch opruimen
  • Kies bij "Geregistreerd:" Voor en de datum waarvoor ze geregistreerd moeten hebben
  • Kies bij "Laatst actief:" Voor en de datum waarvoor ze het laatst actief geweest moeten zijn
  • Kies bij "Berichten:" Gelijk aan en "0".
  • Kies bij "Deactiveren of verwijderen:" Verwijder
  • Klik op Bevestig
Als je die mogelijkheden nog niet hebt, is het beter eerst je forum te updaten.
Welke stijl gebruik je en heb je MOD's geinstalleerd op je forum?

Re: Querie voor opschonen ledenlijst

Geplaatst: 26 dec 2012, 00:18
door Wijo
Hallo Pola.

bedankt voor je snelle reactie.

De manier zoals jij die beschrijft spreekt me niet aan. De data zijn voor de verschillende deelnemers te verschillend. Ik moet het volgens mij echt met een querie in de database doen. Ik had nu ook al een behoorlijke opruiming gehouden in de database: deelnemers, die 0 berichten hadden en voor 31-12-2010 niet meer het forum hadden bezocht. Ik heb dat in phpbb_users gedaan.
Er zijn deelnemers, die zich ooit een keer geregistreerd hebben, geen berichten hebben geplaatst, maar toch het forum wel bezoeken en dus de berichten lezen. Deze deelnemers wil ik houden. Ik wil alleen de deelnemers nog verwijderen, die zich wel geregistreerd hebben maar daarna eigenlijk het forum niet meer bezocht hebben.

Re: Querie voor opschonen ledenlijst

Geplaatst: 26 dec 2012, 00:55
door Pola
Zoals ik aangaf kunnen de leden nog in diverse andere tabellen voorkomen.
Ze zullen zeker in de phpbb_user_group table staan.
Verder kan het dat ze voorkomen in
phpbb_forums_track
phpbb_forums_watch
phpbb_privmsgs
phpbb_privmsgs_to
phpbb_topics_track
phpbb_topics_watch
phpbb_zebra


Om leden te zoeken die langer dan 90 dagen geleden zich geregistreerd hebben, later dan een week na de regsitratie niet meer op het forum geweest zijn en geen berichten geplaatst hebben, kun je de volgende query gebruiken:

Code: Selecteer alles

SELECT user_id, username, user_posts, FROM_UNIXTIME(user_lastvisit), FROM_UNIXTIME(user_regdate), user_type FROM phpbb_users 
WHERE user_posts = 0 AND user_type < 2 AND (DATEDIFF(NOW(), FROM_UNIXTIME(user_regdate)) > 90) AND (DATEDIFF(FROM_UNIXTIME(user_lastvisit), FROM_UNIXTIME(user_regdate)) <= 7)
ORDER BY user_regdate ASC
Als user_type 1 is, betekent dat dat het gebruikersaccount niet geactiveerd is. Als user_type 0 is, dan is het een gewoon geactiveerd gebruikersaccount.
Leden die het forum helemaal niet bezocht hebben, hebben een user_last_visit datum van 1 januari 1970 (de start van de UNIXTIME tijdtelling).

Re: Querie voor opschonen ledenlijst

Geplaatst: 26 dec 2012, 09:34
door Wijo
Bedankt Pola voor de uitleg en de querie.

--

Op die manier pik ik er nog 165 leden uit, waarvan ik de meesten er uit wil gooien. Zou je me nog kunnen uitleggen hoe ik dat het beste kan doen?
Berichten samengevoegd
- Ger

Re: Query voor opschonen ledenlijst

Geplaatst: 26 dec 2012, 11:14
door John P
Maak van de query

Code: Selecteer alles

SELECT username FROM phpbb_users 
WHERE user_posts = 0 AND user_type < 2 AND (DATEDIFF(NOW(), FROM_UNIXTIME(user_regdate)) > 90) AND (DATEDIFF(FROM_UNIXTIME(user_lastvisit), FROM_UNIXTIME(user_regdate)) <= 7)
ORDER BY user_regdate ASC
Je hebt nu een lijstje met gebruikersnamen die je kan gebruiken in het tabblad gebruikers automatisch opruimen, er van uitgaande dat je WHERE statement klopt.

Re: Query voor opschonen ledenlijst

Geplaatst: 26 dec 2012, 11:57
door Wijo
Hallo John.

Bedankt. Op deze manier kan ik de deelnemers aanvinken en verwijderen.