grafiek opmaken per maand van het jaar

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

- Ariën  -
Beheerder

- Ariën -

30/10/2023 18:48:18
Quote Anchor link
Hoe ziet je lus eruit?
 
PHP hulp

PHP hulp

09/05/2024 14:59:15
 
Berta Pappens

Berta Pappens

30/10/2023 18:52:17
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$x = 1;

do {
$sqlb="SELECT COUNT(*) as total FROM database WHERE MONTH(datin) = ".$x." AND YEAR(datin) = YEAR(CURRENT_DATE)";

$result = $con->query($sqlb);
$data =  $result->fetch_assoc();
echo '<center>';
echo '<font color ="black">Aantal voor maand  '.$x.' : ' ;
echo'<font color ="red">'.$data['total'];
echo '<br>';
$x++;
} while ($x <= 12);
 
- Ariën  -
Beheerder

- Ariën -

30/10/2023 18:56:42
Quote Anchor link
Waarom je keuze voor een do while?
En waarom op deze merkwaardige manier waarbij je opnieuw een query uitvoert per iteratie?
Is dit gewoon gokken, of rücksichtslos maar erop los proberen zonder te weten wat je doet? :-P

Wat is er mis met een normale while? Zie ook: https://www.w3schools.com/php/php_mysql_select.asp
Maar dan moet je dus i.p.v. text printen een nieuwe array samenstellen.
Gewijzigd op 30/10/2023 19:01:50 door - Ariën -
 
Berta Pappens

Berta Pappens

30/10/2023 19:48:24
Quote Anchor link
Alvast bedankt voor alles, maar op deze manier ben ik niet verder geholpen.
Toch nogmaals mijn dank voor uw tijd.
 
- Ariën  -
Beheerder

- Ariën -

30/10/2023 19:55:14
Quote Anchor link
Wat lukt er dan niet aan? Ik heb in dit topic al een stappenplan en een linkje naar W3Schools gegeven.
Waar loop je nog op vast? 90 Procent heb je al. Enkel de whileloop en de array.
Gewijzigd op 30/10/2023 19:58:43 door - Ariën -
 
Berta Pappens

Berta Pappens

30/10/2023 20:06:09
Quote Anchor link
Ik heb momenteel een goede array waar mijn getallen in zitten .
Als ik dit in de java ingeef zoals u mij dit zei krijg ik een wit scherm.
$tot = de volledige array

ziehier de volledige code
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
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
81
82
83
84
85
86
<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
<?php

  
// query even ophakken in leesbare regels
$x = 1;
$tot=array();
do {
$sqlb="SELECT COUNT(*) as total FROM database WHERE MONTH(datin) = ".$x." AND YEAR(datin) = YEAR(CURRENT_DATE)";

$result = $con->query($sqlb);
$data =  $result->fetch_assoc();
echo '<center>';
echo '<font color ="black">Aantal voor maand  '.$x.' : ' ;
echo'<font color ="red">'.$data['total'];
echo '<br>';
array_push($tot,$data['total']);
$x++;
}
while ($x <= 12);
?>
        
        
        var data = {
            labels: ["januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
            datasets: [{
                label: "Cachen per maand",
                data: [<?php echo $tot;?> ], // 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>
 
- Ariën  -
Beheerder

- Ariën -

30/10/2023 20:07:17
Quote Anchor link
Die do-while loop kan weggooien. Dat is echt nonsens wat je daar doet.
Check even op die link van W3Schools hoe ze dat doen.
 
Berta Pappens

Berta Pappens

30/10/2023 20:08:38
Quote Anchor link
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
Array ( [0] => 545 [1] => 6491 [2] => 13340 [3] => 1986 [4] => 1635 [5] => 1226 [6] => 1161 [7] => 521 [8] => 5265 [9] => 1435 [10] => 0 [11] => 0 )
 
- Ariën  -
Beheerder

- Ariën -

30/10/2023 20:09:27
Quote Anchor link
Kijk, een die array die we onderaan zien, daar hebben we wat aan! :-)
Die kan je in implode() gebruiken.
 
Berta Pappens

Berta Pappens

30/10/2023 20:09:46
Quote Anchor link
Dit is momenteel niet mijn vraag, ik heb een array maar deze werkt blijkbaar niet in chart.js ???
 
- Ariën  -
Beheerder

- Ariën -

30/10/2023 20:12:09
Quote Anchor link
Waarom zou het niet werken?
In data van jscharts staat een komma-gescheiden reeks met cijfers. Het maakt voor chart.js niet uit of deze handmatig zijn ingevuld of via een PHP-script gegenereerd worden.

Als het niet werkt, dan doe je blijkbaar iets fout?
 
Berta Pappens

Berta Pappens

30/10/2023 20:20:31
Quote Anchor link
Ik krijg enkel dit te zien zonder staaf grafiek

545,6491,13340,1986,1635,1226,1161,521,5265,1461,0,0
 
- Ariën  -
Beheerder

- Ariën -

30/10/2023 20:25:21
Quote Anchor link
Hoe ziet je volledige code er dan uit?
 
Berta Pappens

Berta Pappens

30/10/2023 20:29:26
Quote Anchor link
hier is de volledige code :
er zitten nog echo's tussen voor kontrole
Maar ik krijg geen grafiek
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
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
81
82
83
84
85
86
87
88
89
90
91
<?php

  

// query even ophakken in leesbare regels
$x = 1;
$tot=array();
do {
$sqlb="SELECT COUNT(*) as total FROM database WHERE MONTH(datin) = ".$x." AND YEAR(datin) = YEAR(CURRENT_DATE)";

$result = $con->query($sqlb);
$data =  $result->fetch_assoc();
echo '<center>';
echo '<font color ="black">Aantal voor maand  '.$x.' : ' ;
echo'<font color ="red">'.$data['total'];
echo '<br>';
$values= implode(", ",$tot);
$x++;
}
while ($x <= 12);
echo $values ;

?>
        
<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="1000" 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: "Cachen 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>
 
- Ariën  -
Beheerder

- Ariën -

30/10/2023 20:29:57
Quote Anchor link
Luisteren of lezen is lastig, blijkbaar?

- Ariën - op 30/10/2023 20:07:17:
Die do-while loop kan weggooien. Dat is echt nonsens wat je daar doet.
Check even op die link van W3Schools hoe ze dat doen.
Gewijzigd op 30/10/2023 20:30:18 door - Ariën -
 
Berta Pappens

Berta Pappens

30/10/2023 20:31:15
Quote Anchor link
Ik wil eerst de oplossing voor de grafiek en daarna zal ik verder de aanpassing doen
 
- Ariën  -
Beheerder

- Ariën -

30/10/2023 20:33:00
Quote Anchor link
ja, zie mijn eerdere posts. En bekijk ook even je output in je HTML-source.
Dat schept ook vaak verduidelijking in plaats van dat je enkel tegen een site aankijkt.
 
Ad Fundum

Ad Fundum

30/10/2023 22:28:32
Quote Anchor link
Ik denk dat je de data zoveel mogelijk in de database kunt voorbereiden:
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
WITH dataset AS (  -- hier vraag je de data op met je query
  SELECT
    MONTH(datin) AS maand,
    COUNT(*) AS totaal
  FROM database
  WHERE YEAR(datin) = YEAR(CURRENT_DATE)
  GROUP BY maand
)
SELECT  -- hier maak je er een grafiek van
  YEAR(CURRENT_DATE) AS jaar,
  maand,
  totaal,
  ROUND((totaal / MAX(totaal) OVER ()) * 100, 2)  AS procent,
  REPEAT("#", (totaal / MAX(totaal) OVER ()) * 40) AS staaf
FROM dataset
ORDER BY maand;

Nadat de gegevens zijn opgehaald uit de database met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$data = $result->fetch_assoc();

Kan je de gegevens van elke rij ophalen met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
foreach($data as $rij) {
  // hier doe je iets met de gegevens uit de rij, bv:
  print $rij['procent'] . ' ' . $rij['staaf'] . PHP_EOL;  // nog geen HTML
}

Je kunt in plaats van tekst ook HTML uitvoer maken in de foreach-lus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
  print '<span style='display:block;height:1em;width:' . $rij['procent'] . '%;background:black'></span><br>';

Ik heb bovenstaande droog getypt en niet uitgeprobeerd, mocht je tegen een fout aanlopen dan willen we je hier graag verder helpen.
 
- Ariën  -
Beheerder

- Ariën -

31/10/2023 00:09:00
Quote Anchor link
Ook dat is een mogelijkheid. Enige nadeel is dat de queries wat complexer te lezen zijn.
 
Ivo P

Ivo P

31/10/2023 09:07:51
Quote Anchor link
Kan MySQL wel overweg met WITH ?


--- sinds 8.0 kennelijk
Gewijzigd op 31/10/2023 09:10:35 door Ivo P
 

Pagina: « vorige 1 2 3 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.