So I have this code which shows up my Mysql data in chart.js.
Basically everything works but i just want to change the date into days
This is what I have Current Chart And this is what I want to achieve My goal Whatever i try i get never the result i want to get. Here is all of my code:
chart.php
JavaScript
x
17
17
1
<?php
2
header('Content-Type: application/json');
3
require 'config/db.php';
4
$query = sprintf("SELECT * FROM (SELECT pageid, pagehits, pagedate FROM pagehits ORDER BY pagedate DESC LIMIT 7) sub ORDER BY pagedate ASC");
5
6
$result = $conn->query($query);
7
$data = array();
8
foreach ($result as $page_row) {
9
$data[] = $page_row;
10
}
11
12
$result->close();
13
$conn->close();
14
15
print json_encode($data);
16
17
chart.html
JavaScript
1
23
23
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<title>ChartJS - LineGraph</title>
5
<style>
6
.chart-container {
7
width: 640px;
8
height: auto;
9
}
10
</style>
11
</head>
12
<body>
13
<div class="chart-container">
14
<canvas id="mycanvas"></canvas>
15
</div>
16
17
<!-- javascript -->
18
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
19
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
20
<script src="chart.js"></script>
21
</body>
22
</html>
23
chart.js
JavaScript
1
43
43
1
$(document).ready(function(){
2
$.ajax({
3
url : "chart.php",
4
type : "GET",
5
success : function(data){
6
console.log(data);
7
8
var pagedate = [];
9
var pagehits = [];
10
for(var i in data) {
11
pagedate.push( data[i].pagedate);
12
pagehits.push(data[i].pagehits);
13
}
14
15
var chartdata = {
16
labels: pagedate,
17
datasets: [
18
{
19
label: "pagehits",
20
fill: false,
21
lineTension: 0.1,
22
backgroundColor: "rgba(59, 89, 152, 0.75)",
23
borderColor: "rgba(59, 89, 152, 1)",
24
pointHoverBackgroundColor: "rgba(59, 89, 152, 1)",
25
pointHoverBorderColor: "rgba(59, 89, 152, 1)",
26
data: pagehits
27
},
28
]
29
};
30
31
var ctx = $("#mycanvas");
32
33
var LineGraph = new Chart(ctx, {
34
type: 'bar',
35
data: chartdata
36
});
37
},
38
error : function(data) {
39
40
}
41
});
42
});
43
Any idea to fix my problem?? I would appreciate any answer! Thanks!!
Advertisement
Answer
You can convert the date into a day of the week inside your PHP code using DateTime
objects:
JavaScript
1
5
1
foreach ($result as $page_row) {
2
$page_row['pagedate'] = (new DateTime($page_row['pagedate']))->format('l');
3
$data[] = $page_row;
4
}
5