Ik wil graag een cronjob maken die het veld status UPDATE in D wanneer de ingevoerde veld datum groter is als 5 weken. Ik dacht het op onderstaande manier te kunnen doen maar krijg een error, iemand enig idee wat ik hieronder hout doe?

$query="UPDATE aanmelding SET status = 'D' WHERE DATE_ADD(datum, interval +5 week) AS datum > NOW() ;
$result = mysql_query($query) or die ("FOUT1: " . mySql_error());
Ik krijg een error maar ik vertel hem lekker niet!!

DATE_ADD en DATE_SUB moet je niet gebruiken, gebruik standaard SQL!

or die(), doodgaan doe je in feite maar 1 keer in je leven en in een cronjob script wil je het overigens ook netjes afgehandeld hebben.

En als je je fout zo in 1 oogopslag niet ziet en ook niet kunt herleiden vanuit de foutmelding, dan moet je ook niet gaan SQL-en.
http://dev.mysql.com/doc/refman/5.0/en/update.html

En dan nog het feit dat je dit wilt doen in een cronjob, is nergens voor nodig, zorg gewoon dat die update plaatsvindt bij pageviews

En hoeveel boompjes ga je nu nog planten over 1 en hetzlefde onderwerp:
http://www.phphulp.nl/php/forum/topic/5-weken-bij-een-datum-optellen-uit-mysql/76900/last/
@duke Wat is de error, En een cronjob is in de meeste gevallen onnodig
Jordi kroon op 13/03/2011 15:37:10

@duke Wat is de error, En een cronjob is in de meeste gevallen onnodig


Als jij nou eens gaat lezen wat Noppes schrijft.
Ook goedemorgen, heftige reacties op een vraag of iemand gewoon wil kijken naar mijn query die met een fout melding komt, en als ik een dergelijke vraag stel zegt dat toch al genoeg over mijn kennis van sql... dus noppes dat hoef je mij niet uit te leggen dat ik daar weinig kennis van heb, maar ik heb wel zelf geprobeerd. In plaats daarvan kom je met een heel verhaal hoe het allemaal zou moeten zonder een echt antwoord, rijp voor de politiek dus. De groetjes
Voor diegene die mij gewoon even wil helpen hier onder de foutmelding

1300036740FOUT1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS datum < 1300036740' at line 1
Dukenukem nukem op 13/03/2011 18:21:21

Voor diegene die mij gewoon even wil helpen


Niet om lullig te doen, maar LEES het antwoord van Noppes eens door. Daar staat letterlijk in wat je niet moet gebruiken.
Lezen en proberen te begrijpen wat er gepost wordt is blijkbaar ook al een vak appart.

[size=xsmall]Toevoeging op 13/03/2011 19:21:36:[/size]

Eens kijken of je het dan nu wel gaat begrijpen ookal schrijf je dat je niets weet van SQL:
dus AS datum moet kleiner zijn aan timestamp

De foutmelding geeft expliciet vanaf het beginpunt aan wat de database query optimizer niet begrijpt

Een datum sla je in principe op in een DATE type veld
Een Datum tijd sla je in principe op in een DATETIME type veld

en wat betreft timestamps opslaan, wel daar heb je in mijn ogen voor 99% van de gevallen niets aan.
Nou het is opgelost met onderstaande query:

$query = "UPDATE aanmelding SET status = 'D' WHERE NOW() - INTERVAL 5 week > datum";
$result = mysql_query($query) or die ("FOUT1: " . mySql_error());

En ik zal hem niet gaan toepassen in een cronjob maar zoals werd aanbevolen met een pagevieuw, ik bedank jullie voor het advies (al kan het best wat aardiger)

Reageren