grafiek opmaken per maand van het jaar
Heeft er iemand een script om een grafiek op te maken van gegevens per maand van het jaar.
Ik heb dit al als voorbeeld , maar kan geen grafiek maken.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$sqlb="SELECT COUNT(*) as total FROM database WHERE MONTH(datin) = MONTH(CURRENT_DATE) AND YEAR(datin) = YEAR(CURRENT_DATE)";
$result = $con->query($sqlb);
$data = $result->fetch_assoc();
echo '<center>';
echo '<font color ="black">Aantal ingaves deze maand : ' ;
echo'<font color ="red">'.$data['total'];
echo '<br>';
$result = $con->query($sqlb);
$data = $result->fetch_assoc();
echo '<center>';
echo '<font color ="black">Aantal ingaves deze maand : ' ;
echo'<font color ="red">'.$data['total'];
echo '<br>';
Dank bij voorbaat
En wat voor grafiek wil je? Cirkeldiagram? Lijndiagram? Staafdiagram?
En heb je al iets gevonden om de grafieken mee samen te stellen?
Ikzelf ben wel fan van Chart.js.
Een codevoorbeeldje kan je hier vinden:
https://jsfiddle.net/eoLy415h/
Gewijzigd op 30/10/2023 16:44:33 door - Ariën -
Nee ik heb nog niks gevonden, daarom min vraag hier aan de professionals.
Hoe zou ik chart.js kunnen gebruikenmet mijn query
Dank bij voorbaat
Dat maakt al een stuk duidelijker hoe je een staafdiagram kan maken.
Een AJAX-request zou nog netter zijn zodat je de code makkelijk kan herbruiken voor meerdere soorten data.
Gewijzigd op 30/10/2023 16:49:09 door - Ariën -
al heel hartelijk bedankt om dit te willen doen, ik ga dit bekijken hoe ik dit moet aanpakken om iedere maand het totaal daarin te krijgen.
Mocht je nog meer tips hebben , dan zijn ze zeker welkom.
bedankt
Toevoeging op 30/10/2023 17:05:39:
Weet je ook hoe ik mijn query kan aanpassen zodat ik mijn aantal per maand heb AUB.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
// haal hier je data op, verwerk het met foreach tot een nieuwe array $data[].
$values= implode(",",$data);
?>
// haal hier je data op, verwerk het met foreach tot een nieuwe array $data[].
$values= implode(",",$data);
?>
Code (php)
1
2
3
4
5
2
3
4
5
/* Hier de rest van de JS-chart code*/
data: [<?php echo $values;?> ],
/* Hier de rest van de JS-chart code*/
data: [<?php echo $values;?> ],
/* Hier de rest van de JS-chart code*/
Maar persoonlijk zou ik een AJAX-request netter vinden.
Het is enkel de data van dit jaar, en het totaal per maand.
Berta Pappens op 30/10/2023 16:55:35:
Weet je ook hoe ik mijn query kan aanpassen zodat ik mijn aantal per maand heb AUB.
Zoiets moet wel werken. Je groepeert op maand onder voorwaarde dat je een bepaald jaar pakt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
SELECT
MONTH(datin) AS maand,
COUNT(*) AS total
FROM
tabel
WHERE
YEAR(datin) = 2023
GROUP BY
maand
ORDER BY
maand;
MONTH(datin) AS maand,
COUNT(*) AS total
FROM
tabel
WHERE
YEAR(datin) = 2023
GROUP BY
maand
ORDER BY
maand;
Gewijzigd op 30/10/2023 17:15:09 door - Ariën -
ik heb een query voor deze maand , kan ik geen loop van 1 tot 12 gebruiken met deze query.
Wat lukt er niet aan? Ik krijg op mijn testdatabase netjes een 12 rijen met records met het maandnummer en het aantal items.
Dank u
Heb je mijn post gelezen van 17:06:13?
Toevoeging op 30/10/2023 17:50:01:
u schreef om 17:06 $values= implode(",",$data);
moet dat niet zijn $values= implode(",",$data['total']);
Toevoeging op 30/10/2023 18:04:16:
Dit is de code en krijg een wit scherm.
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
$sqlc="SELECT MONTH(datin) AS maand,COUNT(*) AS total FROM database WHERE YEAR(datin) = YEAR(CURRENT_DATE) GROUP BY maand ORDER BY maand;";
$result = $con->query($sqlc);
$data = $result->fetch_assoc();
$values= implode(",",$data);
?>
<html>
<head>
<title>Staafdiagram voorbeeld met Chart.js</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<canvas id="myBarChart" width="400" height="400"></canvas>
<script>
// Je gegevens voor het staafdiagram
var data = {
labels: ["januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
datasets: [{
label: "ingaves per maand",
data: [<?php echo $values;?> ], // Hier voeg je je eigen data toe.
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)'
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)'
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)'
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)'
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
],
borderWidth: 1
}]
};
var options = {
scales: {
y: {
beginAtZero: true
}
}
};
// Maak een staafdiagram
var ctx = document.getElementById('myBarChart').getContext('2d');
var myBarChart = new Chart(ctx, {
type: 'bar',
data: data,
options: options
});
</script>
</body>
</html>
$sqlc="SELECT MONTH(datin) AS maand,COUNT(*) AS total FROM database WHERE YEAR(datin) = YEAR(CURRENT_DATE) GROUP BY maand ORDER BY maand;";
$result = $con->query($sqlc);
$data = $result->fetch_assoc();
$values= implode(",",$data);
?>
<html>
<head>
<title>Staafdiagram voorbeeld met Chart.js</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<canvas id="myBarChart" width="400" height="400"></canvas>
<script>
// Je gegevens voor het staafdiagram
var data = {
labels: ["januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
datasets: [{
label: "ingaves per maand",
data: [<?php echo $values;?> ], // Hier voeg je je eigen data toe.
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)'
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)'
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)'
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)'
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
],
borderWidth: 1
}]
};
var options = {
scales: {
y: {
beginAtZero: true
}
}
};
// Maak een staafdiagram
var ctx = document.getElementById('myBarChart').getContext('2d');
var myBarChart = new Chart(ctx, {
type: 'bar',
data: data,
options: options
});
</script>
</body>
</html>
Je moet in PHP wel een while/foreach loop gebruiken om alle maanden te doorlopen.
kan je mij daarbij helpen AUB.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// query even ophakken in leesbare regels
$sqlc="
SELECT MONTH(datin) AS maand,
COUNT(*) AS total
FROM database
WHERE YEAR(datin) = YEAR(CURRENT_DATE)
GROUP BY maand
ORDER BY maand;
";
$result = $con->query($sqlc);
$data = $result->fetch_assoc();
// Kijk naar de inhoud van $data
echo "<pre>".print_r($data,true)."</pre>";
?>
// query even ophakken in leesbare regels
$sqlc="
SELECT MONTH(datin) AS maand,
COUNT(*) AS total
FROM database
WHERE YEAR(datin) = YEAR(CURRENT_DATE)
GROUP BY maand
ORDER BY maand;
";
$result = $con->query($sqlc);
$data = $result->fetch_assoc();
// Kijk naar de inhoud van $data
echo "<pre>".print_r($data,true)."</pre>";
?>
Array
(
[maand] => 1
[total] => 545
)
Dat is onderdeel van de basis-kennis PHP+SQL. ;-)
Dan maak je een array aan met de naam $aantallen = [];
In die whileloop maak je array-elementen aan met daarin alle aantallen per maand.
Gewijzigd op 30/10/2023 18:24:57 door - Ariën -
Aantal voor maand 1 : 545
Aantal voor maand 2 : 6491
Aantal voor maand 3 : 13340
Aantal voor maand 4 : 1986
Aantal voor maand 5 : 1635
Aantal voor maand 6 : 1226
Aantal voor maand 7 : 1161
Aantal voor maand 8 : 521
Aantal voor maand 9 : 5265
Aantal voor maand 10 : 1435
Aantal voor maand 11 : 0
Aantal voor maand 12 : 0
Kortom:
Je maakt eerst een array voor de aantallen.
Je voert een whileloop uit
In de whileloop zorg je ervoor dat elk doorlopen aantal een item in de array krijgt.
Na afloop gebruik je implode om alles kommagescheiden te kunnen gebruiken.
Gewijzigd op 30/10/2023 18:28:17 door - Ariën -
Hoe krijg ik $data['total'] in een array
$values= implode(",",$data); dat lukt niet