เรื่องกราฟครับ เอาค่าจากในฐานข้อมูล ไปวนลูปในกราฟยังไง ช่วยหน่อยครับ ปัญหาที่คิดไม่ออกครับ เพราะไม่ถนัดอยากได้คำแนะนำครับ
ผมมีตารางนี้ครับ
โค้ดแสดงกราฟครับ
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['เดือน', '1', '2', '3','4','5','6','7'],
['ม.ค', 4566,546,5454,130,140,350,1200],
['ก.พ', 898,865,787,130,8556,150,1300],
['มี.ค', 545,5465,4784,130,2254,170,990],
['เม.ย', 6868,2232,5711,782,170,730,780],
['พ.ค', 452,865,120,5441,8548,830,1570],
['มิ.ย', 5685,5554,1277,788,190,450,7985],
['ก.ค', 543,1111,1447,130,888,780,780],
['ส.ค', 5464,2222,7874,130,210,890,1300],
['ก.ย', 1001,4574,5444,130,8897,780,1430],
['ต.ค', 1455,235,7895,4455,855,8987,1470],
['พ.ย', 1785,2355,1010,8787,240,250,7890],
['ธ.ค', 1258,2131,2020,457,250,780,2580]
]);
var options = {
title: 'แสดงยอดขายสินค้า'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
ผมต้องการเอา ตารางด้านบนมาวนใน สคริปนีด้านบนครับ
โดย เอาค่าในตารางด้านบนมาใส่ตรงนี้ครับ ['เดือน', '1', '2', '3','4','5','6','7'] โดยชื่อ Group_name เอามาใส่แทน 1 2 3 4 ... ต้องนี้ครับ มันก็จะมี 7 เส้น ครับ
แล้วค่ามัน ได้จากอันนี้ครับ
ก็คือ จะเปลี่ยบเทียบ ว่า ค่า Group_Code มันเท่ากัน ก็จะได้จำนวน ของมันมา แล้วเอาค่า total ที่ได้ของแต่ละอันมาใส่แทนค่าตัวเลข จากด้านบนครับ โดยแบ่งตาม เดือนและ ปี ที่get มาครั
ผมไม่รู้ว่าต้องเอาไปใส่ไป วนยังไง เพราะค่า total ผมได้มาแล้ว แต่เอาไปวนไม่เป้น รบกวน พี่ ๆ ช่วยหน่อยครับTag : PHP, HTML/CSS, Ajax, jQuery, CakePHP
Date :
2013-07-27 14:51:35
By :
JindaCpe8
View :
782
Reply :
12
รูปอัพไม่ได้ครับ
Date :
2013-07-27 14:51:58
By :
JindaCpe8
Code (PHP)
<?php
$data = " ['เดือน', '1', '2', '3','4','5','6','7'],
['ม.ค', 4566,546,5454,130,140,350,1200],
['ก.พ', 898,865,787,130,8556,150,1300],
['มี.ค', 545,5465,4784,130,2254,170,990],
['เม.ย', 6868,2232,5711,782,170,730,780],
['พ.ค', 452,865,120,5441,8548,830,1570],
['มิ.ย', 5685,5554,1277,788,190,450,7985],
['ก.ค', 543,1111,1447,130,888,780,780],
['ส.ค', 5464,2222,7874,130,210,890,1300],
['ก.ย', 1001,4574,5444,130,8897,780,1430],
['ต.ค', 1455,235,7895,4455,855,8987,1470],
['พ.ย', 1785,2355,1010,8787,240,250,7890],
['ธ.ค', 1258,2131,2020,457,250,780,2580]";
?>
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
<?php echo $data;?>
]);
var options = {
title: 'แสดงยอดขายสินค้า'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="chart_div"></div>
</body>
</html>
Date :
2013-07-27 15:18:53
By :
{Cyberman}
ถ้าไม่อยากจัดรูปแบบให้ยุ่งยาก ใช้ json_encode() และใช้ eval() ในการแปลงสตริงไปเป็นอาร์เรย์ ในจาวาสคริปต์
Code (PHP)
<?php
//SET in while loop
$arr[] = array('เดือน', '1', '2', '3','4','5','6','7');
$arr[] = array('ม.ค', 4566,546,5454,130,140,350,1200);
$arr[] = array('ก.พ', 898,865,787,130,8556,150,1300);
$arr[] = array('มี.ค', 545,5465,4784,130,2254,170,990);
$arr[] = array('เม.ย', 6868,2232,5711,782,170,730,780);
$arr[] = array('พ.ค', 452,865,120,5441,8548,830,1570);
$arr[] = array('มิ.ย', 5685,5554,1277,788,190,450,7985);
$arr[] = array('ก.ค', 543,1111,1447,130,888,780,780);
$arr[] = array('ส.ค', 5464,2222,7874,130,210,890,1300);
$arr[] = array('ก.ย', 1001,4574,5444,130,8897,780,1430);
$arr[] = array('ต.ค', 1455,235,7895,4455,855,8987,1470);
$arr[] = array('พ.ย', 1785,2355,1010,8787,240,250,7890);
$arr[] = array('ธ.ค', 1258,2131,2020,457,250,780,2580);
$data = json_encode($arr);
?>
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
/*
var data = google.visualization.arrayToDataTable([
<?php echo $data;?>
]);
*/
var res = eval(<?php echo $data;?>);
var data = google.visualization.arrayToDataTable(res);
var options = {
title: 'แสดงยอดขายสินค้า'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="chart_div"></div>
</body>
</html>
Date :
2013-07-27 15:25:54
By :
{Cyberman}
ตอนวนด้านบนนิวนแบบไหนหรอครับ
Date :
2013-07-27 17:14:59
By :
JindaCpe8
แบบนี้ วนแล้ว กราฟไม่แสดงอะครับ
<?php
$q = "SELECT SUM( o.Quanlity ) AS total, o.OrderNo, o.ProductID, i.item_Code, g.Group_Code, i.Group_Code
FROM order_detail AS o, inventory AS i, groupindex AS g
WHERE i.Group_Code = g.Group_Code AND o.ProductID = i.item_Code
GROUP BY i.Group_Code";
$ext = mysql_query($q);
if(mysql_num_rows($ext)>0){
$arr = array();
while($r = mysql_fetch_array($ext)){
$arr[] = array($r["item_Name"]
,$r['total']);
$runNo++;
}
}
$data = json_encode($arr);
?>
Date :
2013-07-27 17:48:30
By :
JindaCpe8
ไม่มีใครรู้เลยหรอ
Date :
2013-07-27 21:20:40
By :
JindaCpe8
เดือนต่างๆ มาจากไหนครับ
ต้องดึงค่าต่างๆ เก็บไว้ในอาร์เรย์ตามคีย์ของแต่ละเดือนก่อนนะครับ
โดยที่ค่าที่จะเก็บเข้าไปเป็นค่าแรก ต้องเป็นเดือน แล้วค่าต่อๆไปจึงจะเก็บตัวเลขครับ
Code (PHP)
$arr = array();
while($r = mysql_fetch_array($ext)){
if(!isset($arr[$r['month']])){
$arr[$r['month']][] = $r['month'];//ค่าแรกเป็น เดือนต่างๆ
}
$arr[$r['month']][] = $r['total'];//ค่าต่อๆ ไปเก็บเป็นตัวเลข
}
* month เป็นฟิลด์สมมติ ต้องกำหนดให้ตรงกับฟิลด์ของท่านเอง
ประวัติการแก้ไข 2013-07-27 22:53:45 2013-07-27 22:54:36
Date :
2013-07-27 22:52:23
By :
{Cyberman}
แบบนี้หรือเปล่าครับ
Code (PHP)
<?php
$thai_month_arr=array(
"0"=>"",
"1"=>"ม.ค",
"2"=>"ก.พ",
"3"=>"มี.น",
"4"=>"เม.ย",
"5"=>"พ.ฤ",
"6"=>"มิ.ย",
"7"=>"ก.ค",
"8"=>"ส.ค",
"9"=>"ก.ย",
"10"=>"ต.ค",
"11"=>"พ.ย",
"12"=>"ธ.ค"
);
$q = "SELECT SUM( o.Quanlity ) AS total, o.OrderNo, o.ProductID, i.item_Code, g.*, i.Group_Code
FROM order_detail AS o, inventory AS i, groupindex AS g
WHERE i.Group_Code = g.Group_Code
AND o.ProductID = i.item_Code
GROUP BY i.Group_Code";
$ext = mysql_query($q);
if(mysql_num_rows($ext)>0){
$arr = array();
while($r = mysql_fetch_array($ext)){
if(!isset($arr[$r['month']])){
$arr[$r['month']][] = $thai_month_arr;//ค่าแรกเป็น เดือนต่างๆ
}
$arr[$r['month']][] = $r['total'];//ค่าต่อๆ ไปเก็บเป็นตัวเลข
}
}
$data = json_encode($arr);
echo $data;
?>
Date :
2013-07-27 23:02:48
By :
JindaCpe8
ไส่แบบนี้แล้วเหมือนจะยังไม่ออก น่าจะเกี่ยวกับตัวนี้ $arr[0] = array('ชื่อกลุ่ม', '1', '2', '3','4','5','6','7'); แต่ไม่รู้จะใส่ตรงไหนครับ
<?php
$thai_month_arr=array(
"0"=>"",
"1"=>"1",
"2"=>"2",
"3"=>"3",
"4"=>"4",
"5"=>"5",
"6"=>"6",
"7"=>"7",
"8"=>"8",
"9"=>"9",
"10"=>"10",
"11"=>"11",
"12"=>"12"
);
$q = "SELECT SUM( o.Quanlity ) AS total, o.OrderNo, o.ProductID, i.item_Code, g.*, i.Group_Code
FROM order_detail AS o, inventory AS i, groupindex AS g
WHERE i.Group_Code = g.Group_Code
AND o.ProductID = i.item_Code
GROUP BY i.Group_Code";
$ext = mysql_query($q);
if(mysql_num_rows($ext)>0){
$arr = array();
while($r = mysql_fetch_array($ext)){
if(!isset($arr[$r['month']])){
$arr[$r['month']][] = $thai_month_arr;//ค่าแรกเป็น เดือนต่างๆ
}
$arr[$r['month']][] = $r['total'];//ค่าต่อๆ ไปเก็บเป็นตัวเลข
}
}
$data = json_encode($arr);
echo $data;
?>
Date :
2013-07-27 23:12:59
By :
JindaCpe8
$r['month'] อยู่ในตารางไหนครับ ผมไม่มั่นใจว่าตารางท่านจะมีชื่อฟิลด์นี้อยู่จริง
แล้วก็ส่วนของการเก็บค่าแรกเป็นชื่อเดือนนั้น ต้องระบุคีย์ด้วยครับ
$arr[$r['month']][] = $thai_month_arr[$r['month']];//ค่าแรกเป็น เดือนต่างๆ
* สำคัญมาก
$r['month'] ฟิลด์ month ต้องมีอยู่จริง และมีค่า 0 - 12 ตามที่ท่านประการตัวแปร $thai_month_arr เอาไว้แล้ว
Date :
2013-07-28 06:55:38
By :
{Cyberman}
ต้อง SELECT MONTH(date) AS month .............. ด้วยครับสคริปต์ถึงจะใช้ได้
Date :
2013-07-28 13:47:40
By :
{Cyberman}
Load balance : Server 04