Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [SQL] topics verwijderen (https://forum.scholieren.com/showthread.php?t=1691152)

Christian 16-05-2008 23:27

[SQL] topics verwijderen
 
Ik ben bezig met het verschonen van een forum, en om tijd te besparen met het klikken van alle 87.332 topics dacht ik het volgende:

Code:

DROP * FROM `phpbb_topics` WHERE topic_id =>95;
wat klopt hier niet aan? want hij doet het niet. :s

Triloxigen 17-05-2008 14:54

Het is niet drop * maar delete

Ik kan het ook erg afraden want daarmee verwijder je dus alleen wat databasetopics, maar niet alle berichten in die topics en alle andere zaken daaromheen.
Anders gezegd, je schiet er niks mee op en je database wordt een puinhoop.
Kun je dat niet gewoon via admin doen?

Christian 17-05-2008 15:06

nope via de admin kan ik niet zo snel de users eruit vissen, hij is volgespamt. en het aantal users zijn er onderhand 3,099 waarvan er maar 50 niet zo vulgair waren.

eigelijk wil ik dat ding verschonen, in de tussentijd gebruikers niet toe laten staan zich aan te melden (welke idioot stelt dan ook in dat iedereen mag posten) maar ook geen mail ontvangen dat de beheerder dat moet doen omdat de bots dan jou mailadres krijgen, vervolgens krijg je een error omdat je antwoordadres niet bestaat en zit je mailbox rete vol.

is er nog een andere manier om een forum clean te krijgen op een inventieve manier?

Osmoian 18-05-2008 01:56

Wil je alle topics verwijderen? Is het dan niet makkelijker om eerste alle forums te verwijderen (in het admin panel) en vervolgens weer opnieuw aan te maken?

Is alweer een tijd terug dat ik met phpBB heb gewerkt maar dit zou toch moeten werken?

Christian 18-05-2008 12:40

ja, ik doe het volgende, ik ga instellen dat gebruikers eerst goed gekeurd moeten worden door de beheerder (vervolgens tientallen spam dingen krijgen in me box) de topics die ik wil houden verplaatsen, de forums verwijderen, de gebruikers op de eerste 50 na verwijderen, forum updaten (cq. spamfilter) en dat ding weer aanslingeren.

danku.

deadlock 18-05-2008 23:59

Waarom drop je de hele table niet gewoon en begin je niet opnieuw

Triloxigen 19-05-2008 10:19

Dan kun je beter gewoon alle tables truncaten :o

marco_nogwat 19-05-2008 15:40

Ik zie dat je een phpbb forum hebt, ik heb zelf een phpbb 2.x board
om spam gebruikers te verwijderen: http://starfoxtj.phpbbhelp.org/phpBB/toolkit/index.php
Verder: http://www.phpbb.com/community/viewtopic.php?t=427852
ik heb zelf een mod geinstalleerd waar men een extra veld in moet vullen bij het registreren, werkt zeer goed:)

deadlock 20-05-2008 11:46

Er zit toch standaard een vrij goede CAPTCHA in phpBB?

Luitzen 21-05-2008 11:57

Kan je niet phpmyadmin gebruiken om de hits uit je database te verwijderen, lijkt mij makkelijk dan in de SQL gaan kloten.

Triloxigen 21-05-2008 22:56

Citaat:

Luitzen schreef: (Bericht 27577235)
Kan je niet phpmyadmin gebruiken om de hits uit je database te verwijderen, lijkt mij makkelijk dan in de SQL gaan kloten.

Ik denk dat hij die queries ook uitvoerd in phpmyadmin ;)

Christian 22-05-2008 00:09

ik dacht dus, voor een mooie querry uit, om de users die ooit iets nuttigs gepost hebben te behouden inclusief de topics. hoewel de ongesloten topics die toen nuttig waren ook vol zitten met spam. en een verzoek om de gebruikers (geregistreerde bots en spamposters, hebben die een aparte naam?)) te verwijderen.

weet dat delete het een en ander behoudt, en met drop verwijderje daarwerkelijk de rijen. of andersom?

en nu heb ik de bots verwijderd (tijdrovend, view apart instellen, gebruikers die ik wil behouden uitvinken, mezelf alsnog verwijderd, dus nieuw account tevens aan moeten maken, etc) dump ik de nuttige topics die ik kan vinden door per actieve gebruiker maar eens langs te gaan waar ze gepost hebben, in een apart forum, gesloten ed niet zichtbaar. vervolgens was het idee om de overige fora waar dus spambots actief waren (hij stond dus op openbaar, wie dat heeft verzonnen weet ik niet) te verwijderen. nu heb ik de aanmelding via beheerder ingesteld, met een noreply adres om te voorkomen dat mijn adres wordt meegestuurd, welke ze anders ook vervolgens kunnen spammen. echter kan je met directadmin instellen dat een adres als domein@domein.nl wordt doorgelink, nu was het zo dat de server vol stond met zogezegt webmail vol spam etc. moet ik nog iets op verzinnen om het doorlinken schoon te laten verlopen. ) en daarna was het de bedoeling, waar ik bijna ben aangekomen, om het forum helemaal te updaten als ik me ruimte terug heb na het verwijderen van de spam incl. plaatjes. om het spamfilter dus te verbeteren en vanwege de functionaliteit.

tuurlijk zijn er nog andere opties dan bb.

hoe lossen jullie zukke problemen op? naast het feit dat je het ook nog standaard kan deleten en er iets nieuws op dumpen.. het gaat mij hier dan ook puur om het behoud van wat ooit iets was..

en wat trilox zegt, ik voer ze uit in phpmyadmin.
(zat ff na te denken, dacht je anders in oracle of iets luitzen?)

wat een gedoe ook :)

Warsocket 22-05-2008 08:49

Citaat:

********** schreef: (Bericht 27553345)
Het is niet drop * maar delete

Ik kan het ook erg afraden want daarmee verwijder je dus alleen wat databasetopics, maar niet alle berichten in die topics en alle andere zaken daaromheen.
Anders gezegd, je schiet er niks mee op en je database wordt een puinhoop.
Kun je dat niet gewoon via admin doen?

kan toch ook zijn dat er een triger achter hangt. dan wordt met deze query wel ales verwijderd (wat in de trigger staat)

Chimera 22-05-2008 10:35

Citaat:

Warsocket schreef: (Bericht 27583938)
kan toch ook zijn dat er een triger achter hangt. dan wordt met deze query wel ales verwijderd (wat in de trigger staat)

Ja, 'kan', er 'kan' ook een elfje in je server leven die zorgt dat alles helemaal goed komt. Maar 9 van de 10 keer is het onverstandig om direct dit soort acties uit te voeren.

Chimera 22-05-2008 10:38

Citaat:

Christian schreef: (Bericht 27583553)
weet dat delete het een en ander behoudt, en met drop verwijderje daarwerkelijk de rijen. of andersom?

Misschien moet je je even iets in SQL verdiepen.

Delete verwijdert rijen afhankelijk van het filtercriterium dat je meegeeft ("where id=1"), drop verwijderd de HELE tabel, dus niet alleen de inhoud, de tabel zelf is ook gewoon weg, dus zonder die tabel opnieuw aan te maken (en ik vermoed dat je niet weet hoe dat moet) kun je niks meer met je systeem.

Christian 22-05-2008 10:47

misschien moet ik me boek van sql van vorige blok nog een keer doornemen,.

filters, zijn dat die contraints?

Triloxigen 22-05-2008 11:06

Ik raad het je sowieso niet aan dit soort dingen in een database te verwijderen zonder dat je weet hoe het systeem in elkaar hangt.

eXo 01-06-2008 18:44

Citaat:

Christian schreef: (Bericht 27584346)
misschien moet ik me boek van sql van vorige blok nog een keer doornemen,.

filters, zijn dat die contraints?

Nee Chimera bedoelde de 'where clause'. Constrains gebruik je voor domeinen en referentiele integriteit. Volgens mij heeft mySQL dat niet eens? Don't quote me on that.

Met DROP table wijzig je je DDL en verwijder je de hele tabel, afblijven dus. Met DELETE kun je zonodig via de where clause aangeven wat behouden moet blijven en met TRUNCATE maakt hij de hele tabel onherroepelijk leeg en gaan delete triggers niet af, bovendien worden autoincrement velden weer gereset.


Alle tijden zijn GMT +1. Het is nu 22:09.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.