Hoe records die niet worden weergegeven op site, verwijderen uit database?

Status
Niet open voor verdere reacties.

deBrock

Nieuwe gebruiker
Lid geworden
9 dec 2013
Berichten
4
Hallo,

Ik ben bezig met een website
heb een stukje code geschreven (top 5) waar leden een link kunnen plaatsen
hier staat een DESC LIMIT 5 op.

mijn vraag is:
hoe kan ik oude opgeslagen links die niet worden weergegeven op de site, uit de database verwijderen?
is dit ook mogelijk met cronjobs?

Met vriendelijke groet,
R de Brock
 
Welkom op Helpmij :)

Alles is mogelijk in een cronjob, dat is in feite gewoon een PHP script welke je zelf in elkaar zet.
Zorg wel dat je die cronjob buiten je webroot hebt opgeslagen zodat iemand niet aan de hand van de url dit script uit kan voeren.

Je zou het met een subquery kunnen doen
[sql]
DELETE FROM tabel
WHERE id NOT IN (
SELECT
id
FROM
tabel
ORDER BY
datum_ingevoerd DESC
LIMIT 5
)[/sql]
 
Laatst bewerkt:
Dankje,
wat betekent het id NOT IN? de records die niet gebruikt worden?

gebruik nu ook voor sommige dingen cronjobs
en heb het cronjob bestand dan in cgi-bin gezet met dit in de .htacces:

<Location ../cgi-bin>
order deny,allow
deny from all
allow from 127.0.0.1
</Location>

moet voldoende zijn denk ik toch..
 
Vooraf; je hoeft deze records niet weg te halen. Meestal kom je er na een paar weken achter dat je toch eigenlijk de oude records had willen behouden omdat je een nieuwe feature hebt bedacht waarbij dat ******* handig zou kunnen zijn. Het kost gen performance om ze te bewaren en qua opslag kost het je misschien honderd bytes per record dus...

Het wissen kun je cia ene cronjob doen, maar omdat het om een handjevol records gaat wat geen enkel gevolg whatsoever heeft voorwatdanook, zou ik gaan voor een doodsimpele gargbage cleaner: genereer een willekeurig getal tussen 1 en 1000 en als dat getal hoger is dan 9998 dan draai je de query die the devil je gaf (wel toepasselijk overigens in dit gevalm NOT IN() kan link zijn).

HEt NOT IN gedeelte kijkt in de records die je onderzoekt de opgegeven waar NIET IN de verzameling zit

WHERE a NOT IN (1,2,3)

is waar als a niet gelijk is aan 1 en niet aan 2 en niet aan 3.
De verzameling 1,2,3 kan ook door een query worden samengesteld, vandaar NOT IN(SELECT ..)


EN niet vergeten dat datums oplopen naarmate ze nieuwe zijn, dus

ORDER BY
datum_ingevoerd DESC

en niet ASC.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan