 |
สอบถามครับคือผมต้องการจะให้กราฟแสดงข้อมูลเวลาตามที่กำหนดไว้ทั้งหมด ตอนนี้แสดงแค่บางเวลาคับ |
|
 |
|
|
 |
 |
|
ตอนแรกก็ใช้งานปกติดีคับ แต่พอเริ่มนับจาก 13.00-17-00 น. ช่วงเวลามันไม่ตรงคับ คือถ้าตามจริงแล้วจะนับจากงานที่ผลิตได้แต่ช่วงไหนที่ไม่ได้ผลิตก็ยังต้องมีเวลาแสดงด้วยตามรูปที่แนบคับ
ปัญหาตอนนี้คับเริ่มทำงาน 10.00 แสดงไม่ตรง

ข้อมูล

ปกติต้องเป็นแบบนี้

ถ้าทำต่อเนื่องจะประมาณนี้

Code (PHP)
<?php
include("../../cond.ua.php");
include("../thaidate1.php");
$Name = $_REQUEST['Name'];
$check1 = "SELECT * FROM count WHERE Name='$Name' AND DATE(DDate)=CURDATE() ";
$q1 = mysqli_query($conn, $check1);
$result = mysqli_fetch_array($q1,MYSQLI_ASSOC);
$PP = $result["Process"];
$NN = $result["Name"];
$check2 = "SELECT * FROM work_detail WHERE Name='$NN'";
$cq2 = mysqli_query($conn, $check2);
$result2 = mysqli_fetch_array($cq2,MYSQLI_ASSOC);
$T1 = $result2["Target2"];
$T2 = $result2["Total"];
?>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>
<script type="text/javascript">
window.onload = function () {
Highcharts.chart('container', {
chart: {
type: 'column'
},
title: {
text: 'กราฟแสดงผลการผลิต วันที่ <?php echo thai_date_fullmonth(time()); ?><br/>เป้าผลิตต่อวัน <a style="color:#FF4500;><?php echo $T1;?></a> ชิ้น'
},
subtitle: {
text: ''
},
xAxis: {
categories: [
/*--- ตรงนี้คือต้องจะให้แสดงข้อมูลทั้งหมดครับไม่ว่านะช่วงเวลาที่ query จะมีข้อมูลหรือไม่มีก็ตามคับ -- */
'ยอดผลิต',
'8:00-8:30',
'8:31-9:00',
'9:01-9:30',
'9:31-10:00',
'10:01-10:30',
'10:31-11:00',
'11:01-11:30',
'11:31-12:00',
'12:01-12:30',
'12:31-13:00',
/* ---- */
],
crosshair: true
},
yAxis: {
min: 0,
title: {
text: 'เป้าผลิตต่อวัน'
}
},
tooltip: {
headerFormat: '<span><?php echo $NN." ".$PP;?></span><table style="font-size:14px;width:100px;height:100;">',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y} pcs</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
},
plotOptions: {
column: {
pointPadding: 0.1,
borderWidth: 0
}
},
colors: ['#2f7ed8', '#00FF00', '#FF4500'],
series: [{ name: 'ยอดผลิตต่อวัน',
data: [<?php echo $T2;?>]},
{
name: 'ยอดการผลิต',
data: ['',<?php
include("../../cond.ua.php");
date_default_timezone_set('Asia/Bangkok');
$d1 = date("Y-m-d");
$t1 = "$d1 8:00:00"; $t2 = "$d1 8:30:00";
$t3 = "$d1 8:31:00"; $t4 = "$d1 9:00:00";
$t5 = "$d1 9:00:01"; $t6 = "$d1 9:30:00";
$t7 = "$d1 9:31:00"; $t8 = "$d1 10:00:00";
$t9 = "$d1 10:00:01"; $t10 = "$d1 10:30:00";
$t11 = "$d1 10:31:00"; $t12 = "$d1 11:00:00";
$t13 = "$d1 11:00:01"; $t14 = "$d1 11:30:00";
$t15 = "$d1 11:31:00"; $t16 = "$d1 12:00:00";
$t17 = "$d1 12:00:01"; $t18 = "$d1 12:30:00";
$t19 = "$d1 12:30:00"; $t20 = "$d1 13:00:00";
$total = "SELECT Name,DDate,count(Count) AS TT FROM count WHERE Name='$NN' AND DDate BETWEEN '$t1' AND '$t2'
UNION SELECT Name,DDate,count(Count) AS TT FROM count WHERE Name='$NN' AND DDate BETWEEN '$t3' AND '$t4'
UNION SELECT Name,DDate,count(Count) AS TT FROM count WHERE Name='$NN' AND DDate BETWEEN '$t5' AND '$t6'
UNION SELECT Name,DDate,count(Count) AS TT FROM count WHERE Name='$NN' AND DDate BETWEEN '$t7' AND '$t8'
UNION SELECT Name,DDate,count(Count) AS TT FROM count WHERE Name='$NN' AND DDate BETWEEN '$t9' AND '$t10'
UNION SELECT Name,DDate,count(Count) AS TT FROM count WHERE Name='$NN' AND DDate BETWEEN '$t11' AND '$t12'
UNION SELECT Name,DDate,count(Count) AS TT FROM count WHERE Name='$NN' AND DDate BETWEEN '$t13' AND '$t14'
UNION SELECT Name,DDate,count(Count) AS TT FROM count WHERE Name='$NN' AND DDate BETWEEN '$t15' AND '$t16'
UNION SELECT Name,DDate,count(Count) AS TT FROM count WHERE Name='$NN' AND DDate BETWEEN '$t17' AND '$t18'
UNION SELECT Name,DDate,count(Count) AS TT FROM count WHERE Name='$NN' AND DDate BETWEEN '$t19' AND '$t20' ";
$query3 = mysqli_query($conn, $total);
while($result3 = mysqli_fetch_array($query3,MYSQLI_ASSOC)){
echo $result3["TT"].",";
}
?>]}]
})
};
</script>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
Tag : PHP, MySQL
|
|
 |
 |
 |
 |
Date :
2019-04-24 15:28:26 |
By :
Lun2560 |
View :
1388 |
Reply :
14 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จากโค๊ดของคุณ ถ้าช่วงเวลาไหน ไม่มีข้อมูล มันก็จะไม่แสดงข้อมูลเป็น 0 คือไม่มีมาให้เห็น
พอเข้าลูป อันที่มีข้อมูลก็จะขยับมาอยู่ต้นๆ
ลองเปลี่ยนดูครับ
Code (SQL)
select c.Name, count(c.Name), t.label
from (
select '$d1 08:00' st, '$d1 08:29:59' en, '08:00-08:30' lebel
union select '$d1 08:30', '$d1 08:59:59', '08:30-09:00'
union select '$d1 09:00', '$d1 09:29:59', '09:00-09:30'
... ใส่ต่อให้ครบ
union select '$d1 16:30', '$d1 17:00', '16:30-17:00'
) as t #ตารางกำหนดเวลา
left join `count` c on c.DDate between t.st and t.en
where c.Name='$NN'
group by t.label
|
ประวัติการแก้ไข 2019-04-25 08:35:20 2019-04-25 08:36:00
 |
 |
 |
 |
Date :
2019-04-25 08:30:59 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ต้องครับ ลองวิเคราะห์ sql statement ที่ผมทำเป็นตัวอย่างดูก่อน
มันเป็น สร้าง temporary ตารางเวลา ขึ้นมา เพื่อนำมาแมพ กับ ตาราง count ครับ
แต่ ถ้าเข้าใจการคิวรี่ อาจจะตัดตาราง count ออกไปเลยก็ได้ ใช้ ตาราง detail อย่างเดียว
เพียงแต่ กำหนด index ให้ครอบคลุมการทำงานไว้ ก็จะไมมีปัญหาเรื่อง ความเร็ว
|
 |
 |
 |
 |
Date :
2019-04-26 10:40:23 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอา sql statement ที่เขียนใหม่ และ เออเร่อร์ มาแสดงด้วยสิครับ
ถ้าไม่เอามาแสดงก็ต้องตรวจเออเร่อร์ เอาเองแหล่ะครับ
|
 |
 |
 |
 |
Date :
2019-04-26 14:17:29 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 5 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-04-26 14:17:29
รายละเอียดของการตอบ ::
ตอนนี้ไม่ error แล้วคับแต่กราฟไม่ขึ้น
Code (PHP)
<?php
include("../../cond.ua.php");
include("../thaidate1.php");
$Name = $_REQUEST['Name'];
$check1 = "SELECT * FROM count WHERE Name='$Name' AND DATE(DDate)=CURDATE() ";
$q1 = mysqli_query($conn, $check1);
$result = mysqli_fetch_array($q1,MYSQLI_ASSOC);
$PP = $result["Process"];
$NN = $result["Name"];
$check2 = "SELECT * FROM work_detail WHERE Name='$NN'";
$cq2 = mysqli_query($conn, $check2);
$result2 = mysqli_fetch_array($cq2,MYSQLI_ASSOC);
$T1 = $result2["Target2"];
$T2 = $result2["Total"];
?>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>
<script type="text/javascript">
window.onload = function () {
Highcharts.chart('container', {
chart: {
type: 'column'
},
title: {
text: 'กราฟแสดงผลการผลิต วันที่ <?php echo thai_date_fullmonth(time()); ?><br/>เป้าผลิตต่อวัน <a style="color:#FF4500;><?php echo $T1;?></a> ชิ้น'
},
subtitle: {
text: ''
},
xAxis: {
categories: [
/*--- ตรงนี้คือต้องจะให้แสดงข้อมูลทั้งหมดครับไม่ว่านะช่วงเวลาที่ query จะมีข้อมูลหรือไม่มีก็ตามคับ -- */
'ยอดผลิต',
'8:00-8:30',
'8:31-9:00',
'9:01-9:30',
'9:31-10:00',
'10:01-10:30',
'10:31-11:00',
'11:01-11:30',
'11:31-12:00',
'12:01-12:30',
'12:31-13:00',
/* ---- */
],
crosshair: true
},
yAxis: {
min: 0,
title: {
text: 'เป้าผลิตต่อวัน'
}
},
tooltip: {
headerFormat: '<span><?php echo $NN." ".$PP;?></span><table style="font-size:14px;width:100px;height:100;">',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y} pcs</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
},
plotOptions: {
column: {
pointPadding: 0.1,
borderWidth: 0
}
},
colors: ['#2f7ed8', '#00FF00', '#FF4500'],
series: [{ name: 'ยอดผลิตต่อวัน',
data: [<?php echo $T2;?>]},
{
name: 'ยอดการผลิต',
data: ['',<?php
include("../../cond.ua.php");
date_default_timezone_set('Asia/Bangkok');
//$d1 = date("Y-m-d");
$d1 = "2019-04-24";
$t1 = "$d1 8:00:00"; $t2 = "$d1 8:30:00";
$t3 = "$d1 8:31:00"; $t4 = "$d1 9:00:00";
$t5 = "$d1 9:00:01"; $t6 = "$d1 9:30:00";
$t7 = "$d1 9:31:00"; $t8 = "$d1 10:00:00";
$t9 = "$d1 10:00:01"; $t10 = "$d1 10:30:00";
$t11 = "$d1 10:31:00"; $t12 = "$d1 11:00:00";
$t13 = "$d1 11:00:01"; $t14 = "$d1 11:30:00";
$t15 = "$d1 11:31:00"; $t16 = "$d1 12:00:00";
$t17 = "$d1 12:00:01"; $t18 = "$d1 12:30:00";
$t19 = "$d1 12:30:00"; $t20 = "$d1 13:00:00";
$t21 = "$d1 13:00:01"; $t22 = "$d1 13:30:00";
$t23 = "$d1 13:31:00"; $t24 = "$d1 14:00:00";
$t25 = "$d1 14:00:01"; $t26 = "$d1 14:30:00";
$t27 = "$d1 14:31:00"; $t28 = "$d1 15:00:00";
$t29 = "$d1 15:00:01"; $t30 = "$d1 15:30:00";
$t31 = "$d1 15:31:00"; $t32 = "$d1 16:00:00";
$t33 = "$d1 16:00:01"; $t34 = "$d1 16:30:00";
$t35 = "$d1 16:31:00"; $t36 = "$d1 17:00:00";
$total = "select c.Name, count(c.Name), t.label
from (
select '$d1 08:00' st, '$d1 08:29:59' en, '08:00-08:30' lebel
union select '$d1 08:30', '$d1 08:59:59', '08:30-09:00'
union select '$d1 09:00', '$d1 09:29:59', '09:00-09:30'
union select '$d1 09:30', '$d1 09:59:59', '19:30-09:00'
union select '$d1 10:00', '$d1 10:29:59', '10:00-09:30'
union select '$d1 10:30', '$d1 10:59:59', '10:30-09:00'
union select '$d1 11:00', '$d1 11:29:59', '11:00-09:30'
union select '$d1 11:30', '$d1 11:59:59', '11:30-09:00'
union select '$d1 12:00', '$d1 12:29:59', '12:00-09:30'
union select '$d1 12:30', '$d1 12:59:59', '12:30-09:00'
union select '$d1 13:00', '$d1 13:29:59', '13:00-09:30'
union select '$d1 13:30', '$d1 13:59:59', '13:30-09:00'
union select '$d1 14:00', '$d1 14:29:59', '14:00-09:30'
union select '$d1 14:30', '$d1 14:59:59', '14:30-09:00'
union select '$d1 15:00', '$d1 15:29:59', '15:00-09:30'
union select '$d1 15:30', '$d1 15:59:59', '15:30-09:00'
union select '$d1 16:00', '$d1 16:29:59', '16:00-09:30'
union select '$d1 16:30', '$d1 17:00', '16:30-17:00'
) as t
left join count c on c.DDate between t.st and t.en from count
where c.Name='$NN' group by t.label ";
$query3 = mysqli_query($conn, $total);
while($result3 = mysqli_fetch_array($query3,MYSQLI_ASSOC)){
echo $result3["TT"].",";
}
?>]}]
})
};
</script>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
|
 |
 |
 |
 |
Date :
2019-04-26 14:59:38 |
By :
Lun2560 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
$result3["TT"] TT มันเป็น ฟีลด์ไหนใน sql result ครับ
select c.Name, count(c.Name) TT, t.label
ปล. ให้ใช้แบบนี้
Code (PHP)
$query3 = $conn->query($total);
while($result3 = $query3->fetch_object() ){
echo $result3->TT . ',';
|
ประวัติการแก้ไข 2019-04-26 15:10:40 2019-04-26 15:13:09
 |
 |
 |
 |
Date :
2019-04-26 15:09:33 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก็ในโค๊ดคุณไม่ได้ใส่ไง ผมเล่ยเน้นให้ดู
ตอนนี้ได้หรือยังครับ
|
 |
 |
 |
 |
Date :
2019-04-26 15:23:07 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เหมือนเดิมคับอารย์
|
 |
 |
 |
 |
Date :
2019-04-26 15:31:32 |
By :
Lun2560 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
วิวซอร์ส ออกมาดูครับว่า มันได้ตามต้องการไหม
|
 |
 |
 |
 |
Date :
2019-04-26 15:41:00 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
วิซอร์สจาก browser ครับ จะได้ดูว่า โค๊ดมันขาดอะไรไป
|
 |
 |
 |
 |
Date :
2019-04-26 16:22:07 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|