 |
การแก้ไขปัญหา Jpgraph อัพขึ้น host จริงหาไฟล์ฟอนต์ไม่เจอ และไม่แสดงภาษาไทย |
|
 |
|
|
 |
 |
|
สำหรับเวอร์ชั่น 3.5.0 ให้เข้าไปแก้ไขไฟล์ดังนี้
1. jpg-config.inc.php (ตรงส่วนนี้จะแก้ปัญหาหาไฟล์ฟอนต์ไม่พบ)
ค้นหา
Code
// Default theme class name
define('DEFAULT_THEME_CLASS', 'UniversalTheme');
define('SUPERSAMPLING', true);
define('SUPERSAMPLING_SCALE', 1);
เพิ่ม
Code
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');
ปล.เปลี่ยนชื่อฟอนต์ได้ตามต้องการ แต่ต้องให้ถูกรูปแบบข้างบน
และต้อง copy ฟอนต์ใส่ใน folder jpgraph/fonts ตอนอัพขึ้นโฮสจริงด้วย
2. jpgraph_ttf.inc.php
ค้นหา
Code
// Dejavu-fonts http://sourceforge.net/projects/dejavu
define("FF_DV_SANSSERIF",47);
define("FF_DV_SERIF",48);
define("FF_DV_SANSSERIFMONO",49);
define("FF_DV_SERIFCOND",50);
define("FF_DV_SANSSERIFCOND",51);
เพิ่ม
Code
// Thai font
DEFINE("FF_ANGSA",47);
DEFINE("FF_CORDIA",48);
DEFINE("FF_TAHOMA",49);
ตรงนี้สำคัญ ตัวเลข 47, 48, 49 ด้านบนนี้ จะต้องต่อจาก font ทีั่ของเดิม
define ไว้นะครับ อย่างของเวอร์ชั่นที่ผมใช้ จะ define สุดท้ายที่ 51
Code
define("FF_DV_SANSSERIFCOND",51); << 51
ดังนั้น คุณจะต้องใส่ตัวเลข 52 ซึ่งเป็นลำดับต่อไป
จาก DEFINE("FF_ANGSA",47); => DEFINE("FF_ANGSA",52);
แล้วก็เรียง font ไทยมาเรื่อยๆครับ
และเพิ่มเติมใน class TTF ในไฟล์เดียวกัน
เพิ่มต่อ /* Chinese fonts */ หรือ /*fonts ไหนก็ได้ขอให้อยู่ใน class TTF*/
Code
/* 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),
โค้ดกราฟ
<?php
include("config.php");
include("../jpgraph/jpgraph.php");
include("../jpgraph/jpgraph_bar.php");
$m = $_GET['month'];
$y = $_GET['year'];
$arr = array("มกราคม-ธันวาคม","มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม",
"พฤศจิกายน","ธันวาคม");
// ติดต่อ ฐานข้อมูล เลือกข้อมูลขึ้นมาเพื่อแสดงกราฟ
if($m==0)
{
$strSQL = "SELECT o.ot_code as ot_code, Count(t.ot_id) as count_ot_id FROM patient AS t INNER JOIN ot AS o ON o.ot_id = t.ot_id
WHERE MONTH(pat_date) = $m OR YEAR(pat_date) = $y GROUP BY o.ot_code";
}else{
$strSQL = "SELECT o.ot_code as ot_code, Count(t.ot_id) as count_ot_id FROM patient AS t INNER JOIN ot AS o ON o.ot_id = t.ot_id
WHERE MONTH(pat_date) = $m AND YEAR(pat_date) = $y GROUP BY o.ot_code";
}
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
// เตรียมข้อมุลที่จะแสดง เพื่อสร้างกราฟ
//$datay=array();
while($objResult = mysql_fetch_array($objQuery))
{
$datay[] = $objResult["count_ot_id"];
$datax[] = $objResult["ot_code"];
}
// Create the graph.
$graph = new Graph(600,400,'auto');
$graph->SetScale("textlin");
$graph->SetMarginColor('navy:1.9');
$graph->SetBox();
$graph->SetMargin(60,50,0,80);
// Create and add a new text
$txt=new Text('เดือน '.$arr[$m].' ปี '.((int)$y+543));
$txt->SetPos(220,360);
$txt->SetColor('#000000');
$txt->SetFont(FF_ANGSA,FS_BOLD,16);
$txt->SetBox('yellow','navy','#E8E8E8@1');
$graph->AddText($txt);
// Setup the titles
$graph->title->Set('กราฟแสดงจำนวนผู้ป่วย');
$graph->xaxis->title->Set('OT');
$graph->yaxis->title->Set('จำนวนผู้ป่วย');
$graph->ygrid->SetFill(true,'#[email protected]','#[email protected]');
$graph->title->SetFont(FF_ANGSA,FS_BOLD,16);
$graph->yaxis->title->SetFont(FF_ANGSA,FS_BOLD,16);
$graph->xaxis->title->SetFont(FF_ANGSA,FS_BOLD,16);
$graph->SetTitleBackground('lightblue:1.3',TITLEBKG_STYLE2,TITLEBKG_FRAME_BEVEL);
$graph->SetTitleBackgroundFillStyle(TITLEBKG_FILLSTYLE_HSTRIPED,'lightblue','blue');
$graph->xaxis->SetTickLabels($datax);
// Create a bar pot
$bplot = new BarPlot($datay);
$bplot->SetFillColor('#ff9900');
$bplot->value->SetFont(FF_ANGSA, FS_BOLD,16);
$bplot->SetWidth(0.6);
$bplot->SetPattern(PATTERN_CROSS1,'navy');
$graph->Add($bplot);
$graph->Stroke();
?>
ปล.ผิดพลาดประการใดก็ขออภัยมา ณ ที่นี้ด้วย เพราะมึนเพิ่งได้ ทำมา 3-4 วันแล้ว เสร็จปุบก็เอามาบอกกล่าวกันให้ทราบ
ขอขอบคุณ mr.win ที่ให้ความรู้ตลอดเรื่อยมา คุณ NOOM ที่ช่วยในการ query กราฟจากฐานข้อมูล 
Tag : PHP
|
ประวัติการแก้ไข 2012-06-16 17:13:09 2012-06-16 17:14:19 2012-06-16 17:16:14 2012-06-16 17:17:42 2012-06-16 17:19:27
|
 |
 |
 |
 |
Date :
2012-06-16 17:10:32 |
By :
บู้ |
View :
2135 |
Reply :
6 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ๋อแก้ไขได้แล้วครับ คืออันเก่าไม่ได้แก้ไขไฟล์ jpg-config.inc.php นะครับ
|
 |
 |
 |
 |
Date :
2012-06-17 21:23:59 |
By :
บู้ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ดีใจด้วยครับ 
|
 |
 |
 |
 |
Date :
2012-06-18 05:55:31 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือผมก็ติดปัญหาไม่พบฟอนต์เช่นกันครับ แต่ในไฟล์ jpg-config.inc.php
ผมหา
Code (PHP)
// Default theme class name
define('DEFAULT_THEME_CLASS', 'UniversalTheme');
define('SUPERSAMPLING', true);
define('SUPERSAMPLING_SCALE', 1);
ไม่เจอเลยครับ ต้องทำยังไงดีครับ..
|
 |
 |
 |
 |
Date :
2012-08-23 20:47:47 |
By :
fram |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้ว directory ที่เราใช้เก็บ font ต้องอยู่ตำแหน่งไหนครับ
|
 |
 |
 |
 |
Date :
2012-08-24 10:07:20 |
By :
fram |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|