 |
แปลงข้อมูลกราฟ ตัวเลข เป็นตัวหนังสือ + มีรูปค่ะ ช่วยยกตัวอย่างหน่อยค่ะ |
|
 |
|
|
 |
 |
|
ช่วยยกตัวอย่างหน่อยค่ะ

Code (PHP)
<?
header("Content-type: image/png");
// ค่าของข้อมูลที่ต้องการสร้างกราฟ
include("../fun/config.inc.php");
mysql_connect($hostname, $user, $password) or die("ติดต่อฐานข้อมูลไม่ได้");
mysql_select_db($dbname) or die("เลือกฐานข้อมูลไม่ได้");
mysql_query("SET NAMES UTF8");
//////////////////////////////////////////////////////////////////////////////////////////////////////////
$max = mysql_query("select SUM(service_num) from tb_job where service_code='sv001'");
$max2 = mysql_query("select SUM(service_num) from tb_job where service_code='sv002'");
$max3 = mysql_query("select SUM(service_num) from tb_job where service_code='sv003'");
$max4 = mysql_query("select SUM(service_num) from tb_job where service_code='sv004'");
$max5 = mysql_query("select SUM(service_num) from tb_job where service_code='sv005'");
$max6 = mysql_query("select SUM(service_num) from tb_job where service_code='sv006'");
$max7 = mysql_query("select SUM(service_num) from tb_job where service_code='sv007'");
$max8 = mysql_query("select SUM(service_num) from tb_job where service_code='sv008'");
//////////////////////////////////////////////// end //////////////////////////////////////////////////////////
$total_max = mysql_result($max,0);
$total_max2 = mysql_result($max2,0);
$total_max3 = mysql_result($max3,0);
$total_max4 = mysql_result($max4,0);
$total_max5 = mysql_result($max5,0);
$total_max6 = mysql_result($max6,0);
$total_max7 = mysql_result($max7,0);
$total_max8 = mysql_result($max8,0);
$data[1]="$total_max";
$data[2]="$total_max2";
$data[3]="$total_max3";
$data[4]="$total_max4";
$data[5]="$total_max5";
$data[6]="$total_max6";
$data[7]="$total_max7";
$data[8]="$total_max8";
$img = ImageCreate(500, 310); //สร้างรูปขนาด 250x320
ImageColorAllocate($img, 255, 255, 255); //กำหนดพื้นรูปเป็นสีขาว
//กำหนดสีที่ใช้ในการวาด
$line = ImageColorAllocate($img ,176, 208, 210);
$dataFill = ImageColorAllocate($img, 122, 176, 180);
$black = ImageColorAllocate($img, 87, 32, 324);
//สร้างเส้นตรงในแนวตั้ง ซึ่งเป็นเส้นที่ขนาบขอบด้านซ้ายของแผนภูมิแท่ง
ImageLine($img, 50, 50, 50, 50, $line);
$bartick = 20; //ความหนาของแผนภูมิแท่งแต่ละอัน
$barspace = 30; //ระยะห่างระหว่างแผนภูมิแท่งแต่ละอัน
$barmax = 400; //ความยาวสูงสุดของแผนภูมิแท่ง
$baseX = 50; //จุดเริ่มต้นในแนวนอนของแผนภูมิแท่ง
$baseY = 30; //จุดเริ่มต้นในแนวตั้งของแผนภูมิแท่ง
//วนลูปเพื่อสร้างแผนภูมิแท่ง
for ($i=1; $i<=count($data); $i++) {
//หาจำนวนเความกว้างของกราฟ
$percent[$i]=$data[$i];
$data[$i]=$data[$i]*$barmax /100;
/* สร้างตัวแปรอาร์เรย์เก็บพิกัดของมุมต่างๆของแผนภูมิแท่ง เพื่อนำไปกำหนดให้ฟังก์ชั่น
ImagePolygon() */
$setBar[$i] = array($baseX, $baseY,
($baseX + $barmax), $baseY,
($baseX + $barmax), ($baseY + $bartick),
$baseX, ($baseY + $bartick));
//ใช้ฟังก์ชั่น ImagePolygon() เพื่อสร้างแผนภูมิแท่ง
ImagePolygon($img, $setBar[$i], 4, $line);
//วาดแผนภูมิแท่ง โดยใช้ฟังก์ชั่น ImageFilledRectangle()
ImageFilledRectangle($img, $baseX, $baseY, ($data[$i]+50), ($baseY + $bartick), $dataFill);
//แสดงข้อความเพื่อบอกค่าของแผนภูมิแท่งแต่ละอัน
ImageString($img, 3, ($baseX - 10), $baseY + 5, $i , $black);
ImageString($img, 3, ($data[$i] + 55), $baseY + 5,
number_format($percent[$i]) ."%", $black);
$baseY += $barspace; //ขยับจุดเริ่มต้นในแนวตั้งของแผนภูมิแท่ง
}
ImagePNG($img);
ImageDestroy($img);
?>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<?
echo "<CENTER> รวม : $total_max</CENTER>";
?>
Tag : - - - -
|
|
 |
 |
 |
 |
Date :
2010-03-14 17:29:12 |
By :
Ninezy |
View :
1876 |
Reply :
8 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
//วนลูปเพื่อสร้างแผนภูมิแท่ง
$cols = array('ถอนฟัน', 'อุดฟัน', 'xxx'); //สร้างให้มีจำนวนเท่ากับที่แสดง
for ($i=1; $i<=count($data); $i++) {
//หาจำนวนเความกว้างของกราฟ
$percent[$i]=$data[$i];
$data[$i]=$data[$i]*$barmax /100;
/* สร้างตัวแปรอาร์เรย์เก็บพิกัดของมุมต่างๆของแผนภูมิแท่ง เพื่อนำไปกำหนดให้ฟังก์ชั่น
ImagePolygon() */
$setBar[$i] = array($baseX, $baseY,
($baseX + $barmax), $baseY,
($baseX + $barmax), ($baseY + $bartick),
$baseX, ($baseY + $bartick));
//ใช้ฟังก์ชั่น ImagePolygon() เพื่อสร้างแผนภูมิแท่ง
ImagePolygon($img, $setBar[$i], 4, $line);
//วาดแผนภูมิแท่ง โดยใช้ฟังก์ชั่น ImageFilledRectangle()
ImageFilledRectangle($img, $baseX, $baseY, ($data[$i]+50), ($baseY + $bartick), $dataFill);
//แสดงข้อความเพื่อบอกค่าของแผนภูมิแท่งแต่ละอัน
ImageString($img, 3, ($baseX - 10), $baseY + 5, $cols[$i - 1] , $black); //บรรทัดนี้ผมแก้ ให้แสดงค่าในอาเรย์แทน
ImageString($img, 3, ($data[$i] + 55), $baseY + 5,
number_format($percent[$i]) ."%", $black);
$baseY += $barspace; //ขยับจุดเริ่มต้นในแนวตั้งของแผนภูมิแท่ง
}
ไม่ได้ลองนะครับ คิดว่าน่าจะได้แล้ว
|
 |
 |
 |
 |
Date :
2010-03-14 17:40:45 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมเดาเอานะครับว่าน่าจะเป็นที่ตัวแปร $i
สร้างคำที่ต้องแสดงเป็น array
$label = array('ถอนฟัน', 'อุดฟัน', 'ใส่ฟัน'); //ที่เหลือเพิ่มเอาเองนะครับ
ImageString($img, 3, ($baseX - 10), $baseY + 5, $label[$i-1] , $black);
|
 |
 |
 |
 |
Date :
2010-03-14 17:44:35 |
By :
DownsTream |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เป็นผม หา ตัว js ใช้ดีกว่า ประหยัดทรัพยากรเซอร์ฟเวอร์ครับ แถมอาจมี effect แถมตอนเอาเมาส์ชี้

แต่จริงๆยังไม่เคยวาดกราฟแลยแฮะ php
|
 |
 |
 |
 |
Date :
2010-03-14 17:52:16 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ยังไงดีค่ะ แล้วตัวหนังสือมันทับกันด้วยค่ะ
ใส่ <meta http-equiv="content-type" content="text/html;charset=utf-8"/> บนสุดก็ไม่ได้
มันติด header("Content-type: image/png");
|
 |
 |
 |
 |
Date :
2010-03-14 18:03:25 |
By :
Ninezy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เรื่องตัวหนังสือผมไม่แน่ใจว่า ต้องปรับ encoding ที่สตริงเป็นอะไรนะครับ ส่วนเรื่อง ตำแหน่ง ดูที่แกน x ครับ ให้น้อยลง
จาก
ImageString($img, 3, ($baseX - 10), $baseY + 5, $cols[$i - 1] , $black);
อาจเป็น
ImageString($img, 3, ($baseX - 60), $baseY + 5, $cols[$i - 1] , $black);
ส่วน encoding นี่ไม่รู้ ลองมั่วดูเป็น
ImageString($img, 3, ($baseX - 60), $baseY + 5, iconv('ISO-8859-1', 'UTF-8', $cols[$i - 1]) , $black);
ไม่รู้ว่าจะได้หรือป่าวนะ
|
 |
 |
 |
 |
Date :
2010-03-14 18:12:23 |
By :
pjgunner |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่ะ ตัวหนังสือไม่ทับกันแล้ว แต่ยังติดที่ตัวหนังสือเป็นภาษาไรไม่รู้
|
 |
 |
 |
 |
Date :
2010-03-14 18:20:19 |
By :
Ninezy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ไม่ได้เลย ตั้งแต่ตอนเย็นละ สงสัยมันคงไม่รองรับภาษาไทยแน่ๆ T_T
|
 |
 |
 |
 |
Date :
2010-03-14 20:57:52 |
By :
Ninezy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|