gegevens uit database automatisch verwijderen??

Status
Niet open voor verdere reacties.

Jeboem

Gebruiker
Lid geworden
18 jan 2002
Berichten
178
Hoi allemaal,

Ik heb ff een vraagje over mysql/php.
Ik heb nu gegevens in mijn database staan.
Met een datum er bij wanneer de gegevens in de database zijn geplaats. Nu wil ik graag dat de database automatisch de gegevens naar bv 3 weken verwijderd.
Hoe kan ik dit doen? Ik heb geen idee hoe ik dit moet aan pakken. Iemand van jullie enig idee???
Ik hoef geen heel script. Als ik een beginnetje heb kom ik er (meestal) wel uit.

Alvast bedankt!

Greetz Jeboem
 
Je kan dmv een cronjob een opschoonscriptje laten draaien op de server (moet je wel root zijn) en anders is het een kwestie van een php script laten draaien die verbinding maakt met de Db, de datum opvraagt en de rijen die niet meer mee mogen doen deleten.

t.
 
thx!

in de root kan ik dus niet komen. dus wordt het een php scriptje.

Maar ik heb geen flauw idee hoe ik dat dus moet toepassen. Ik weet dus niet bv hoe ik hem moet laten uit rekenen dat er bv 3 weken voor bij zijn en dat ie hem dan moet verwijderen. Ik ben net een paar maand bezig met php dus zoveel weet ik er nog niet van.
dus mischien dat jij een klein voorbeeldje of zoiets kan maken? of uitleggen hoe het wel moet?

want ik zou het echt niet weten

alvast bedankt
greetz Jeboem
 
Ik heb zelf nog geen ervaring met cronjobs in PHP maar anderen wel:

- http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=388&lngWId=8
- http://www.google.nl/search?sourceid=navclient&hl=nl&ie=UTF-8&oe=UTF-8&q=cron+jobs+php

Verder kun je tijden het beste bepalen met unix timestamps. Deze kun je aanroepen met time(). Maar dit wist je waarschijnlijk al omdat je de tijden al wel hebt opgeslagen in je SQL tabel. Zo niet, kijk dan hier:

- http://nl.php.net/time
- http://nl.php.net/strftime
- http://nl.php.net/setlocale

Om een tijd in te stellen wanneer de "job" uitgevoerd moet worden kun je simpelweg X aantal seconden bij de huidige tijd optellen. Een tabelletje:
<table width="50%" border="1"><tr><td><strong>Seconden</strong></td><td><strong>Tijdformaat</strong></td></tr><tr><td>60</td><td>1 minuut</td></tr><tr><td>3600</td> <td>1 uur</td></tr><tr><td>84600</td><td>1 dag</td></tr><tr><td>592200</td><td>1 week</td> </tr><tr><td>2538000</td><td>1 maand</td></tr><tr><td>30456000</td> <td>1 jaar</td></tr></table>

Ik hoop je hiermee geholpen te hebben :)
 
Laatst bewerkt:
Vaak is het mogelijk om php scripts ook uit te laten voeren op de commandline. En als de host linux/free bsd draait, is het ook mogelijk om cronjobs uit te laten voeren.

Ik gebruik zelf een cronjob om 4* per dag wijzigingen in een database te laten zetten, die ook 4 * per dag aangeleverd worden. Dit doe ik met een simpel bestandje, wat er ongeveer zo uit ziet.

Voorbeeld cronjobs
Code:
00 01 *** ~/runscript.php
00 07 *** ~/runscript.php
00 13 *** ~/runscript.php
00 19 *** ~/runscript.php

Vervolgens kan ik met crontab cronjobs op de gezette tijden het scriptje runnen.
 
Hey,

Van die cronjobs snap ik dus echt werkelijk niks van.
Mijn bedoeling is gewoon dat een advertentie uit de database naar 4 weken wordt verwijderd, en na mij weten kan dat dus ook gewoon in bv de index van die pagina met een klein php scriptje er in.

bv dat hij alle datums langs gaat in de database, en als er dan een datum in staat wat ouder is dan 4 weken dat ie hem er uit pleurt
Maarja... ik heb dus geen idee hoe ik dat dus moet doen.
 
Precies dus zoals je het eigenlijk zegt:

Hoe staan die datums in de database ? Linux / unix timestamp ? Dan is het namelijk makkelijk rekenen.
4 weken is dus 4 * 7 *24 *3600 = 2419200 seconden.


Gaat ongeveer zo:

Code:
$vandaag = time();
$oude_items=$vandaag - 2419200;
$remove="delete  from tabel where datum < $oude_items"; 
$result = mysql_query($remove);

Staat het als datum erin, dan moet je eerst alle records opvragen, met hun datum, en die datum vervolgens omzetten naar linux timstamp http://www.php.net/manual/en/function.mktime.php en dan verder op bovenstaande manier.
 
Laatst bewerkt:
Een script in de index.php plaatsen is in zoverre best te doen als een paar uur of dagen verschil niet uitmaakt, immers er wordt pas gecheckt op het moment dat een bezoeker die pagina laadt, eerder niet.
Maar wil je bijvoorbeeld newsitems in een weblog of artikel database op een bepaalde tijd laten verschijnen dan kun je haast niet om een cron job heen. Immers, als jij precies op 20:00:00 een bericht wil laten verschijnen dan moet er precies op dat tijdstip een bezoeker de pagina laden zodat het bericht geladen kan worden. Die kans is dus behoorlijk klein...
 
jow,

Het werkt in iedergeval denk ik, ik kan het nog niet proberen had de timestamps verkeerd.

in iedergeval allemaal bedankt.!!

Maar had ik nog een vraag. Kunnen jullie mischien eens een voor beeld geven van zo'n cronjob..een simpele :d

Wil mij daar wel eens in verdiepen.
alvast bedankt!
 
Geplaatst door Jeboem
jow,

Het werkt in iedergeval denk ik, ik kan het nog niet proberen had de timestamps verkeerd.

in iedergeval allemaal bedankt.!!

Maar had ik nog een vraag. Kunnen jullie mischien eens een voor beeld geven van zo'n cronjob..een simpele :d

Wil mij daar wel eens in verdiepen.
alvast bedankt!

Kijk eens in mijn post... Daar staan wel wat linkjes.. Daar wordt het uitgelegd met een voorbeeld, simpeler kan het gewoon niet :(
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan