Versio

update query cronjob

Overzicht Reageren

Bart nukem

bart nukem

13/03/2011 13:35:11
Quote Anchor link
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());
 
PHP hulp

PHP hulp

25/05/2012 16:58:07
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Noppes Homeland

Noppes Homeland

13/03/2011 14:20:47
Quote Anchor link
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/
Gewijzigd op 13/03/2011 14:40:32 door Noppes Homeland
 
Jordi kroon
Redacteur

jordi kroon

13/03/2011 15:37:10
Quote Anchor link
@duke Wat is de error, En een cronjob is in de meeste gevallen onnodig
 
Karl Karl

Karl Karl

13/03/2011 15:42:58
Quote Anchor link
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.
 
Bart nukem

bart nukem

13/03/2011 18:13:55
Quote Anchor link
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
 
Vincent Huisman

Vincent Huisman

13/03/2011 18:16:13
Quote Anchor link
hij geeft een en al antwoord
 
Bart nukem

bart nukem

13/03/2011 18:21:21
Quote Anchor link
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
 
Vincent Huisman

Vincent Huisman

13/03/2011 18:23:11
 
- SanThe -

- SanThe -

13/03/2011 18:25:16
Quote Anchor link
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.
 
Noppes Homeland

Noppes Homeland

13/03/2011 18:30:26
Quote Anchor link
Lezen en proberen te begrijpen wat er gepost wordt is blijkbaar ook al een vak appart.

Toevoeging op 13/03/2011 19:21:36:

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.
 
Bart nukem

bart nukem

13/03/2011 20:04:00
Quote Anchor link
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)
 
PHP Jasper

PHP Jasper

13/03/2011 20:06:50
Quote Anchor link
niet or die gebruiken. nette foutafhandeling
 
Bart nukem

bart nukem

13/03/2011 20:16:32
Quote Anchor link
Bedankt Jasper, ik heb je foutafhandeling zo toegepast.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php

# We zetten dit volledig bovenaan

    # errors weergeven

    ini_set('display_errors',1); // 1 == aan , 0 == uit
    error_reporting(E_ALL | E_STRICT);

    # sql debug
    define('DEBUG_MODE',true);  // true == aan, false == uit


    # functie voor sql debug

    function showSQLError($sql,$error,$text='Error')
    {

        if (DEBUG_MODE)
        {

            return  '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
        }

        else
        {
            return $text;
        }
    }
  

// verbinding met database invoegen

require("iets.php");
# de query | bij input: let op sql-injectie -> mysql_real_escape_string()
$sql = "UPDATE aanmelding SET status = 'D' WHERE NOW() - INTERVAL 1 day > datum";
$result = mysql_query($sql);
#  Check of query is gelukt    
if (($result = mysql_query($sql)) === false)
{

    # als de query fout is -> foutafhandeling
    echo showSQLError($sql,mysql_error(),'Fout met database.');
}

else
{
    # De query is gelukt
}
?>
 
PHP Jasper

PHP Jasper

13/03/2011 20:18:55
Quote Anchor link
dat ziet er goed uit.. als je niets weergeeft als de query is gelukt kan je rij 38 tot 41 weglaten ;)
 
Bart nukem

bart nukem

13/03/2011 20:21:41
Quote Anchor link
Dus ik kan dan ook tussen rij 38 en 41 een mailafhandeling plaatsen met welke rijen zijn geupdate.
 
PHP Jasper

PHP Jasper

13/03/2011 20:23:18
Quote Anchor link
ja tussen 39 en 41 zou je een mailafhandeling kunnen zetten.
 



Overzicht Reageren

Get Adobe Flash player