Archive for the ‘ความรู้’ Category
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 »
Thursday, January 22nd, 2009 |
สำหรับการส่งข้อมูลในการใช้งานไม่ว่าจะเป็นพวก 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 มาดูก็รู้ว่าทางเว็บ PG แจกข้อมูลออกมาเป็นข้อมูลในแบบ JSON ซึ่งเมื่อลองมองๆดูการนำไปแชร์ข้อมูล เพื่อให้เว็บอื่นๆดึงไปใช้ผมว่ามันค่อนข้างที่จะง่ายเลยทีเดียวกับการดึงข้อมูลไปแสดงผล

ลองดึงข้อมูลที่ทาง PG.in.th แชร์ข้อมูลเพื่อทำ API ไว้ เมื่อ save file แล้วเปิดดูก็พบว่ามีข้อมูลดังนี้
{”tg_flash”: null, “Photos”: [{”Src”: “/asset/photo/48×48/14655/X1KBGLQxPz.jpg”, “UploadTime”: “21.01.2009 18:31″, “PhotoId”: 76237, “Description”: “”, “Tags”: “ส่วนตัว”, “Title”: “ซ้อมๆ”, “Longitude”: “98.97″, “Place”: “SuanPrung(1)”, “Latitude”: “18.78″}, {”Src”: “/asset/photo/48×48/14655/H9bG9CNbtg.jpg”, “UploadTime”: “21.01.2009 18:30″, “PhotoId”: 76235, “Description”: “”, “Tags”: “ส่วนตัว”, “Title”: “เลือกอาวุธ”, “Longitude”: “98.97″, “Place”: “SuanPrung(1)”, “Latitude”: “18.78″}, {”Src”: “/asset/photo/48×48/14655/bboLkIN4jr.jpg”, “UploadTime”: “21.01.2009 17:52″, “PhotoId”: 76213, “Description”: “”, “Tags”: “ส่วนตัว”, “Title”: “ซ้อมดนตรีอีกแว้ว”, “Longitude”: “98.98″, “Place”: “DTACoffice(2)”, “Latitude”: “18.78″}……….(อีกมากมาย)………
ซึ่งดูจากชุดข้อมูลแล้วนั้นก็ทราบว่าข้อมูลที่ส่งมาเป็นแบบ object นี่เอง

ผลจาก Plugin WordPress ที่ 9AUM เอามาให้ใช้งาน เพื่อดึงข้อมูลจาก PG.in.th มาแสดงผลนะครับ
เอาล่ะ!!!! มาลองเขียนข้อมูลแบบง่ายๆดูสักชุดหนึ่งกันดีกว่า ผมตั้งชื่อไฟล์ไว้ว่า data โดยมีข้อมูลดังนี้
{”Maxx” : [{”Name” : “Asada Inta”, “Nick” : “Max”}, {”Name” : “Anon Chumjai”, “Nick” : “Non”}, {”Name” : “Jarunee Kapao”, “Nick” : “Jack”}]}
จากนั้นก็ทำการใช้คำสั่งของ curl ดึงไฟล์มาอ่านครับ ( PHP ต้องเปิดใช้งาน curl ด้วย ) แล้วก็ใช้คำสั่ง json_decode เพื่อจัดการข้อมูล แล้วก็วนลูปเอาข้อมูลมาแสดงผลครับ โดยเขียนดังนี้
<?php
$c = curl_init(”http://localhost/test/data“); //URL ของไฟล์ข้อมูล
curl_setopt($c, CURLOPT_HEADER, 0);
curl_setopt($c, CURLOPT_VERBOSE, 0);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$json_content = curl_exec($c);
curl_close($c);
$json_decode = json_decode($json_content);
for ($i=0 ; $i < 3 ; $i++) {
$Name = $json_decode->Maxx[$i]->Name;
$Nickname = $json_decode->Maxx[$i]->Nick;
$HTML .=”$Name : $Nickname<br />”;
}
echo $HTML;
?>
ผลที่ได้ก็จะเป็นดังนี้ครับ
Asada Inta : Max
Anon Chumjai : Non
Jarunee Kapao : Jack
ไวดีไหมครับ และที่ผมชอบก็คือ หลากหลายภาษาล้วนแล้วแต่ Support ข้อมูลแบบ JSON แทบทั้งนั้นเลย เช่น ASP, ActionScript, C, C++, C#, ColdFusion, Delphi, Haskell, Java, JavaScript, Lisp, LotusScript, Objective C, Perl, Python, Ruby, Visual FoxPro และที่สำคัญก็คือ PHP นี่แหล่ะครับ เลยทำให้ผมเริ่มที่จะเล็งข้อมูลแบบ JSON มาใช้ เพราะโค๊ดเขียนได้สั้นกว่าการอ่าน XML และง่ายสำหรับมือใหม่ๆในการเขียนโค๊ดมากๆ
และของฝากครับสำหรับใครที่อยากจะเปลี่ยนจาก XML เป็น JSON ด้วย PHP ครับ
http://www.ibm.com/developerworks/xml/library/x-xml2jsonphp/
เดี๋ยวในเว็บใหม่ๆที่ผมจะทำคงแชร์ข้อมูลออกมาทั้งแบบ XML และ JSON ครับ
Posted in PHP, ความรู้ | 1 Comment »
Saturday, January 10th, 2009 |
พอดีผมไปเจอในเว็บต่างประเทศมาสำหรับการทำ GIS Mapping เบื้องต้น เจอมานานแล้ว save ไว้ในเครื่อง ลืมไปแล้วว่าเว็บไหน พอดีมีเพื่อนผมถามขึ้นมาเรื่องการมาร์คจุดบนแผนที่ ก็เลยหาๆในคลังความรู้ของผมที่บ้าน ซึ่งคิดว่าน่าจะมีประโยชน์ในการประยุกต์ใช้งานได้ในอนาคตเลยเอามาเขียนให้อ่านกัน โดยเป็นเบื้องต้นที่ทำได้ง่ายๆจริงๆ คำสั่งต่างๆก็ไม่ได้มีอะไรมากมายนะครับ
สิ่งที่ต้องการก็คืออะไรบ้างครับ
- แผนที่โลกซึ่งเป็น base map
- ตำแหน่งละติจูด และ ลองติจูด จำแหน่งที่เราต้องการมาร์คตำแหน่งลงไป
- GD ในเครื่องของเรา หรือ Server ครับ
มาดูที่รูปแผนที่ ผมก็ได้โหลดมาจาก ตัวอย่าง มาให้ดูนะครับ

รูปนี้เลยครับ หากใครจะหารูปใหญ่ก็ไปหากันเอาเองนะครับ
ตำแหน่งละติจูด(lat) กับ ลองติจูด(lng) ก็สามารถหาได้จากพวก Google map ต่างๆได้นะครับ แต่สำหรับผมเองนั้น มีดาต้าเบสส่วนตัวที่เก็บไว้ทุกจังหวัดอยู่แล้วในดาต้าเบส เลยดึงมาใช้ได้ง่ายหน่อย

จากนั้นก็เขียนโค๊ดครับโดยผมจะให้มาร์คจุดลงไปที่ กรุงเทพมหานคร โดยมีค่า lat และ lng คือ 13.75 กับ 100.5166667 ก็เขียนได้ดังนี้
<?php
if(empty($lat)) $lat = 13.75;
if(empty($long))$long = 100.5166667;
$im = imagecreatefromjpeg(”earth_310.jpg“); //รูปแผนที่ที่จะนำมาสร้าง
$red = imagecolorallocate ($im, 255,0,0);
$scale_x = imagesx($im);
$scale_y = imagesy($im);
$pt = getlocationcoords($lat, $long, $scale_x, $scale_y);
// สร้างมาร์คสี่เหลี่ยมสีแดงขนาด 4 pixel
imagefilledrectangle($im,$pt[”x”]-2,$pt[”y”]-2,$pt[”x”]+2,$pt[”y”]+2,$red);
imagestring($im,2,1,$scale_y-20,”Country of Bangkok Thailand“,$red); //ตัวอักษรที่จะแสดงด้านล่างรูป
header(”Content-Type: image/png”);
imagepng($im);
imagedestroy($im);
function getlocationcoords($lat, $lon, $width, $height)
{
$x = (($lon + 180) * ($width / 360));
$y = ((($lat * -1) + 90) * ($height / 180));
return array(”x”=>round($x),”y”=>round($y));
}
?>
โดยแก้ไขค่าต่างๆแล้วลองรันดูนะครับ ก็จะได้ผลดังนี้

ผมก็เลยลองหา map ใหม่จากใน Google แล้วก็นำมาย่อขยายให้ได้สัดส่วน แล้วลองทดสอบอีกครั้งก็ได้ผลดังนี้

แสดงผลได้ถูกต้อง หรือ ไม่ก็เกือบใกล้เคียงความจริงมากๆ
คำสั่งของการใช้งานก็ไม่ยากอะไร หวังว่าคงพอเอาไปใช้ประโยชน์กันได้ไม่มากก็น้อยนะครับ
Posted in PHP, ความรู้ | No Comments »
Sunday, November 30th, 2008 |
เมื่อราวๆอาทิตย์ก่อนน้องที่ทำงานถามผมเรื่องจะเปลี่ยน IP ให้เป็นประเทศ ผมก็รู้สึกว่าผมเคยทำไว้นานมากๆแล้ว แต่ไม่รู้เอาโค๊ดไปไว้ที่ไหน วันนี้ก็เลยมานั่ง search ดูข้อมูลในเน็ตก็เลยเจอข้อมูลที่คงตอบคำถามของน้องเขาได้
ก็เริ่มตั้งแต่เราต้องหาดาต้าเบสที่มีการเก็บค่า IP ช่วงต่างๆไว้ ซึ่งก็มีตั้งแต่ดาต้าเบสฟรีๆให้โหลด หรือต้องเสียเงิน โดยส่วนมากช่วง ip ที่เก็บจะเก็บไว้ในรูป Long/decimal Format หรือตัวเลขเช่น 3232235521 ก็คือ 192.168.0.1 นั่นเอง
หากจะหาของฟรีก็สามารถโหลดได้ที่
http://www.ipligence.com/en/products/community.php
หากของเสียเงินก็โหลดได้ที่
http://www.ip2location.com/ip-country-isp.aspx
ของฟรี และไม่ฟรีต่างกันยังไง
ของฟรี
| Field Number |
Field Name |
Field Type |
Field Description |
| 1 |
IP_FROM |
numerical |
First IP address in Netblock. |
| 2 |
IP_TO |
numerical |
Last IP address in Netblock. |
| 3 |
COUNTRY_CODE |
text |
Two characters country code based on ISO 3166. |
| 4 |
COUNTRY_NAME |
text |
Country name based on ISO 3166. |
| 5 |
CONTINENT_CODE |
text |
Two characters continent code based on ISO 3166. |
| 6 |
CONTINENT_NAME |
text |
Continent name based on ISO 3166. |
ของเสียเงิน
| Field Number |
Field Name |
Field Type |
Field Description |
| 1 |
IP_FROM |
numerical |
First IP address in Netblock. |
| 2 |
IP_TO |
numerical |
Last IP address in Netblock. |
| 3 |
COUNTRY_CODE |
text |
Two characters country code based on ISO 3166. |
| 4 |
COUNTRY_NAME |
text |
Country name based on ISO 3166. |
| 5 |
CONTINENT_CODE |
text |
Two characters continent code based on ISO 3166. |
| 6 |
ISP_NAME |
text |
Internet Service Provider or company’s name. |
นี่คือโครงสร้างดาต้าเบสระหว่างของฟรี และเสียเงิน โดยของฟรี ณ วันที่ผมโหลดมามีข้อมูลอยู่ 166,982 ข้อมูล แต่ของเสียเงินมีข้อมูล 5,200,000 ข้อมูล (โอ้วพระเจ้าจ๊อดมันเยอะมาก) เพราะของเสียเงินเก็บถึงระดับของ ชื่อ ISP เลย เช่น maxnet เป็นต้น แต่ของฟรีไม่มี
แต่สำหรับผม แค่ของฟรีก็เกินพอแล้วครับ โหลดมาแล้วก็ import ข้อมูลซะก็ใช้ได้แล้ว
เสริมเรื่อง IP address หน่อยเพราะมันต้องเปลี่ยนจาก IP ปกติให้เป็น Long/decimal Format ซึ่งสามารถเปลี่ยนได้โดยการคำนวน ดังนี้
A.B.C.D = D + (C * 256) + (B * 256 * 256) + (A * 256 * 256 * 256) = ???
192.168.0.1 = 1 + (0 * 256) + (168 * 256 * 256) + (192 * 256 * 256 * 256) = 3232235521
คนที่เรียน Network ยังจำกันได้อยู่ไหมครับ แล้วก็จับมาเขียนลงในฟังก์ชั่นซะเลย
function IP2LONG($a){
$d = 0.0;
$b = explode(”.”, $a,4);
for ($i = 0; $i < 4; $i++) {
$d *= 256.0;
$d += $b[$i];
};
return $d;
}
จากนั้นก็เอาไปประยุกต์กันนะครับ โดยเอาค่าที่แปลงแล้วไปหาดูว่าอยู่ในช่วงไหน แล้วก็เอาค่าในนั้นออกมาแสดงเท่านั้นเอง อ่านเพิ่มเติมเองได้ที่
http://www.ipligence.com/en/faq/
ส่วนใครที่อยากได้ไอคอนรูปธงชาติก็โหลดได้ที่
http://www.ipligence.com/freetools/worldflags.zip
ขอให้มีความสุขกับการเขียนโปรแกรมครับ
** ข้อควรระวัง **
ผมแนะนำให้เขียนโค๊ดแบบนี้ในการเช็คครั้งแรกที่เข้าเว็บครับ แล้วเอาค่าที่ได้เก็บลง Session ไรพวกนี้ไว้ เพราะไม่เช่นนั้น Server คุณอาจจะทำงานหนักเกินไปที่ต้องนั่ง query ข้อมูลทุกๆครั้ง ทุกๆหน้าครับ เคยทำมาแล้วเกือบเดี้ยงครับ
Posted in PHP, ความรู้ | No Comments »