ความเห็น: 10
php jpgraph ใช้ภาษาไทยไม่ได้ มีวิธีแก้
เขียนโปรแกรมกับ php แล้วจำเป็นต้องออกรายงานหรือ Graph แสดงข้อมูล ไม่อยากเสียเวลาเขียน function graph ให้วุ่นวาย ก็เรียกใช้บริการ jpgraph (http://www.aditus.nu/jpgraph/) ซึ่งมีรูปแบบของ graph ให้เลือกใช้อย่างมากมาย มากจนเลือกไม่ถูก แต่ไม่วายมีปัญหากับภาษาไทย ซะนี่ ออกมาเป็นภาษาต่างดาว
ทำงัยดีหล่ะ ต้องพึ่งพาพี่ Google และ document ของ jpgraph (http://www.aditus.nu/jpgraph/phptip04.php) ... กว่าจะได้ผลลัพธ์ตามต้องการก็ใช้เวลานิดหน่อย ดูรายละเอียดตามนี้เลยครับ ลองมาแล้วได้ผลจริงครับ
ใช้ jpgraph แล้วภาษาไทย ไม่ได้ ให้แก้ตามนี้ คือเพิ่ม font ภาษาไทย เข้าไปใน file
1. jpg-config.inc.php
DEFINE('CORDIA_TTF_FONT', 'cordia.ttf');
DEFINE('CORDIAB_TTF_FONT', 'cordiab.ttf');
DEFINE('CORDIAI_TTF_FONT', 'cordiai.ttf');
DEFINE('CORDIAZ_TTF_FONT', 'cordiaz.ttf');
DEFINE('ANGSA_TTF_FONT', 'angsa.ttf');
DEFINE('ANGSAB_TTF_FONT', 'angsab.ttf');
DEFINE('ANGSAI_TTF_FONT', 'angsai.ttf');
DEFINE('ANGSAZ_TTF_FONT', 'angsaz.ttf');
DEFINE('TAHOMA_TTF_FONT', 'tahoma.ttf');
DEFINE('TAHOMAB_TTF_FONT', 'tahomabd.ttf');
2. jpgraph_ttf.inc.php
// Thai font ( Number 40-80 )
DEFINE("FF_ANGSA",47);
DEFINE("FF_CORDIA",48);
DEFINE("FF_TAHOMA",49);
และเพิ่มเติมใน class TTF ในไฟล์เดียวกัน
/* thai font */
FF_CORDIA => array(FS_NORMAL=>CORDIA_TTF_FONT,
FS_BOLD=>CORDIAB_TTF_FONT,
FS_ITALIC=>CORDIAI_TTF_FONT,
FS_BOLDITALIC=>CORDIAZ_TTF_FONT ),
FF_ANGSA => array(FS_NORMAL=>ANGSA_TTF_FONT,
FS_BOLD=>ANGSAB_TTF_FONT,
FS_ITALIC=>ANGSAI_TTF_FONT,
FS_BOLDITALIC=>ANGSAZ_TTF_FONT ),
FF_TAHOMA => array(FS_NORMAL=>TAHOMA_TTF_FONT,
FS_BOLD=>TAHOMAB_TTF_FONT),
สำคัญอีกอย่างคือการแสดงผล ภาษาไทยใน graph ต้องแปลงให้เป็น unicode ก่อน เช่น
$title = iconv('TIS-620', 'UTF-8',"รายงาน Graph แสดงจำนวน");
ตัวอย่างเมื่อเรียกใช้งาน
<?php
// ljp, 01/03/01 20:32
include ("../jpgraph/src/jpgraph.php");
include ("../jpgraph/src/jpgraph_bar.php");
$datay=array(0.13,0.25,0.21,0.35,0.31,0.06);
$datax=array("Jan","Feb","Mar","Apr","May","June");
$graph = new Graph(600,400,"auto");
$graph->img->SetMargin(60,40,50,120);
$graph->SetScale("textlin");
$graph->SetMarginColor("lightblue");
$graph->SetShadow();
$graph->title->Set($title);
$graph->title->SetFont(FF_TAHOMA, FS_BOLD, 16);
//$graph->title->SetFont(FF_TAHOMA,FS_NORMAL,12);
$graph->title->SetColor("darkred");
$graph->legend->SetFont(FF_TAHOMA,FS_BOLD);
$graph->xaxis->SetFont(FF_TAHOMA,FS_NORMAL,12);
$graph->yaxis->SetFont(FF_TAHOMA,FS_NORMAL,12);
$graph->yscale->ticks->SupressZeroLabel(false);
$graph->xaxis->SetTickLabels($datax);
$graph->xaxis->SetLabelAngle(50);
$bplot = new BarPlot($datay);
$bplot->SetWidth(0.6);
$bplot->SetFillGradient("navy","#EEEEEE",GRAD_LEFT_REFLECTION);
$bplot->SetColor("white");
$graph->Add($bplot);
// Finally send the graph to the browser
$graph->Stroke();
ที่มา : narisa, jpgraph, และที่ google พาไป
ความเห็น
เนื้อหานี้ได้ copy มาจาก website หนึ่ง แต่จำไม่ได้แล้วว่าเอามาจากไหน ขอให้ credit คนเขียนคนแรกด้วยครับ. ขออภัยที่ไม่ได้อ้างถึงในตอนแรก
ดึงข้อมูลจาก database มาเขียนเป็นกราฟต้องทำยังไงค่ะ
รบกวนช่วยให้คำชี้เเนะ เพราะว่าเป็นมือใหม่อยู่อ่ะค่ะ
เวลาผมใส่ค่าในแกน X จะเกิด Error ขึ้นครับ แต่ถ้าไม่ใส่($graph->xaxis->SetTickLabels($datax);
)รันได้ปกติ แต่แกน X จะขึ้นเป็นตัวเลขแทน คือผมต้องการให้ขึ้นเป็นตัวอักษรตามที่เรากำหนด เหมือนตัวอย่างที่พี่เขียนมาให้ดูครับ ไม่รู้จะแก้อย่างไง ขอความกรุณาด้วยครับ ผมใช้กราฟเบบบาร์เหมือนที่พี่เขียนเป็นตัวอย่าง ขอบคุณอย่างมากครับ
// We need some data
$datay=array(0.13,0.25,0.21,0.35,0.31,0.06);
$datax=array("Jan","Feb","Mar","Apr","May","June");
|
|
|
|
// Setup X-axis labels
$graph->xaxis->SetTickLabels($datax);
$graph->xaxis->SetLabelAngle(50);
บันทึกอื่นๆ
- เก่ากว่า « no update
- ใหม่กว่า » php function ที่ช่วยในการตัด tag html













