Cronjob script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

01/01/2007 10:40:00
Quote Anchor link
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.

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
<?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');
?>
 
PHP hulp

PHP hulp

19/11/2024 13:40:43
 
- SanThe -

- SanThe -

01/01/2007 11:14:00
Quote Anchor link
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.

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
<?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');
?>
 

01/01/2007 11:36:00
Quote Anchor link
@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.
 
- SanThe -

- SanThe -

01/01/2007 11:40:00
Quote Anchor link
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.
 

01/01/2007 11:43:00
Quote Anchor link
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?
 
- SanThe -

- SanThe -

01/01/2007 11:46:00
Quote Anchor link
Maak de foutmelding even zo dat je (tijdelijk) de mysql_error() te zien krijgt.
 

01/01/2007 11:47:00
Quote Anchor link
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.
 

01/01/2007 11:49:00
Quote Anchor link
Dit is de foutmelding:

Parse error: syntax error, unexpected T_STRING in /usr/home/cronjobbudget.php on line 22

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
<?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();
?>
Gewijzigd op 01/01/1970 01:00:00 door
 
Mark D

Mark D

01/01/2007 11:51:00
Quote Anchor link
Om de functie mysql_error() moeten nog haakjes, zie or die() als een functie, dan moet je dit dus hebben:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$result
= mysql_query($query) or die (mysql_error());
?>
 
Martijn B

Martijn B

01/01/2007 11:52:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$result
= mysql_query($query) or die(mysql_error());
?>
 

01/01/2007 11:55:00
Quote Anchor link
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
Gewijzigd op 01/01/1970 01:00:00 door
 
Mark D

Mark D

01/01/2007 11:58:00
Quote Anchor link
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.
 
- SanThe -

- SanThe -

01/01/2007 12:00:00
Quote Anchor link
En als je alle whitespace weghaalt tussen 'uitgave_bedrag' en de ')'
 

01/01/2007 12:01:00
Quote Anchor link
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.
 
Niek s

niek s

01/01/2007 12:03:00
Quote Anchor link
IK ben geen SQL Specialist, maar moet er niet om iedere waarde (behalve functies zoals "NOW()" ) haaken?

Dus ook die select?
 

01/01/2007 12:05:00
Quote Anchor link
@Mark
CURDATE maakt geen verschil

@SanThe
Nee, geen verandering
 
Mark D

Mark D

01/01/2007 12:07:00
Quote Anchor link
@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 ;)
 
- SanThe -

- SanThe -

01/01/2007 12:08:00
Quote Anchor link
Anders doe je die SELECT even apart voor de INSERT.
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
<?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.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 

01/01/2007 12:14:00
Quote Anchor link
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)
 

01/01/2007 12:24:00
Quote Anchor link
@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
 
- SanThe -

- SanThe -

01/01/2007 12:27:00
Quote Anchor link
Dan bestaat $begroting_id niet.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.