Ik heb al eens een cronjob gemaakt maar dat was een simpele om kliks op nul te zetten met UPDATE. Dus ik heb er niet echt ervaring mee.
Nu wil ik graag dat er iedere eerste van de maand een geldbedrag wordt gestort met omschrijving.
-Het begroting_bedrag staat in de tabel "begroting" en hoort bij een begroting_id.
Dus dat bedrag moet erin gezet worden.
<?php
include("../budget/inloggen.php");
//maak verbinding met de database
$connection = mysql_connect ($hostname,$user,$password) or die ( "Sorry maar ik kan geen contact maken met de database, probeer het later opnieuw of ververs uw browser.");
$db = mysql_select_db ($database, $connection) or die ("Sorry, maar ik kan de database niet openen.");
$uitgave_naam = 'Storting';
$uitgave_datum = 'NOW()';
$uitgave_tekst = 'Maandelijkse storting';
$uitgave_bedrag = 'SELECT begroting_bedrag FROM begroting WHERE begroting_id = '.$begroting_id.' AND budget_id = 2';
$query='INSERT INTO uitgaven (uitgave_naam,uitgave_datum,uitgave_tekst,uitgave_bedrag)
VALUES ('$uitgave_naam','$uitgave_datum','$uitgave_tekst','$uitgave_bedrag') WHERE begroting_id = '.$begroting_id.'';
$result=mysql_query($query) or die ('Het is niet gelukt om de gegevens in de database te zetten');
?>
Ik zou al die $vars weghalen en de teksten gewoon in de query zetten. Verder is het handiger om een query met dubbele quotes te maken omdat de 'values' zelf al met enkele quotes worden ingevuld. En ik heb geen idee of die SELECT zo midden in de query kan/mag staan.
<?php
$query = "INSERT INTO uitgaven (
uitgave_naam,
uitgave_datum,
uitgave_tekst,
uitgave_bedrag
) VALUES (
'Storting',
NOW(),
'Maandelijkse storting',
SELECT begroting_bedrag
FROM begroting
WHERE begroting_id = " . $begroting_id . "
AND budget_id = 2;
)";
$result = mysql_query($query) or die ('Het is niet gelukt om de gegevens in de database te zetten');
?>
?
Onbekende gebruiker
01-01-2007 11:36
@SanThe
Ik heb bij mij server alleen in het eerst vakje bij minutes */1 gezet en de rest op *.
Als het goed is zou hij de opdracht dus iedere minuut moeten uitvoeren.
Er gebeurt niets.
Kan het script ook gedeeltelijk werken?
Dus dat hij wel de tijd erin zet zodat ik kan zien dat in ieder geval iets het wel doet.
Ik heb het script in een map zitten en erbuiten om ze allebei te testen.
Om dit script te testen hoef je het niet in een cronjob te zetten. Je kan het net als anders normaal openen in de browser en dan moet het werken. Cronjob stel je pas in als het script goed werkt.
?
Onbekende gebruiker
01-01-2007 11:43
Oh, dat wist ik niet.
Ik krijg dan deze foutmelding:
Het is niet gelukt om de gegevens in de database te zetten
Misschien moet ik er even een paar dingen uithalen en dan testen?
Maak de foutmelding even zo dat je (tijdelijk) de mysql_error() te zien krijgt.
?
Onbekende gebruiker
01-01-2007 11:47
Zal ik zo even doen...
Ik heb het SELECT gedeelte even weggehaald en nu zet hij de gegevens wel in de tabel. Alleen moet er ook nog een begroting_id in gezet worden.
?
Onbekende gebruiker
01-01-2007 11:49
Dit is de foutmelding:
Parse error: syntax error, unexpected T_STRING in /usr/home/cronjobbudget.php on line 22
<?php
include("../budget/inloggen.php");
//maak verbinding met de database
$connection = mysql_connect ($hostname,$user,$password) or die ( "Sorry maar ik kan geen contact maken met de database, probeer het later opnieuw of ververs uw browser.");
$db = mysql_select_db ($database, $connection) or die ("Sorry, maar ik kan de database niet openen.");
$query = "INSERT INTO uitgaven (
uitgave_naam,
uitgave_datum,
uitgave_tekst,
uitgave_bedrag
) VALUES (
'Storting',
NOW(),
'Maandelijkse storting',
SELECT begroting_bedrag
FROM begroting
WHERE begroting_id = " . $begroting_id . "
AND budget_id = 2;
)";
$result = mysql_query($query) or die mysql_error();
?>
<?php
$result = mysql_query($query) or die(mysql_error());
?>
?
Onbekende gebruiker
01-01-2007 11:55
Oeps!
Nu is dit de foutmelding:
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 ') VALUES ( 'Storting', NOW(), 'Maandelijkse storting', ' at line 6
EDIT: Misschien is NOW() niet goed? In de database staat hier DATE