Monday, November 12, 2012

PHP : การลบ Line Break ออกจาก String

ปัญหานี้เกิดขึ้นเมื่อตอนที่ต้องการจัดรูปแบบข้อมูล PHP ให้เป็น JSON แต่บังเอิญว่าใน String นั้นมีการขึ้นบรรทัดใหม่ ทำให้ข้อมูล JSON นั้นผิดพลาด จึงต้องจัดการใส่ฟังก์ชั่นเข้าไปเพื่อลบการขึ้นบรรทัดใหม่ (Line Break) ตัวอย่างดังนี้ครับ
$fcv = str_replace(array("\r\n", "\r", "\n"), "", $fcv);
เราสามารถที่จะตรวจสอบความถูกต้องของข้อมูล JSON ได้โดยทำการ Validate ด้วยเว็บไซต์นี้ครับ http://jsonlint.com

Friday, November 9, 2012

ใส่ลูกน้ำ (Comma) ให้กับข้อมูลตัวเลขด้วย JavaScript

การแสดงผลข้อมูลตัวเลข ในกรณีที่ต้องทำการคำนวณด้วย และจะต้องมีการจัดรูปแบบของตัวเลขให้ดูง่ายจะต้องใส่ลูกน้ำ , คั่นระหว่างหลักพัน หลักล้าน หลักพันล้าน ฯลฯ หรืออะไรก็แล้วแต่ เรามีฟังก์ชั่นที่จะสามารถจัดรูปแบบตัวเลขนี้โดย JavaScript ดังนี้ครับ
function addCommas(nStr){
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
   x1 = x1.replace(rgx, '$1' + ',' + '$2');
  }
  return x1 + x2;
}
จากตัวอย่าง จะเป็นการแยกทศนิยมออกมาก่อน จากนั้นให้ Regulat Expression โดยนับจากท้ายจำนวน 3 หลักแล้วใส่ลูกน้ำเข้าไป ง่ายดายมาก ๆ

Tuesday, November 6, 2012

ดึงรูปโพรไฟล์จาก Instagram ด้วย PHP ง่ายนิดเดียว

Instagram เป็น Social Media ที่ได้รับความนิยมอักอันหนึ่ง ซึ่งเหล่าบรรดาไฮโซไฮซ้อ ดารา นักแสดง เซเล็บ(ตีนหมา) รวมถึงประชาชีทั้งหลายที่มีโทรศัพท์หรือแท็ปเล็ตที่ใช้ระบบปฏิบัติการ Android และ iOS ก็นิยมเล่นกัน โดยเว็บไซต์ฮิต ๆ ในไทย ไม่ว่าจะเป็น kapook , manager , mthai และอะไรต่อมิอะไรมากมาย เรามาดูวิธีการดึงรูปโพรไฟล์จาก ig แบบง่าย ๆ กัน ดังนี้
function getIgProfilePic($iguser) {
 $file_str = file_get_contents('http://followgram.me/' . $iguser);
 $html = new DOMDocument();
 $html->loadHTML($file_str);
 $img = $html->getElementsByTagName('img');

 return $img->item(1)->getAttribute('src');
}
ฟังก์ชั่นนี้จะใช้วีธีการไปดูดโค้ด HTML จากเว็บ followgram.me มาแล้วนำมาเรียบเรียงด้วยคลาส DOMDocument จากนั้นก็ return ค่า attribute src ของภาพที่ 2 (index ที่ 1) ออกมานั่นเอง ง่ายป่ะ อิอิ

Thursday, November 1, 2012

กำจัด BBCode ในข้อมูล PHP

เราสามารถจำกัดแท็ก HTML ที่อยู่ปะปนกับ String ในข้อมูล PHP ได้ โดยการใช้งานคำสั่ง strip_tags แต่ถ้าเป็น BBCode ที่นิยมใช้กันในเว็บบอร์ดสำเร็จรูปต่าง ๆ ทั้งหลายนั้น เราจะต้องเขียนฟังก์ชั่นขึ้นมาเพื่อกำจัด BBcode เหล่านั้น ซึ่งทาง codeinw เราก็มีฟังก์ชั่นสำหรับการนี้ให้ทุกท่านได้นำไปใช้ ดังนี้ครับ
function stripBBCode($text_to_search) {
   $pattern = '|[[\/\!]*?[^\[\]]*?]|si';
   $replace = '';
   return preg_replace($pattern, $replace, $text_to_search);
}
จากฟัง์ชั่นนี้เป็นการใช้ Regular Expression ในการตรวจสอบจุดเริ่มต้นและจุดสิ้นสุดของ BBCode ที่จะเริ่มต้นด้วย [ และสิ้นสุดด้วย ] โดยจะแทนที่ส่วนของ BBcode ด้วย String ว่าง ๆ นั่นเองครับ

Monday, October 29, 2012

PHP : Oracle ORA-06550 Error แก้อย่างไรดี ???

ปัญหาข้อผิดพลาดของการเขียนโค้ด PHP Oracle นี้คือ ตอนเขียน ociparse ในส่วนที่เป็นคำสั่ง SQL ที่ CALL Procedure นั้นจะต้องไม่ขึ้นบรรทัดใหม่ครับ

Warning: ociexecute() [function.ociexecute]: ORA-06550: บรรทัด 1 คอลัมน์ 206: PLS-00103: พบสัญลักษณ์ "" เมื่อต้องการค่าต่อไปนี้: begin case declare end exception exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe สัญลักษณ์ "" ไม่ได้ประมวลผล in C:\AppServ\www\testtab\_get_payment_detail.php on line 25
ตัวอย่างคำสั่ง
$stmt = ociparse($conn,"begin tbb_management_pck.get_payment_detail(:in_receipt_id,:out_account_num,:out_invoice_num,:out_vat_mny,:out_inc_vat_mny,:out_wt_mny,:out_total_mny,:out_cursor1,:out_cursor2,:out_status,:out_exception); 
end;");
เมื่อแก้ไขแล้วโปรแกรมก็จะสามารถทำงานตามปกติ

Wednesday, October 3, 2012

วิธีการเซ็ต Virtual Host ใน Apache ที่ติดตั้งด้วย AppServ

1. แก้ไขไฟล์ C:\AppServ\Apache2.2\conf\httpd.conf
...
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
เอาเครื่องหมาย # หน้า Include conf/extra/httpd-vhosts.conf

2. เพิ่มไดเร็คทีฟ Directory ลงไปดังนี้
...
<Directory "D:/wpdev">
    Order allow,deny
    Allow from all
</Directory>
เสร็จแล้ว save ไฟล์ซะ

3. แก้ไขไฟล์ C:\AppServ\Apache2.2\conf\extra\httpd-vhosts.conf

เพิ่มข้อมูลลงไปดังนี้
...
<VirtualHost *:80>
    DocumentRoot  "D:/wpdev"
    ServerName wpdev
</VirtualHost>
เสร็จแล้วบันทึกไฟล์

4. แก้ไขไฟล์ C:\Windows\System32\drivers\etc\hosts (ไม่มีนามสกุลไฟล์) ดังนี้
...
127.0.0.1          wpdev
เสร็จแล้วบันทึกไฟล์

5. Restart Apache หรือถ้า Restart เครื่องไปเลย ฮิฮิ

Thursday, September 20, 2012

หาชื่อ MySQL DB ปัจจุบันที่ใช้งานอยู่

ในบางที่ เราเขียนโค้ด PHP ทำงานกับฐานข้อมูลหลาย ๆ ตัวจนไม่รู้ว่าปัจจุบันเรากำลัง connect กับฐานข้อมูลก้อนไหนอยู่ บางครั้งเขียน Query ไปเท่าไรข้อมูลก็ไม่ยอมออกมา อาจเป็นเป็นเพราะว่าเราเชื่อมต่อกับฐานข้อมูลก้อนอื่นอยู่ก็เป็นได้
วันนี้ codeinw มีทางออกให้กับท่าน โดยการนำฟังก์ชั่นนี้ไปใช้กันเลยครับ
function mysql_current_db() {
    $r = mysql_query("SELECT DATABASE()") or die(mysql_error());
    return mysql_result($r,0);
}

echo "Current DB :" . mysql_current_db();
ขอให้มีความสุขกับการเขียนโปรแกรมกันทุกท่านครับ ฮิฮิ

Tuesday, September 18, 2012

URL Rewrite ฉบับง๊าย ง่าย

ตัวอย่างง่าย ๆ ในการเขียน URL Rewrite เบื้องต้นนี้ ให้เราสร้างไฟล์ .htaccess ขึ้นมาดังนี้
RewriteEngine On
RewriteRule ^([a-zA-Z_0-9\-]+)$ c.php?chap=$1
RewriteRule ^([a-zA-Z_0-9\-]+)/([a-zA-Z_0-9\-]+)$ s.php?chap=$1&page=$2
เมื่อสร้างขึ้นมาแล้ว Statement แรกของเราก็คือ จะเรียกไปที่ไฟล์ c.php โดยนำค่าที่รับเข้ามาจาก url ไปเป็นตัวแปร chap นั่นเอง ส่วน Statement ถัดมาก็เป็นการแยกตัวแปรที่ส่งมาโดยใช้เครื่องหมาย / คั่นเพื่อแบ่งตัวแปรออกเป็นสองตัวนั่นเอง

Friday, September 7, 2012

ปัญหาของการ Encode ภาษาไทยใน MySQL

ลองหาวิธีในการแก้ปัญหาเกี่ยวกับการเข้ารหัส (Encode) ภาษาไทยของ MySQL วิธีการบางอย่างสามารถใช้ได้กับบาง Server ทำให้เกิดความสับสนและปวดหัวอย่างมาก วันนี้มีอีกหนึ่งวิธีการมานำเสนอครับ เผื่อใครนำไปใช้อาจได้ผล
mysql_query("SET character_set_results=latin1");
mysql_query("SET character_set_connection=latin1");
ขอขอบคุณที่ติดตามอ่านกันนะครับ

Thursday, September 6, 2012

การเพิ่มคอลัมน์ ให้กับ TABLE ในฐานข้อมูล MySQL

วิธีการเพิ่มคอลัมน์ให้กับตาราง ด้วยคำสั่ง SQL สามารถเขียนได้ดังนี้ครับ
ALTER TABLE fanpage ADD COLUMN redirect_url varchar(512) AFTER content;
จากคำสั่งข้างต้นนี้ เป็นการเพิ่มคอลัมน์ (ฟิลด์) ใหม่เข้าไปในตาราง fanpage โดยเพิ่มคอลัมน์ชื่อว่า redirect_url ซึ่งมีชนิดข้อมูลเป็น varchar ความยาว 512 โดยวางไว้หลังคอลัมน์ content ครับ

Wednesday, May 30, 2012

ฟังก์ชั่นแปลง encode จาก tis620 เป็น utf8

ปัญหาเรื่องของการ Encode ภาษาไทยมักสร้างความปวดกระโหลกให้กับบรรดาโปรแกรมเมอร์มือใหม่และมือเก่า โดยเฉพาะใน PHP วันนี้ขอนำเสนออีกหนึ่งวิธีการ นั่นคือ ฟังก์ชั่นการแปลงรหัส tis620 เป็น utf8 ลองนำไปใช้กันดูครับอาจจะแก้ปัญหาที่ท่านกำลังประสพอยู่ก็เป็นได้ อิอิ
function tis620_to_utf8($text) {
  $utf8 = "";
  for ($i = 0; $i < strlen($text); $i++) {
    $a = substr($text, $i, 1);
    $val = ord($a);
 
    if ($val < 0x80) {
      $utf8 .= $a;
    } elseif ((0xA1 <= $val && $val < 0xDA) || (0xDF <= $val && $val <= 0xFB)) {
      $unicode = 0x0E00+$val-0xA0;
      $utf8 .= chr(0xE0 | ($unicode >> 12));
      $utf8 .= chr(0x80 | (($unicode >> 6) & 0x3F));
      $utf8 .= chr(0x80 | ($unicode & 0x3F));
    }
  }
  return $utf8;
}
จากฟังก์ชั่นข้างต้นนี้เป็นการแนะนำข้อความแต่ละอักขระในรูปแบบ tis620 มาเทียบกับรหัสในรูปแบบ utf8 แล้วส่งคืนค่ากลับครับ

Thursday, April 26, 2012

โฟลเดอร์ล่องหน !!!

วิธีการซ่อนโฟลเดอร์แบบล่องหน
1. ขณะตั้งชื่อโฟลเดอร์ ให้กดคีย์ alt ค้างไว้ แล้วกดตัวเลข 0160 แล้วปล่อย
2. เปลี่ยนไอคอนของโฟลเดอร์นั้นให้เ็ป็นแบบใส

Wednesday, April 25, 2012

การใช้ LIMIT ใน MySQL Stored Procedure

โดยปกติแล้ว เราจะไม่สามารถส่งค่า LIMIT เข้าไปใน Procedure ได้โดยตรงเนื่องจาก LIMIT จะไม่รับค่าที่เป็นตัวแปร ดังนั้นจึงต้องทำเช่นนี้
DELIMITER $$

DROP PROCEDURE IF EXISTS `danupon`.`ZPO` $$
CREATE PROCEDURE `danupon`.`ZPO` (
IN LIM INT
)
BEGIN
  SET @SQL = CONCAT("SELECT * FROM CLIPS LIMIT ",LIM);
  PREPARE STMT FROM @SQL;
  EXECUTE STMT;
END $$

DELIMITER ;
เพียงเท่านี้ เราก็จะสามารถส่งค่า LIMIT เข้าไปใน Parameter ของ Procedure ได้

Wednesday, February 1, 2012

การบล็อค IP ด้วยไฟล์ .htaccess

ถ้าหากเว็บไซต์ของเราถูกโจมตีโดยพวกเกรียนทั้งหลาย เราสามารถบล็อค IP ของพวกมันไม่ให้มารบกวนเว็บของเราได้อีกด้วยการเขียนคำสั่งต่อไปนี้ แล้วบันทึกไฟล์เป็น .htaccess แล้วนำไปวางที่ root path ของเว็บไซต์เรา
order allow,deny
deny from 10.11.212.134
deny from 119.28.59.63
allow from all
จากตัวอย่างข้างต้นนี้ นั้นคือการป้องกันไม่ให้ IP 10.11.212.134 และ 119.28.59.63 เข้ามาเปิดเว็บไซต์ในเครื่องของเราได้ ซึ่งไฟล์ .htaccess นี้มีสรรพคุณที่วิเศษอย่างหนึ่งคือ เมื่อเรานำไฟล์ไปวางไว้ที่ root path แล้วมันจะสำแดงอิทธิฤทธิ์ทันทีโดยที่เราไม่ต้องไป Restart Service ของเว็บเซิฟเวอร์แต่อย่างใด