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');
?> 
Volgens mij zou NOW() wel moeten werken..., je zou ook eens CURDATE kunnen proberen, maar ik kan eigenlijk geen fout in je query ontdekken, ik vermoed dat je fout bij de SELECT query zit die in een INSERT query zit.
En als je alle whitespace weghaalt tussen 'uitgave_bedrag' en de ')'
Tja, die SELECT query heb ik zo gemaakt met die $begroting_id maar misschien kan dit helemaal niet.
Hij moet wel weten welk bedrag in welke rij gezet moet worden.
IK ben geen SQL Specialist, maar moet er niet om iedere waarde (behalve functies zoals "NOW()" ) haaken?

Dus ook die select?
@Mark
CURDATE maakt geen verschil

@SanThe
Nee, geen verandering
@Niek, dat is niet zo, de reden waarom er geen haken om de opdracht NOW() moeten is omdat deze niet letterlijk moet worden ingevoerd, maar de output van de functie, aangezien de select query niet letterlijk in de database moet komen horen hier geen haken omheen ;)
Anders doe je die SELECT even apart voor de INSERT.
<?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 = "SELECT begroting_bedrag
FROM begroting
WHERE begroting_id = " . $begroting_id . "
AND budget_id = 2";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result);

$query = "INSERT INTO uitgaven (
uitgave_naam,
uitgave_datum,
uitgave_tekst,
uitgave_bedrag
) VALUES (
'Storting',
NOW(),
'Maandelijkse storting',
'" . $row['begroting_bedrag'] . "'
)";
$result = mysql_query($query) or die(mysql_error());
?>
Edit: Foutje gefixed.
Ik had ergens nog een komma staan die weg moest.

Hij zet nu alle gegevens in de tabel (26x terwijl dat 39x moet zijn) maar zonder bedrag en zonder begroting_id.
Dat laatste kan kloppen omdat we dat nog niet in de query hebben gezet.

Hij moet het nu dus nog 39 keer erin zetten bij het juiste begroting_id met het bedrag uit de tabel "begroting" (begroting_bedrag)
@SanThe

Dit is 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 'AND budget_id = 2' at line 4
Dan bestaat $begroting_id niet.

Reageren