ถามเรื่องการดึงอัตราดอกเบี้ยมาแสดงผลครับ ผมต้องดึงอัตราดอกเบี้ยจากเวบไซต์ธนาคารแห่งประเทศไทยมาแสดงผลครับ
Code (PHP)
<?
$now = date('dmY');
$xlsUrl = 'http://www.bot.or.th/Thai/Statistics/FinancialMarkets/InterestRate/InterestRate_EN_CSV/IN_CSV_LNE_'.$now.'.CSV';
copy($xlsUrl,'Loan.csv');
$count = 0;
$objCSV = fopen("Loan.csv", "r");
?>
<table width="90%" border="1">
<?
while (($objArr = fgetcsv($objCSV, 1000, "|")) !== FALSE)
{
if($count==0 || $count==2 || $count==21)
{
?>
<tr bgcolor="#00CCFF">
<td colspan="7"><div align="center"><?=$objArr[0];?></div></td>
</tr>
<?
$count++;
}
else
{
?>
<tr>
<td><div align="left"><?=$objArr[0];?></div></td>
<td><div align="right"><?=$objArr[1];?></div></td>
<td><div align="right"><?=$objArr[2];?></div></td>
<td><div align="right"><?=$objArr[3];?></div></td>
<td><div align="right"><?=$objArr[4];?></div></td>
<td><div align="right"><?=$objArr[5];?></div></td>
<td><div align="right"><?=$objArr[6];?></div></td>
</tr>
<?
$count++;
}
}
fclose($objCSV);
?>
Date :
2009-12-08 22:33:57
By :
extenser
แหล่มอะ เอามาจากไหนเนี้ย url
Date :
2009-12-08 22:36:10
By :
plakrim
ผมก็เปิดไฟล์ csv บน browser แล้วก็ copy url มาเปลี่ยนตัวแปรวันที่เป็นอันเสร็จเรียบร้อยครับคุณ ปรากริม
Date :
2009-12-08 22:41:23
By :
extenser
ขอบคุณมากครับ แต่ปัญหาของผมคือ
1. ถ้าในวันที่เป็นวันหยุดราชการธนาคารจะไม่ทำงาน
ดังนั้น ถ้าใช้ $now = date('dmY'); ในเวบไซต์จะแสดงข้อมูล ไม่มีข้อมูลในวันหยุดธนาคารครับ
ถ้าเป็นวันหยุด ธนาคารจะแสดงข้อมูลของก่อนหน้าที่เป็นวันหยุดที่มีข้อมูลแทนครับ
2. ธนาคารจะแสดงข้อมูลใหม่ของแต่ละวันหลัง 12.00 (ตามที่เขียนในเวบ) แต่เอาเข้าจริงๆ ก็ไม่ 12.00 เป๊ะ 13.00 บ้าง บางวันก็ 15.00 ซึ่งถ้าใช้ $now = date('dmY'); เรียกข้อมูลของวันใหม่โดยที่ธนาคารยังไม่อัพเดต ก็จะแสดง ไม่มีข้อมูลในวันหยุดธนาคาร เหมือนกันครับ
ที่ผมเขียนคือใช้ simplehtmldom ดึงข้อมูลออกมาจากหน้าเวบที่เป็น print page โดยส่งค่า date ปัจจุบันเข้าไปเหมือนกันครับ เลยเจอปัญหาไม่มีข้อมูลทุกครั้งที่เป็นวันหยุดครับ
จะแก้ปัญหาได้ยังไงบ้างครับ
Date :
2009-12-09 22:17:43
By :
toncrub
ปัญหามันอยู่ตรงวันที่ครับ จะดักได้ยังไงว่าวันไหนเป็นวันหยุดแล้วให้เรียกวันก่อนหน้า
ลำพังเสาร์อาทิตย์ก็น่าจะเช็คได้อยู่ แต่ถ้าเป็นวันหยุดที่ไม่ใช่วันที่ตรงกันเป๊ะๆ ทุกปีอย่างนี้ก็ลำบากครับ
จะเขียนวันที่หยุดของแต่ละปีเก็บไว้ในอะเรย์แล้วค่อยเช็คเอา อย่างนี้ก็ลำบากต้องใส่เพิ่มไปทุกปีอีก
มีแนวคิดสำหรับแก้ปัญหานี้อย่างไรบ้างครับ
Date :
2009-12-10 09:57:40
By :
toncrub
มาแจงให้กระจ่างพอดีกลับมาอ่าน
สำหรับ code ของผมนั้นได้ทำการ copy ไฟล์ .csv มาไว้ที่เครื่องของเราก่อนครับ
แล้วถึงค่อยเปิดไฟล์ .csv ที่เราทำการ copy มาไว้บนเครื่องของเราเพื่ออ่าน
สมมติว่า หากวันนี้เป็นวันหยุดราชการ ตรงส่วนฟังก์ชั่น copy นั้นจะแจ้ง Warning ขึ้นมาบอกว่า failed open stream ให้เราใส่ @copy() เพื่อไม่ให้แสดงข้อความ Warning และเรายังสามารถนำข้อมูลที่ทำการ copy ครั้งล่าสุดบนเครื่องของเรามาแสดงได้ครับ
ซึ่งเราไม่ได้สนใจไฟล์ที่อยู่บน web server ของ www.bot.or.th ว่ามีอยู่จริงหรือไม่ แต่เราสนใจว่าไฟล์บนเครื่องของเรานั้นมีอยู่และสามารถเปิดอ่านได้ครับและข้อมูลสุดล่าสุดนั้นคือครั้งสุดท้ายที่ทำการ copy ด้วยครับ
ถ้าอยากให้บุคคลอื่นที่เข้ามาใช้ทราบว่าข้อมูลเป็นของวันใด เวลาไหน echo "Last Update : ".date('r'); ก็ได้ครับ
$now = date('dmY');
echo "Last Update : ".date('r')."<p>";
$xlsUrl = 'http://www.bot.or.th/Thai/Statistics/FinancialMarkets/InterestRate/InterestRate_EN_CSV/IN_CSV_LNE_'.$now.'.CSV';
@copy($xlsUrl,'Loan.csv');
Date :
2009-12-14 01:08:45
By :
extenser
ผมใช้
Code (PHP)
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
อยู่แล้วน่ะครับ ถ้าเปลี่ยน ตัวนี้จะเป็นภาษาไทยจริง แต่ตัวอื่นเป็นต่างดาวหมดเลยครับ (T-T)
Date :
2009-12-27 20:04:45
By :
toncrub
ลองเปลี่ยนเป็น window-874 ดูครับ
ผมลองบน firefox / IE8 / safari เป็นภาษาไทยทุก browser เลยครับ
Code (PHP)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>PHP Excel Application</title>
</head>
<body>
<?
$now = date('dmY');
//$xlsUrl = 'http://www.bot.or.th/Thai/Statistics/FinancialMarkets/InterestRate/InterestRate_EN_CSV/IN_CSV_LNE_'.$now.'.CSV';
$xlsUrl = 'http://www.bot.or.th/Thai/Statistics/FinancialMarkets/InterestRate/InterestRate_TH_CSV/IN_CSV_LNE_'.$now.'.CSV';
@copy($xlsUrl,'Loan.csv');
$count = 0;
$objCSV = fopen("Loan.csv", "r");
?>
<table width="90%" border="1">
<?
while (($objArr = fgetcsv($objCSV, 1000, "|")) !== FALSE)
{
if($count==0 || $count==2 || $count==21)
{
?>
<tr bgcolor="#00CCFF">
<td colspan="5"><div align="center"><?=$objArr[0];?></div></td>
</tr>
<?
$count++;
}
else
{
?>
<tr>
<td><div align="right"><?=$objArr[1];?></div></td>
<td><div align="right"><?=$objArr[2];?></div></td>
<td><div align="right"><?=$objArr[3];?></div></td>
<td><div align="right"><?=$objArr[4];?></div></td>
<td><div align="right"><?=$objArr[5];?></div></td>
</tr>
<?
$count++;
}
}
fclose($objCSV);
echo "Last update : ".date('d/m/Y');
echo "<p>";
?>
</table>
ทดสอบภาษาไทย<br/>
Test English<br/>
Testing Special Character !@#$$%^&*()_+=-?\/b<>
</body>
</html>
Date :
2009-12-27 20:36:08
By :
extenser
ตรงไฟล์ csv ได้ครับ
แต่ว่าข้อมูลที่ดึงมาจาก mysql มีปัญหาครับ เพราะว่าผมเซ็ตดาต้าเบสเป็น utf-8 ดังนั้นส่วนอื่นที่ดึงมาจากฐานข้อมูลเวลาเปลี่ยน charset=utf-8 เป็น charset=windows-874 แล้วเละหมดเลยครับ
Date :
2009-12-28 02:23:32
By :
toncrub
Load balance : Server 02