Archive for the ‘ความรู้’ Category
Thursday, September 17th, 2009 |
วันนี้ได้รับคำถามจากนายนิค Flashfly มาจากทาง MSN ว่า “เราเอาไฟล์ PDF มาแสดงในหน้าเว็บไซต์ได้ไหมพี่?” ดีที่มีคนถามมาเพราะจะได้มีเรื่องเขียนลง Blog อิอิ ก็ไม่รีรอครับ มานั่งเขียนลง Blog ดีกว่า คนอื่นที่ไม่ทราบจะได้รู้และนำไปใช้ได้ มากกว่าบอกคนๆเดียว
โดยทั่วๆไปแล้วเวลาใครก็ตามที่จะแสดงไฟล์ PDF ก็มักจะใช้วิธีลิงก์ไปหาไฟล์โดยตรง เช่น
<a href=”doc.pdf” target=”_blank”>ไฟล์ PDF </a>
จะเขียนแบบนี้ซะเป็นส่วนมาก จะมีน้อยคนที่อยากเอา PDF มาแสดงหน้าเว็บไซต์ แต่ในเมื่ออยากทำก็ทำได้ครับ
การนำเอา PDF มาแสดงหน้าเว็บไซต์ ก็เหมือนๆกับการดึงเอา Flash มาแสดงนั่นแหล่ะครับ โดยสามารถนำมาวางได้ 2 แบบคือแบบที่ใช้ <embed> และอีกแบบก็คือการใช้ <object> ครับ เดี๋ยวเรามาดูในแต่ละแบบว่ามีการเขียนโค๊ดยังไงดีกว่า
<embed>
เขียนโค๊ดได้ดังนี้ <embed src=”file.pdf” mce_src=”file.pdf” width=”500″ height=”650″></embed>
ผลลัพท์ของโค๊ดนี้ก็คือการดึงเอาไฟล์ file.pdf ออกมาแสดงหน้าเว็บเลย

<object>
ก็จะมีการกำหนดรูปแบบของโค๊ดดังนี้ <object type=”application/pdf” data=”doc.pdf” width=”500″ height=”650″ ></object>
ซึ่งผลที่ได้ก็เหมือนกันครับ
ที่การนำเอาไฟล์ PDF มาแสดงผลบนหน้าเว็บไซต์แบบนี้ไม่ค่อยนิยมเพราะว่าปัญหาเรื่องของ Browser เป็นหลักครับ เพราะมันอาจจะมีปัญหากับบาง Browser ที่ไม่สามารถเปิดดูได้ หรือ เครื่องที่ไม่ได้ลง Acrobat reader ก็อาจจะเปิดไม่ได้เช่นกัน
ยังไงก็เลือกใช้เอาตามความเหมาะสมนะครับ
Posted in PHP, ความรู้ | No Comments »
Monday, September 14th, 2009 |
วันนี้ผมจะมาพูดถึงฟังก์ชั่นง่ายๆที่มีให้ใช้ใน MySQL กันบ้าง หลังจากที่ไม่ได้เขียน Blog แบบที่มาสาระมานาน วันนี้ขอเขียนหน่อย พอดีเอามาใช้กับเว็บ และ เห็นมีน้องๆและเพื่อนๆหลายๆคนถามผมมาว่า “พี่แม็คขอไอเดียการทำแบบนี้ให้หน่อยสิ” ก็เลยจัดไป
จะว่าไปฟังก์ชั่นที่ผมจะพูดถึงนี้มันก็เป็นฟังก์ชั่นมาตรฐานใน MySQL นี่แหล่ะ แต่บางคนอาจจะไม่เคยทำ แต่ไปใช้การคำนวนในรูปแบบอื่นๆแทน ซึ่งคำสั่งพวกนี้ไปหาอ่านกันได้เพิ่มเติมใน MySQL Manual ได้ครับ
ไอเดียที่มีคนถามผมมาก็คือ
- ไอเดียในการกำหนดวัน เวลา ในการแสดงข่าวสาร
- ไอเดียในการกำหนดวันหมดอายุของแบนเนอร์ต่างๆ
สมัยก่อนตอนที่ผมเขียน PHP แบบมั่วๆในแบบของผมเอง ผมก็มักจะใช้วิธีการคำนวนจากค่า TIMESTAMP แล้วเอาไปบวก ไปลบ ค่าของวินาทีต่างๆ เพื่อให้ได้ผลลัพธ์ตามที่ผมต้องการ แต่เมื่อเริ่มใช้ PHP ไปนานๆเข้าก็ได้เห็นจากใน Manual ของ MySQL ในการใช้คำสั่งในการ Query ข้อมูลเพื่อให้ได้ผลลัพธ์ในแบบที่เราต้องการ ทำให้เขียนโค๊ดได้ไวขึ้น และ แม่นยำมากยิ่งขึ้น
มาดูอันดับแรกเลยก็คือ ฟังก์ชั่นในการหาผลต่างของวันนะครับ ก็เลือกใช้ตัวนี้เลย
DATEDIFF(expr1,expr2)
โดยที่ expr1 ก็คือ ค่าวันเวลาช่วงที่ 1 และ expr2 ก็คือช่วงเวลาที่ 2 เพื่อหาความต่างของเวลา มาลองดูตัวอย่างดีกว่า
SELECT DATEDIFF(’1997-12-31 23:59:59′,’1997-12-30′);
ก็จะได้ผลต่างของเวลาทั้งสองเท่ากับ 1 วัน
SELECT DATEDIFF(’1997-11-30 23:59:59′,’1997-12-31′);
ก็จะได้ผลต่างของเวลาทั้งสองเท่ากับ -31 วันครับ
นำมาประยุกต์กับการใช้งานอะไร?? ก็เอามานับจำนวนวันของข้อมูลได้ เช่น กระทู้นี้ลงประกาศมากี่วันแล้ว

มาดูฟังก์ชั่นต่อไปที่อยู่ในคำถามที่มีคนถามไอเดียเกี่ยวกับว่าจะกำหนดวันที่แสดงข่าว หรือ วันหมดอายุของแบนเนอร์ จริงๆแล้วมันง่ายมากมายนัก เอาให้คนที่ไม่รู้ละกันนะครับ ไม่รู้ไอเดียแต่ละคนจะเหมือนกันไหม แต่ไอเดียผมจะเป็นแบบนี้
- กำหนดฟิลล์ขึ้นมา 1 ฟิลล์ในตารางที่เราต้องการกำหนดให้มีการกำหนดวันแสดงผลข่าว เช่นผมกำหนดชื่อฟิลล์ว่า date_show_content ซึ่งผมจะกำหนดให้เป็น DATETIME นะครับ หรือใครจะกำหนดเป็น DATE เฉยๆก็ไม่ว่ากัน
- เวลา Admin เพิ่มข่าวสาร และจะกำหนดวันที่จะแสดงก็อาจจะทำ Javascript ที่เป็นพวกสคริป DateTime Picker มาเลือกวันและเวลาในการลงประกาศ
ซึ่ง 2 ข้อนี้ก็อาจจะง่ายมากในการทำ ซึ่งผมจะไม่พูดถึง แต่สิ่งที่ผมจะพูดถึงก็คือการกำหนดแบบว่ากำหนดจำนวนวันเข้าไป เช่น เราเพิ่มข้อมูลวันนี้ แต่อยากให้มันแสดงผลในอีก 5 วันข้างหน้า เราจะเขียนแบบใด ซึ่งอาจจะเอาไปประยุกต์กับการกำหนดการหมดอายุของแบนเนอร์ได้ว่าให้แบนเนอร์นี้ลงโฆษณาได้ 7 วัน เป็นต้น
DATE_ADD และ DATE_SUB คำสั่งนี้เคยใช้กันบ้างไหม ?
สองฟังก์ชั่นนี้มีประโยชน์มากๆเลยในการหาวันข้างหน้า และ วันย้อนหลัง โดยลักษณะการเรียกใช้จะเป็นแบบนี้
DATE_ADD(date,INTERVAL expr unit)
DATE_SUB(date,INTERVAL expr unit)
DATE_ADD ชื่อก็บอกแล้วว่า ADD นั่นก็คือเอาเพิ่มวันแน่นอน มาดูกันว่าเป็นอย่างไร
SELECT DATE_ADD(’1997-12-31 23:59:59′,INTERVAL 1 SECOND);
ก็จะได้ 1998-01-01 00:00:00
SELECT DATE_ADD(’1997-12-31 23:59:59′,INTERVAL 1 DAY);
ก็จะได้ผลของการเพิ่มวันไป 1 วัน คือ 1998-01-01 23:59:59
DATE_SUB ก็ตรงกันข้ามครับ ก็คือหาวันย้อนหลัง
SELECT DATE_SUB(’1998-01-01 00:00:00′,INTERVAL ‘1 1:1:1′ DAY_SECOND);
ก็คือการหาวันเวลาย้อนหลัง 1 วัน 1 ชั่วโมง 1 นาที 1 วินาที ก็จะได้ผลคือ 1997-12-30 22:58:59
แนวทางในการใช้ของผมก็คือ ผมเอาไปใช้กับระบบสมาชิก VIP ในเว็บผมโดยผู้ลงโฆษณาสามารถเลือกจำนวนวันลงประกาศได้ ว่าจะลงโฆษณากี่วัน แล้วเมื่อครบวันที่กำหนดระบบก็จะไม่แสดงผลรายการโฆษณานั้นๆ ได้ตรงเวลาเปะๆครับ ลองเล่นดูนะครับ ของแบบนี้มันต้องลองเล่นดูครับ ถึงจะเข้าใจนะครับ ขอให้มีความสุขกับการเขียนโปรแกรมครับ

Posted in PHP, ความรู้ | 1 Comment »
Saturday, June 20th, 2009 |

สิ่งที่ผมไม่คาดคิดว่าจะเกิดขึ้นจาก สแกนไวรัส Avira เกิดขึ้นแล้วกับเว็บของผมเอง เมื่ออัพเดทตัวล่าสุดของ Avira ของวันที่ 19/06/2552 เกิดมีปฏิกิริยากับ Javascript ที่มีการกำหนดตัวแปรเยอะๆซะแล้ว ทำให้มีสมาชิกในเว็บโทรมาแจ้งว่าเว็บมีไวรัส (อ่าวกรรมละสิ) แต่เมื่อเข้าไปเช็คผมก็ไม่เจอ ที่บ้านใช้ NOD กับ AVG อัพเดทตลอด ไม่เจอ แต่ก็ยังรู้สึกตะหงิดๆก็เลยลองลง Avira แล้วอัพเดทล่าสุด แจ๊คพ๊อตครับ

ซึ่งสิ่งที่เกิดขึ้นนั้นทำให้เกิดการ Alert ขึ้นมาดังนี้

ซึ่งจากการดูการที่มันแจ้งว่าเป็นไวรัสมันคงคิดว่าโค๊ดมีตัวแปรคล้ายๆกับสคริปไวรัสหรือเปล่า โดยโค๊ดที่ใช้งานมานั้นเขียนแค่
var AMPHER=new Array();
var STATE=’10||กรุงเทพมหานคร||11||สมุทรปราการ||12||นนทบุรี||13||ปทุมธานี||14||พระนครศรีอยุธยา||15||อ่างทอง||16||ลพบุรี||17||สิงห์บุรี||18||ชัยนาท||19||สระบุรี||20||ชลบุรี||21||ระยอง||22||จันทบุรี||23||ตราด||24||ฉะเชิงเทรา||25||ปราจีนบุรี||26||นครนายก||27||สระแก้ว||30||นครราชสีมา||31||บุรีรัมย์||32||สุรินทร์||33||ศรีสะเกษ||34||อุบลราชธานี||35||ยโสธร||36||ชัยภูมิ||37||อำนาจเจริญ||39||หนองบัวลำภู||40||ขอนแก่น||41||อุดรธานี||42||เลย||43||หนองคาย||44||มหาสารคาม||45||ร้อยเอ็ด||46||กาฬสินธุ์||47||สกลนคร||48||นครพนม||49||มุกดาหาร||50||เชียงใหม่||51||ลำพูน||52||ลำปาง||53||อุตรดิตถ์||54||แพร่||55||น่าน||56||พะเยา||57||เชียงราย||58||แม่ฮ่องสอน||60||นครสวรรค์||61||อุทัยธานี||62||กำแพงเพชร||63||ตาก||64||สุโขทัย||65||พิษณุโลก||66||พิจิตร||67||เพชรบูรณ์||70||ราชบุรี||71||กาญจนบุรี||72||สุพรรณบุรี||73||นครปฐม||74||สมุทรสาคร||75||สมุทรสงคราม||76||เพชรบุรี||77||ประจวบคีรีขันธ์||80||นครศรีธรรมราช||81||กระบี่||82||พังงา||83||ภูเก็ต||84||สุราษฎร์ธานี||85||ระนอง||86||ชุมพร||90||สงขลา||91||สตูล||92||ตรัง||93||พัทลุง||94||ปัตตานี||95||ยะลา||96||นราธิวาส’;
…..
…..
…..
จากนั้นก็เอาค่าพวกนั้นมาแยกค่าโดยผ่านการ Split เท่านั้นเอง
function setState(frm,sM) {
var c=frm.elements[’province’];
var aM=eval(”STATE.split(’||’)”);
ซึ่งเป็นโค๊ดในลักษณะของการทำ Multi Dropdown เท่านั้นเอง

เมื่อเลือกจังหวัด ก็จะสามารถเลือกอำเภอได้ก็เท่านั้น ก็ไม่รู้ว่าเจ้า Ariva มันไปคิดว่าการกำหนดตัวแปร แล้วเอามาแยก หรือเข้าฟังก์ชั่น eval มันเป็นไวรัสหรือเปล่า มันก็เลยฟ้องขึ้นมาซะงั้น
สแกนไวรัสยี่ห้ออื่นๆไม่เป็นเลยไม่ว่าจะ NOD , McAfee , AVG มีก็แต่ร่มแดงเท่านั้นที่ดันฟ้องกับคำสั่งพวกนี้ ให้ตายสิโรบิน…
เมื่อฟ้อง ก็ได้ เปลี่ยนก็ได้วุ้ย…แต่จะเปลี่ยนยังไงดีหล่ะในเมื่อ Javascript แบบนี้ใช้ไม่ได้ ก็ต้องอาศัยการทำงานในรูปแบบของ Ajax ซะแล้ว ก็มานั่งเขียนใหม่ด้วยการใช้งานในรูปแบบของ Ajax โดยเขียนง่ายๆ
<script type=”text/javascript”>
var http = false;
if(navigator.appName == “Microsoft Internet Explorer”) {
http = new ActiveXObject(”Microsoft.XMLHTTP”);
} else {
http = new XMLHttpRequest();
}
function SetAmpher(province) {
http.abort();
http.open(”GET”, “Ampher.php?province=” + province, true);
http.onreadystatechange=function() {
if(http.readyState == 4) {
document.getElementById(’ampher_select’).innerHTML = http.responseText;
}
}
http.send(null);
}
</script>
จากนั้นในฟอร์มของเราก็จะสั่งให้มันทำงานตอนที่เราเลือกจังหวัด โค๊ดก็เป็นลักษณะประมาณนี้
<form name=”vip” method=”GET” action=”">
<select name=”province“ id=”province” style=”width:200px;” onChange=”SetAmpher(province.value)”>
<option value=”">เลือกจังหวัด</option>
<option value=”1″>กรุงเทพมหานคร</option>
<option value=”2″>เชียงใหม่</option>
</select>
<div id=”ampher_select”>
<select name=”ampher” size=”1″ id=”ampher” style=”width:200px;” ></select>
</div>
<INPUT TYPE=”submit”>
</form>
ก็ไม่มีอะไรมากก็แค่เวลาเราเลือก Select จังหวัด สคริปก็จะสั่งให้ไปเรียกสคริปที่ชื่อ Ampher.php แล้วส่งค่าตัวแปรที่ชื่อ province ออกไปด้วย จากนั้นเมื่อไฟล์ Ampher.php ทำงานเสร็จก็จะแสดงผล Select ที่เป็นส่วนของอำเภอในจังหวัดนั้นออกมา
ง่ายๆแต่ใช้การได้ดีครับ เดี๋ยวคงจะไล่เปลี่ยน Javascript ลักษณะนี้ทิ้งๆ เพราะกลัววันดีคืนดีเจ้า Avira มันจะเอ๋อฟ้องออกมาแบบนี้อีก หันไปใช้งาน Ajax ให้หมดเลยดีกว่า
Posted in PHP, ความรู้ | No Comments »
Tuesday, February 17th, 2009 |
จากที่เคยเล่าไปในครั้งก่อนว่าตอนนี้ Google Translate ได้มีภาษาไทยแล้วนั้น ก็ไปนึกถึงการใช้งาน Google API เพื่อจัดการแปลข้อความบนหน้าเว็บของเราเองเมื่อก่อนตอนที่ยังไม่มีภาษาไทย ตอนนี้ก็มีภาษาไทยมาแล้วก็ต้องเอามาทดสอบกันแล้ว เพราะคิดว่ามันจะมีประโยชน์เหมือนกันหากนำมาใช้งานในการแปลข้อความ (ถึงมันจะแปลแบบตลกๆไปบ้างก็ยังดีกว่าที่ไม่มีใช้)
สำหรับการใช้แบบง่ายที่สุดก็มาลองเขียนโค๊ดแบบนี้ดูเลยครับ
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″/>
<title>Google Translate</title>
<script type=”text/javascript” src=”http://www.google.com/jsapi” mce_src=”http://www.google.com/jsapi”></script>
<script type=”text/javascript”>
google.load(”language”, “1″);
function initialize() {
google.language.translate(’Hello’, “en”, “th”, function(result) {
if (!result.error) {
var container = document.getElementById(”translation“);
container.innerHTML = result.translation;
}
});
}
google.setOnLoadCallback(initialize);
</script>
</head>
<body>
<div id=”translation”></div>
</body>
</html>
เมื่อแสดงผลก็จะแสดงออกมาดังนี้

จะแสดงผลคำว่า สวัสดี ออกมาแทนที่จะแสดงคำว่า Hello
โดยที่โค๊ด google.language.translate(’Hello’, “en”, “th”, function(result) จะเป็นตัวกำหนดว่าจะให้แปลจากภาษาอะไร ไปยังภาษาอะไรนะครับ แต่เวลาใช้งานจริงๆคงไม่มีใครเอาข้อความที่จะแปลไปไว้ในสคริป (ตรงสีแดง) แบบนี้แน่นอน ดังนั้นการใช้งานจริงๆเราต้องทำการกำหนด div id มาตัวหนึ่งเพื่อเก็บข้อความที่ต้องการแปลทั้งหมดไว้ แล้วจึงค่อยนำข้อความทั้งหมดนั้นมาใช้งานครับ ดังนี้
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″/>
<title>Google Translate</title>
<script type=”text/javascript” src=”http://www.google.com/jsapi” mce_src=”http://www.google.com/jsapi”></script>
<script type=”text/javascript”>
google.load(”language”, “1″);
function initialize() {
var text = document.getElementById(”text“).innerHTML;
google.language.translate(text, “en”, “th”, function(result) {
if (!result.error) {
var container = document.getElementById(”translation“);
container.innerHTML = result.translation;
}
});
}
google.setOnLoadCallback(initialize);
</script>
</head>
<body>
<div id=”text”>Hello<br><br>Who are you? <br />What’s your name?</div>
<br /><br />
<div id=”translation”></div>
</body>
</html>
เพียงเท่านี้ก็จะได้การแสดงผลดังนี้

คำง่ายๆก็แปลได้ถูก แต่บางทีเจอประโยคยากๆ ก็งงเอาเหมือนกัน 555+
ก็เป็นอีกหนึ่งทางเลือกที่จะนำไปใช้ในเว็บไซต์ได้ ไอเดียก็คือ อาจจะทำเป็นปุ่มไว้หลังเนื้อหา แล้วเมื่อคลิ๊กที่ปุ่มก็อาจจะเปิด POPUP แปลออกมาแสดงก็ได้ ซึ่งก็คงเป็นอีกไอเดียหนึ่งที่สามารถนำไปใช้งานได้ครับ หรือจะทำเป็นเว็บไซต์แปลภาษาเหมือน Google Translate ก็ไม่ว่ากัน เหอๆๆๆ
อ่านเพิ่มเติมได้ที่
http://code.google.com/apis/ajaxlanguage/documentation/
Posted in Ajax, ความรู้ | No Comments »
Friday, January 23rd, 2009 |
เมื่อวานก็เพิ่งโพสไปสำหรับการดึงข้อมูลแบบ JSON มาแสดง โดยอาศัยคำสั่ง curl ซึ่งใช้งานสะดวกและสั้นกว่าการใช้งานพวก fopen มาก มาวันนี้ก็เลยคิดว่าหากดึงเอา XML มาแสดงผลโดยใช้ curl หล่ะ มันก็คงไม่ได้ยากอะไรมากมายแน่นอน
ขออ้างไปยังข้อมูลที่เกี่ยวกับ XML ซะก่อนซึ่งเอามาจาก wikipedia โดยได้พูดถึง XML ไว้ดังนี้
เอกซ์เอ็มแอล (อังกฤษ: XML) ย่อมาจาก Extensible Markup Language ซึ่งเป็นภาษามาร์กอัปสำหรับการใช้งานทั่วไป พัฒนาโดยW3C โดยมีจุดประสงค์เพื่อเป็น สิ่งที่เอาไว้ติดต่อกันในระบบที่มีความแตกต่างกัน (เช่นใช้คอมพิวเตอร์มี่มีระบบปฏิบัติการคนละตัว หรืออาจจะเป็นคนละโปรแกรมประยุกต์ที่มีความต้องการสื่อสารข้อมูลถึงกัน) นอกจากนี้ยังเพื่อเป็นพื้นฐานในการสร้างภาษามาร์กอัปเฉพาะทางอีกขั้นหนึ่ง XML พัฒนามาจาก SGML โดยดัดแปลงให้มีความซับซ้อนลดน้อยลง XML ใช้ในแลกเปลี่ยนข้อมูลระหว่างเครื่องคอมพิวเตอร์ที่แตกต่างกัน และเน้นการแลกเปลี่ยนข้อมูลผ่านอินเทอร์เน็ต
XML ยังเป็นภาษาพื้นฐานให้กับภาษาอื่นๆ อีกด้วย (ยกตัวอย่างเช่น Geography Markup Language (GML) , RDF/XML, RSS, MathML, Physical Markup Language (PML) , XHTML, SVG, MusicXML และ cXML) ซึ่งอนุญาตให้โปรแกรมแก้ไขและทำงานกับเอกสารโดยไม่จำเป็นต้องมีความรู้ในภาษานั้นมาก่อน
ซึ่งผมจะลองดึง XML จาก feed ใน Blog ของผมเองนะครับ ซึ่งลิงก์ของ Feed ผมก็คือ http://www.myblog.in.th/feed/ ลองคลิกดูได้นะครับ
เมื่อผมลองเปิด URL นั้นใน IE ก็จะแสดงผลดังรูปนี้นะครับ

แล้วเมื่อลองดูโค๊ดของ Feed ที่ได้โดยการ view source ก็จะได้โค๊ดแบบนี้
<?xml version=”1.0″ encoding=”UTF-8″?>
<!– generator=”wordpress/2.3.1″ –>
<rss version=”2.0″
xmlns:content=”http://purl.org/rss/1.0/modules/content/”
xmlns:wfw=”http://wellformedweb.org/CommentAPI/”
xmlns:dc=”http://purl.org/dc/elements/1.1/”
>
<channel>
<title>U call me MAX</title>
<link>http://www.myblog.in.th</link>
<description>เขาเรียกผมว่า เว็บมาสเตอร์</description>
<pubDate>Thu, 22 Jan 2009 16:43:24 +0000</pubDate>
<generator>http://wordpress.org/?v=2.3.1</generator>
<language>en</language>
<item>
<title>JSON เคยใช้กันบ้างไหม ?</title>
<link>http://www.myblog.in.th/2009/01/22/json/</link>
<comments>http://www.myblog.in.th/2009/01/22/json/#comments</comments>
<pubDate>Thu, 22 Jan 2009 16:36:05 +0000</pubDate>
<dc:creator>admin</dc:creator>
<category><![CDATA[PHP]]></category>
<category><![CDATA[ความรู้]]></category>
<category><![CDATA[json]]></category>
<category><![CDATA[xml]]></category>
<guid isPermaLink=”false”>http://www.myblog.in.th/2009/01/22/json/</guid>
<description><![CDATA[สำหรับการส่งข้อมูลในการใช้งานไม่ว่าจะเป็นพวก Web Service ต่างๆพวกเราอาจจะคุ้นกับ XML ซะเป็นส่วนมาก แต่ในบางครั้งนักพัฒนาก็ต้องเจอข้อจำกัดของตัว XML เองบางครั้งก็เลยทำให้นักพัฒนาต้องหาการใช้งานดาต้าในรูปแบบอื่นๆเพื่อนำมาใช้งานกัน
ซึ่ง JSON หรือ JavaScript Object Notation เป็นข้อมูลสำหรับแลกเปลี่ยนที่เล็ก ง่ายสำหรับการ อ่าน และ เขียน ซึ่งจะว่าไปแล้ว JSON ก็คล้ายกับ XML ก็คือเป็นข้อมูลแบบเป็นไฟล์ text ธรรมดาๆ ที่มี Format ที่เป็นมาตรฐานและโครงสร้างของไฟล์ที่ตายตัว
JSON มี 2 รูปแบบคือ
1. แบบ Key pair value
2. แบบ list
ในรูปเป็นตัวอย่างโครงสร้างของข้อมูลในแบบ object และในแบบ array
ที่มาพูดถึง JSON ก็เพราะว่าคุยกะ 9AUM แห่ง Scriptdd.com แล้ว ได้ไฟล์ Plugin Wordpress ที่ดึงเอารูปจากเว็บ PG.in.th มาแสดง ไอ้ผมก็เลยไปลองดึงข้อมูลจากทางเว็บ PG […]]]></description>
อะไรประมาณนี้นะครับ ซึ่งเป็นมาตรฐานของ XML เอาล่ะมาเขียนโค๊ดเพื่อดึงเอา XML นี้เพื่อไปแสดงที่อื่น หรือเว็บอื่นๆของผม หรือใครที่อยากจะดึงเอา Feed ของผมไปแปะในเว็บก็ไม่ว่ากัน
เขียนโค๊ดโดยใช้ความสามารถของ curl ครับ ดังนี้
<?php
$ch = curl_init(”http://www.myblog.in.th/feed/“); //URL จาก feed ในเว็บผมครับ
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
$doc = new SimpleXmlElement($data, LIBXML_NOCDATA);
if(isset($doc->channel))
{
parseRSS($doc);
}
function parseRSS($xml)
{
//echo “<strong>”.$xml->channel->title.”</strong>”; //ไม่อยากให้โชว์ไตเติ้ลครับ
$cnt = count($xml->channel->item);
for($i=0; $i<$cnt; $i++)
{
$url = $xml->channel->item[$i]->link;
$title = $xml->channel->item[$i]->title;
$desc = $xml->channel->item[$i]->description;
echo ‘<a href=”‘.$url.’”>’.$title.’</a>’.$desc.’<br /><br />’; //แสดงผลรายการแต่ละอัน
}
}
?>
จากนั้นลองดูผลที่ได้ในการเขียนโค๊ดนี้ ก็ได้ผลดังนี้

จากนั้นผมลองเปลี่ยนไปดึงเอา RSS ของอีกที่หนึ่งมาจากเว็บ motogp.com โดยมี URL คือ http://www.motogp.com/en/news/rss และเมื่อลอง Refresh ก็แสดงผลดังนี้ครับ

อาจจะเป็นอีกไอเดียในการดึง XML มาแสดงผล โดยไม่ได้ใช้คำสั่ง fopen นะครับ
Posted in PHP, ความรู้ | No Comments »