[opgelost] Hoe krijg ik een dinamic-grafiek?
Hallo allemaal,
Wie kan me helpen. Wanneer ik de gegevens in de code plaats, krijg ik perfect een grafiek. Maar wanneer ik de gegevens genereer, krijg ik geen grafiek.
Ik gebruik deze code om de string te maken, en dat ziet er ook goed uit.
De reeks die ik krijg is: [["2018-05-02", 10.00], ["2018-05-03", 165.00], ["2018-05-05", 10.00]];
Maar als ik mijn grafiek wil zien, gebruik ik:
Hoe krijg ik de eerste code in de code voor de grafiek?
Hoe krijg ik een dinamic-grafiek?
met vriendelijke groet,
Frits van Leeuwen
Wie kan me helpen. Wanneer ik de gegevens in de code plaats, krijg ik perfect een grafiek. Maar wanneer ik de gegevens genereer, krijg ik geen grafiek.
Ik gebruik deze code om de string te maken, en dat ziet er ook goed uit.
Code (php)
De reeks die ik krijg is: [["2018-05-02", 10.00], ["2018-05-03", 165.00], ["2018-05-05", 10.00]];
Maar als ik mijn grafiek wil zien, gebruik ik:
Code (php)
1
2
3
4
2
3
4
<script type="text/javascript">
$(document).ready(function(){
var line1 = [["2018-05-02",10.00], ["2018-05-03",165.00], ["2018-05-05",10.00]];
...
$(document).ready(function(){
var line1 = [["2018-05-02",10.00], ["2018-05-03",165.00], ["2018-05-05",10.00]];
...
Hoe krijg ik de eerste code in de code voor de grafiek?
Hoe krijg ik een dinamic-grafiek?
met vriendelijke groet,
Frits van Leeuwen
Gewijzigd op 10/06/2018 18:36:39 door Frits van Leeuwen
Als $journaalposten een array van arrays is kun je toch ook gewoon json_encode($journaalposten); gebruiken?
Thomas van den Heuvel, bedankt voor de snelle reactie.
Dat had ik ook gehoopt, ik vond dat al wel ergens, maar helaas, ik krijg dan geen grafiek in beeld.
Ik vul het volgende in:
var line1 = json_encode($journaalposten);
var line1 = [json_encode($journaalposten)];
var line1 = ;
var line1 = [];
maar geen van deze varianten geeft een grafiek.
Dat had ik ook gehoopt, ik vond dat al wel ergens, maar helaas, ik krijg dan geen grafiek in beeld.
Ik vul het volgende in:
var line1 = json_encode($journaalposten);
var line1 = [json_encode($journaalposten)];
var line1 = ;
var line1 = [];
maar geen van deze varianten geeft een grafiek.
Plaats vóór json_encode($journaalposten) eens het woord 'echo', dus:
Ik denk dat we in de buurt komen. Ik krijg nu wel de layout van de grafiek, maar niet de punten.
Als ik de string in beeld zet krijg ik dit
[[""2018-05-02",10.00"],[""2018-05-03",165.00"],[""2018-05-05",10.00"]]
De quotjes die ik om de datum heen heb geplaatst, worden nu vergezeld door quotjes om het record.
Als ik de string in beeld zet krijg ik dit
[[""2018-05-02",10.00"],[""2018-05-03",165.00"],[""2018-05-05",10.00"]]
De quotjes die ik om de datum heen heb geplaatst, worden nu vergezeld door quotjes om het record.
Code (php)
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
43
44
45
46
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
43
44
45
46
// ******** Hier volgt de query voor de grafiek **********
$query_journaalposten_debet = "SELECT journaalposten_datum, sum(journaalposten_bedrag) as totaal_debet_bedrag FROM tabel_journaalposten
WHERE journaalposten_administratie=?
AND journaalposten_inkomsten=TRUE
AND journaalposten_datum>=?
AND journaalposten_datum<=?
GROUP BY journaalposten_datum";
if ($stmt_journaalposten_debet = $dbh->prepare($query_journaalposten_debet)){
/*
Binds variables to prepared statement
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packets
*/
$stmt_journaalposten_debet->bind_param("iss", $adm_id, $datum1, $datum2);
/* execute query */
$stmt_journaalposten_debet->execute();
/* Store the result (to get properties) */
$stmt_journaalposten_debet->store_result();
/* Get the number of rows */
$num_of_rows = $stmt_journaalposten_debet->num_rows;
//$result_journaalposten_debet = $stmt_journaalposten_debet->get_result();
/* Bind the result to variables */
$stmt_journaalposten_debet->bind_result($journaalposten_datum, $totaal_debet_bedrag);
while ($line = $stmt_journaalposten_debet->fetch()) {
$journaalposten[] = array( """ . date('Y-m-d',strtotime($journaalposten_datum)) . ""," . $totaal_debet_bedrag);
}
/* free results */
$stmt_journaalposten_debet->free_result();
/* close statement */
$stmt_journaalposten_debet->close();
} else {
echo "Prepare failed: (" . $dbh->errno . ") " . $dbh->error;
}
$query_journaalposten_debet = "SELECT journaalposten_datum, sum(journaalposten_bedrag) as totaal_debet_bedrag FROM tabel_journaalposten
WHERE journaalposten_administratie=?
AND journaalposten_inkomsten=TRUE
AND journaalposten_datum>=?
AND journaalposten_datum<=?
GROUP BY journaalposten_datum";
if ($stmt_journaalposten_debet = $dbh->prepare($query_journaalposten_debet)){
/*
Binds variables to prepared statement
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packets
*/
$stmt_journaalposten_debet->bind_param("iss", $adm_id, $datum1, $datum2);
/* execute query */
$stmt_journaalposten_debet->execute();
/* Store the result (to get properties) */
$stmt_journaalposten_debet->store_result();
/* Get the number of rows */
$num_of_rows = $stmt_journaalposten_debet->num_rows;
//$result_journaalposten_debet = $stmt_journaalposten_debet->get_result();
/* Bind the result to variables */
$stmt_journaalposten_debet->bind_result($journaalposten_datum, $totaal_debet_bedrag);
while ($line = $stmt_journaalposten_debet->fetch()) {
$journaalposten[] = array( """ . date('Y-m-d',strtotime($journaalposten_datum)) . ""," . $totaal_debet_bedrag);
}
/* free results */
$stmt_journaalposten_debet->free_result();
/* close statement */
$stmt_journaalposten_debet->close();
} else {
echo "Prepare failed: (" . $dbh->errno . ") " . $dbh->error;
}
Gewijzigd op 10/06/2018 00:16:40 door Frits van Leeuwen
Uhm, hoe ziet $journaalposten er dan uit? Probeer het vooral simpel te houden. Er zijn functies die je het een stuk eenvoudiger maken, tenzij je hele slimme dingen probeert te doen die minder handig uitpakken. Voeg je ergens quotes toe?
Ja, in regel 36 van de code die ik zojuist plaatste. Want de string moet quots hebben om de datum heen. Niet om de records.
Dat hebben ze volgens mij al - alles wat uit je database komt zijn sowieso strings.
Prepared statements in mysqli is trouwens ontzettend omslachtig. Bovenstaande code kan korter en eenvoudiger.
Prepared statements in mysqli is trouwens ontzettend omslachtig. Bovenstaande code kan korter en eenvoudiger.
En als je enkele quotes om de datum zet ipv dubbele quotes?
Volgens mij niet nodig. Probeer gewoon eens:
json_encode() regelt de rest.
Keep it simple.
Toevoeging op 10/06/2018 11:39:01:
Dit:
Kan gereduceerd worden tot dit:
prepare()
bind_param()
store_result()
get_result()
bind_result()
close()
... aint nobody got time for that
Code (php)
1
$journaalposten[] = array(date('Y-m-d',strtotime($journaalposten_datum)), $totaal_debet_bedrag);
json_encode() regelt de rest.
Keep it simple.
Toevoeging op 10/06/2018 11:39:01:
Dit:
Code (php)
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
43
44
45
46
47
48
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
43
44
45
46
47
48
<?php
// ******** Hier volgt de query voor de grafiek **********
$query_journaalposten_debet = "SELECT journaalposten_datum, sum(journaalposten_bedrag) as totaal_debet_bedrag FROM tabel_journaalposten
WHERE journaalposten_administratie=?
AND journaalposten_inkomsten=TRUE
AND journaalposten_datum>=?
AND journaalposten_datum<=?
GROUP BY journaalposten_datum";
if ($stmt_journaalposten_debet = $dbh->prepare($query_journaalposten_debet)){
/*
Binds variables to prepared statement
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packets
*/
$stmt_journaalposten_debet->bind_param("iss", $adm_id, $datum1, $datum2);
/* execute query */
$stmt_journaalposten_debet->execute();
/* Store the result (to get properties) */
$stmt_journaalposten_debet->store_result();
/* Get the number of rows */
$num_of_rows = $stmt_journaalposten_debet->num_rows;
//$result_journaalposten_debet = $stmt_journaalposten_debet->get_result();
/* Bind the result to variables */
$stmt_journaalposten_debet->bind_result($journaalposten_datum, $totaal_debet_bedrag);
while ($line = $stmt_journaalposten_debet->fetch()) {
$journaalposten[] = array( """ . date('Y-m-d',strtotime($journaalposten_datum)) . ""," . $totaal_debet_bedrag);
}
/* free results */
$stmt_journaalposten_debet->free_result();
/* close statement */
$stmt_journaalposten_debet->close();
} else {
echo "Prepare failed: (" . $dbh->errno . ") " . $dbh->error;
}
?>
// ******** Hier volgt de query voor de grafiek **********
$query_journaalposten_debet = "SELECT journaalposten_datum, sum(journaalposten_bedrag) as totaal_debet_bedrag FROM tabel_journaalposten
WHERE journaalposten_administratie=?
AND journaalposten_inkomsten=TRUE
AND journaalposten_datum>=?
AND journaalposten_datum<=?
GROUP BY journaalposten_datum";
if ($stmt_journaalposten_debet = $dbh->prepare($query_journaalposten_debet)){
/*
Binds variables to prepared statement
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packets
*/
$stmt_journaalposten_debet->bind_param("iss", $adm_id, $datum1, $datum2);
/* execute query */
$stmt_journaalposten_debet->execute();
/* Store the result (to get properties) */
$stmt_journaalposten_debet->store_result();
/* Get the number of rows */
$num_of_rows = $stmt_journaalposten_debet->num_rows;
//$result_journaalposten_debet = $stmt_journaalposten_debet->get_result();
/* Bind the result to variables */
$stmt_journaalposten_debet->bind_result($journaalposten_datum, $totaal_debet_bedrag);
while ($line = $stmt_journaalposten_debet->fetch()) {
$journaalposten[] = array( """ . date('Y-m-d',strtotime($journaalposten_datum)) . ""," . $totaal_debet_bedrag);
}
/* free results */
$stmt_journaalposten_debet->free_result();
/* close statement */
$stmt_journaalposten_debet->close();
} else {
echo "Prepare failed: (" . $dbh->errno . ") " . $dbh->error;
}
?>
Kan gereduceerd worden tot dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// @todo controleer hier of $adm_id, $datum1 en $datum2 het goede formaat hebben
$res = $dbh->query(
"SELECT journaalposten_datum, SUM(journaalposten_bedrag) AS totaal_debet_bedrag
FROM tabel_journaalposten
WHERE journaalposten_administratie = '".$db->real_escape_string($adm_id)."'
AND journaalposten_inkomsten=TRUE
AND journaalposten_datum >= '".$db->real_escape_string($datum1)."'
AND journaalposten_datum <= '".$db->real_escape_string($datum2)."'
GROUP BY journaalposten_datum"
);
// NB mogelijk werkt BETWEEN hier ook voor de datums
$journaalposten = [];
while ($row = $res->fetch_assoc()) {
$journaalposten[] = [
date('Y-m-d', strtotime($row['journaalposten_datum'])),
$row['totaal_debet_bedrag']
];
}
$res->free_result();
// doe hier je ding met $journaalposten
?>
// @todo controleer hier of $adm_id, $datum1 en $datum2 het goede formaat hebben
$res = $dbh->query(
"SELECT journaalposten_datum, SUM(journaalposten_bedrag) AS totaal_debet_bedrag
FROM tabel_journaalposten
WHERE journaalposten_administratie = '".$db->real_escape_string($adm_id)."'
AND journaalposten_inkomsten=TRUE
AND journaalposten_datum >= '".$db->real_escape_string($datum1)."'
AND journaalposten_datum <= '".$db->real_escape_string($datum2)."'
GROUP BY journaalposten_datum"
);
// NB mogelijk werkt BETWEEN hier ook voor de datums
$journaalposten = [];
while ($row = $res->fetch_assoc()) {
$journaalposten[] = [
date('Y-m-d', strtotime($row['journaalposten_datum'])),
$row['totaal_debet_bedrag']
];
}
$res->free_result();
// doe hier je ding met $journaalposten
?>
prepare()
bind_param()
store_result()
get_result()
bind_result()
close()
... aint nobody got time for that
Gewijzigd op 10/06/2018 11:52:24 door Thomas van den Heuvel
De string die ik dan krijg is:
[["2018-05-02","10.00"],["2018-05-03","165.00"],["2018-05-05","10.00"]]
Om de datum heen is dat goed, maar om het bedrag heen niet.
Maar het werkt wel.
De reductie van de code heeft toch geen invloed op het resultaat?
BETWEEN werkt inderdaad ook. Ik kende deze mogelijkheid niet.
Bedankt om mij aan een oplossing te helpen.
[["2018-05-02","10.00"],["2018-05-03","165.00"],["2018-05-05","10.00"]]
Om de datum heen is dat goed, maar om het bedrag heen niet.
Maar het werkt wel.
De reductie van de code heeft toch geen invloed op het resultaat?
BETWEEN werkt inderdaad ook. Ik kende deze mogelijkheid niet.
Bedankt om mij aan een oplossing te helpen.
Gewijzigd op 10/06/2018 12:50:36 door Frits van Leeuwen
Frits van Leeuwen op 10/06/2018 11:57:05:
De reductie van de code heeft toch geen invloed op het resultaat?
Nee, maar het maakt je code wel een stuk beter leesbaar en hanteerbaar.
Frits van Leeuwen op 10/06/2018 11:57:05:
De string die ik dan krijg is:
[["2018-05-02","10.00"],["2018-05-03","165.00"],["2018-05-05","10.00"]]
Om de datum heen is dat goed, maar om het bedrag heen niet.
[["2018-05-02","10.00"],["2018-05-03","165.00"],["2018-05-05","10.00"]]
Om de datum heen is dat goed, maar om het bedrag heen niet.
Dit komt (nog steeds) omdat MySQL alles als string teruggeeft.
Als je wilt dat json_encode() numerieke waarden niet voorziet van quotes, voeg dan de flag JSON_NUMERIC_CHECK toe: json_encode($vars, JSON_NUMERIC_CHECK).
Gewijzigd op 10/06/2018 13:36:43 door Thomas van den Heuvel




