Author: shikima

ฟังก์ชั่น str_repleat ของ java script

ปกติ php จะมีคำสั่งสำหรับทวนตัวอักษรแบบง่ายๆ แต่ java sctipt ไม่มี ถ้าอยากให้มีก็ไม่ยาก เอาโค๊ดนี้ไปเลย

    String.prototype.repeat = function(num) {
            return new Array(isNaN(num)? 1 : ++num).join(this);
    }

วิธีใช้ก็

var foo = "hello";
alert(foo.repeat(10));

ไม่ยากเลยใช่ไหม

window.open

    <script type="text/javascript" language="javascript">
    function popUpWindow(sURL, sName, width, height, menu, resize, scrollbar, status, title, toolbar)
    {
            // Detect Default Value
            menu = typeof(menu) == 'undefined'?0:menu;
            resize = typeof(resize) == 'undefined'?0:resize;
            scrollbar = typeof(scrollbar) == 'undefined'?0:scrollbar;
            status = typeof(status) == 'undefined'?0:status;
            title = typeof(title) == 'undefined'?0:title;
            toolbar = typeof(toolbar) == 'undefined'?0:toolbar;
            ////////////////////////////////////////////////////////////////
           
            screenwidth = window.screen.width;
            screenheight = window.screen.height;
           
            var left = (screenwidth/2) - (width/2);
            var top = (screenheight/2) - (height/2);
           
            var newwin = window.open(sURL, sName, "top=" + top + ", left=" + left + ", height="+ height + ", width=" + width + ", menubar=" + menu + ", resizable=" + resize + ", scrollbars=" + scrollbar + ", status=" + status + ", titlebar=" + title + ", toolbar=" + toolbar + "");
            newwin.focus();
    }
    </script>

number only สำหรับ textbox

เขียนไว้นานแล้ว เอาไว้สำหรับตรวจสอบ text box ให้ป้อนข้อมูลเป็นตัวเลขเท่านั้น

เอาตรงนี้ไปใส่ไว้ใน <head> ก่อน

    function numbersonly(e){
            var unicode=e.charCode? e.charCode : e.keyCode;
            if (unicode!=8){
                    if(unicode<48 || unicode>57){
                            return false
                    }
            }
    }

ตอนใช้งานก็เขียนแบบนี้

<input type=”text” onKeyPress=”return numbersonly(event)” />

สามารถใช้กับ type อื่นๆ เช่น number หรือ tel ก็ได้นะครับ html5 มี type ของ textbox เพิ่มขึ้นเยอะเลย

ฟังก์ชั่น number_format สำหรับ java script

ปกติใน PHP จะมีฟังก์ชั่น number_format() สำหรับเติ่มเครื่องหมาย , ให้กับตัวเลข และช่วยปัดเศษของทศนิยมตามตำแหน่งที่เราต้องการได้ด้วย แต่ว่า AJAX มันเป็น Java Script แล้วมันดันไม่มีฟังก์ชั่นนี้ด้วยสิ จะโยนให้ PHP ผ่าน XMLHttp ก็ใช่เรื่อง เลยเขียนเองเลยดีกว่า

มั่วไป มั่วมาก็ได้ตามนี้แหละครับ

<script type="text/javascript">
   function number_format (number, decimals, dec_point, thousands_sep) {
      var exponent = "";
      var numberstr = number.toString ();
      var eindex = numberstr.indexOf ("e");
      if (eindex > -1) {
         exponent = numberstr.substring (eindex);
         number = parseFloat (numberstr.substring (0, eindex));
      }
      if (decimals != null) {
         var temp = Math.pow (10, decimals);
         number = Math.round (number * temp) / temp;
      }
      var sign = number < 0 ? "-" : "";
      var integer = (number > 0 ? Math.floor (number) : Math.abs (Math.ceil (number))).toString ();
      var fractional = number.toString ().substring (integer.length + sign.length);
      dec_point = dec_point != null ? dec_point : ".";
      fractional = decimals != null && decimals > 0 || fractional.length > 1 ? (dec_point + fractional.substring (1)) : "";
      if (decimals != null && decimals > 0) {
         for (i = fractional.length - 1, z = decimals; i < z; ++i) {
            fractional += "0";
         }
      }
      thousands_sep = (thousands_sep != dec_point || fractional.length == 0) ? thousands_sep : null;
      if (thousands_sep != null && thousands_sep != "") {
         for (i = integer.length - 3; i > 0; i -= 3){
            integer = integer.substring (0 , i) + thousands_sep + integer.substring (i);
         }
      }
      return sign + integer + fractional + exponent;
   }
</script>

วิธีการเรียกใช้งานก็ง่ายๆ เลยครับ
number_format(ตัวเลข, จำนวนทศนิยม, เครื่องหมายทศนิยม, เครื่องหมายหลักพัน);

เช่น จะเอาตัวเลข 20,000.00 ก็เขียนประมาณนี้ครับ

number_format(20000,2,’.’,’,’);

สั้นๆ ง่ายๆ แต่มีประโยชน์เหลือหลายครับ

เอาไปใช้กันได้ ไม่หวงครับ

ความแตกต่างระหว่าง isset กับ array_key_exists

รอบนี้ก็มีทิปง่ายๆ แต่มีประโยชน์แน่นอน

ในการเขียนโปรแกรม PHP บางครั้งเราต้องมีการตรวจสอบตัวแปรว่ามีอยู่หรือไม่ คำสั่งที่เราบ่อยๆ ก็คือ isset() คำสั่งนี้สามารถเช็คได้ทั้ง ตัวแปร และ อาเรย์สำหรับตัวแปรนั้นผลลัพท์ที่ได้ก็ตรงไปตรงมาคือ true กับ false แต่สำหรับ อาเรย์ เราจะใช้คำสั่งนี้ในการตรวจสอบว่ามี คีย์ หรือ อินเด็กซ์ นี้อยู่ภายในอาเรย์หรือไม่การตรวจสอบอาเรย์สามารถใช้คำสั่ง array_key_exists() ได้ด้วยเหมือนกัน แต่ความแตกต่างระหว่างสองคำสั่งนี้คือ ถ้าหากค่าที่เก็บเป็น NULLคำสั่ง isset() จะคืนค่าเป็น false แต่คำสั่ง array_key_exists() จะคืนค่าเป็น true

ลองดูตัวอย่างได้ครับ

<?php
$a = 10;

isset($a)  // true
isset($z)  // false

$b = array('a' => 10, 'b' => NULL);
isset($b['a'])  // true
isset($b['a'])  // false

array_key_exists('a', $b)  // true
array_key_exists('b', $b)  // true

$c = NULL
isset($c)  // NULL
?>

สังเกตได้ว่าคำสั่ง isset จะตรวจสอบตัวแปรที่มีค่าเก็บไว้เท่านั้น ถ้าหากเป็น NULL คำสั่ง isset ก็จะคืนค่าเป็น false อยู่ดี

mobile detect สำหรับ php แบบง่ายๆ

ตอนนี้มือถือหรือ tablet กำลังเป็นที่นิยมมากมาย เวลาเขียนเว๊ปส่วนใหญ่เราก็จะแยกเป็นหน้าสำหรับมือถือซึ่งเราก็ต้องทำการตรวจสอบก่อนว่าคนที่เข้ามาดูใช้มือถือหรือ tablet หรือเข้ามาจาก pc ปกติ สำหรับคนที่ตั้ง server เอง เราสามารถลงโมดูล Apache Mobile Filter แล้วไปจับที่ AMFLightDetectionFilter แทน แต่ถ้าเราเช่าพื้นที่จากคนอื่นละ ก็ไม่ยากเลย ใช้ php นี่แหละจับเอา โดยจับเอาจากตัวแปร $_SERVER[‘HTTP_USER_AGENT’] แล้วเราก็มาแยกเอาว่าเป็นอุปกรณ์มือถือหรือเปล่าจากตรงนี้ได้ Continue reading

ทำตารางสลับสีแนวตั้ง

จาก entry คราวที่แล้วเรื่องทำตารางสลับสีแบบง่ายๆ ก็เลยเกิดความสงสัยขึ้นมาว่า ถ้าจะทำตารางสลับสีแนวตั้งละ มันจะทำได้ไหม ถ้าคิดอะไรไม่ออกก็คงต้องใช้ php ลงสีเอาอีกแน่ๆ

แบบนี้แหละที่เราต้องการ ถ้าเขียนโค๊ดก็คงประมาณนี้

<table width="100%" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td>COL1</td>
    <td bgcolor="#CCCCCC">COL2</td>
    <td>COL3</td>
    <td bgcolor="#CCCCCC">COL4</td>
    <td>COL5</td>
  </tr>
  <tr>
    <td>01</td>
    <td bgcolor="#CCCCCC">11</td>
    <td>21</td>
    <td bgcolor="#CCCCCC">31</td>
    <td>41</td>
  </tr>
  <tr>
    <td>02</td>
    <td bgcolor="#CCCCCC">12</td>
    <td>22</td>
    <td bgcolor="#CCCCCC">32</td>
    <td>42</td>
  </tr>
  <tr>
    <td>03</td>
    <td bgcolor="#CCCCCC">13</td>
    <td>23</td>
    <td bgcolor="#CCCCCC">33</td>
    <td>43</td>
  </tr>
</table>

ซึ่งมันดู… ธรรมดามากๆ แถมยังแก้ไขยากอีก ถ้าต้องการเปลี่ยนสีจาก CCC เป็นสีอื่นละ แล้วถ้ามันมีสัก 500 เซล… งานงอกกันทีเดียว Continue reading

ตารางสลับสีแบบง้าย ง่าย

ปกติเวลาเราสร้างตาราง (table) สำหรับขึ้นมาสักอันหนึ่ง แล้วเราต้องการแยกสีสำหรับแต่ละแถว เราก็อาจจะเขียนโค๊ดในการวนลูปเพื่อให้แต่ละแถวมีสีไม่เหมือนกัน แต่ถ้าหากเราไม่สามารถให้สามารถวนลูปได้ คือ server รัน php หรือ asp ไม่ได้ เราจะมีวิธีแก้ปัญหายังไงดี

ง่ายๆ เลย ก็ใส่สีในแต่ละแถวไปเลยสิ (ง่ายไหม)

<table width="300" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th scope="col" width="33%">ช่องที่</th>
    <th scope="col" width="33%">ตัวหนังสือ</th>
    <th scope="col">ภาษาไทย</th>
  </tr>
  <tr bgcolor="#999">
    <td>1</td>
    <td>A</td>
    <td>ก</td>
  </tr>
  <tr>
    <td>2</td>
    <td>B</td>
    <td>ข</td>
  </tr>
  <tr bgcolor="#999">
    <td>3</td>
    <td>C</td>
    <td>ฃ</td>
  </tr>
  <tr>
    <td>4</td>
    <td>D</td>
    <td>ค</td>
  </tr>
  <tr bgcolor="#999">
    <td>5</td>
    <td>E</td>
    <td>ฅ</td>
  </tr>
  <tr>
    <td>6</td>
    <td>F</td>
    <td>ฆ</td>
  </tr>
  <tr bgcolor="#999">
    <td>7</td>
    <td>G</td>
    <td>ง</td>
  </tr>
  <tr>
    <td>8</td>
    <td>H</td>
    <td>จ</td>
  </tr>
  <tr bgcolor="#999">
    <td>9</td>
    <td>I</td>
    <td>ฉ</td>
  </tr>
</table>

ได้แบบนี้เลย
cmdevhub Continue reading

สามจีไทย ทำไมมันใช้ยากนักหนา

สิ้นสุดการรอคอยกันแล้วกับสามจีประเทศไทยตอนนี้เรามีให้ใช้งานได้แล้วทุกค่าย ซึ่งก็เป็นที่น่ายินดีเสียยิ่งนักสำหรับประเทศไทยทั้งๆ ที่ประเทศรอบข้างเรา ไปกันไกลลิบแล้วเราจะเริ่มตอนนี้ก็ยังไม่สาย มองโลกในแง่ดีซะว่าดีกว่ายังไม่เริ่ม จริงไหม 🙂

มาตรฐานสามจีของประเทศไทยมีสองระบบคือ CDMA สำหรับค่าย hutch เดิมหรือตอนนี้กลายเป็น Truemove H ไปแล้ว กับระบบ HSPA ที่เป็นระบบของค่ายอื่นๆ ที่ใช้งานกันอยู่แล้วก็เป็นระบบที่มีอยู่ในโทรศัพท์มือถือแทบทุกเครื่องที่ใช้งานสามจีได้อยู่แล้ว

แต่ปัญหามันไม่ใช่แค่นี้สิ มาตรฐานโลกสามจีเขาใช้งานกันที่ความถี่ 900MHz กับ 2100MHz แต่เนื่องจากมีแมวมาขวางโลกอยู่ทำให้การประมูลคลื่น 2100MHz เมื่อปี 2553 ไม่สามารถทำได้ ดึงเรื่องมาจนปี 2555 ก็ยังคงไม่เริ่มการประมูลเสียที ทำให้ผู้ให้บริการแต่ละรายต้องใช้วิธีซิกแซกใช้ความถี่อันน้อยนิดของตัวเองมาให้บริการสามจี สำหรับ AIS นั้นไม่มีปัญหาอยู่แล้วเพราะเดิมได้ให้บริการมือถือบนความถี่ 900MHz ก็เลยสามารถให้บริการสามจีบนความถี่นี้ได้ทันที แต่สำหรับ Truemove และ Dtac เดิมทีได้ให้บริการบนความถี่ 1800MHz แต่พอมาใช้งานสามจีแล้ว จำเป็นต้องเปลี่ยนมาใช้ที่ 850MHz แทน เนื่องจากอุปกรณ์ที่รองรับ HSPA 1800MHz มีไม่มาก Continue reading

แก้ขนาด facebook comment

สำหรับคนที่ทำเว๊ปแบบ responsive แล้วใช้ facebook comment แล้ว ปัญหาใหญ่คือ เมื่อแสดงผลในมือถือหรือถ้า block ที่เราออกแบบไว้เปลี่ยนขนาด คงจะมีปัญหาเรื่อง block ของ facebook comment ไม่ปรับขนาดตาม วิธีแก้ปัญหาง่ายๆ เลย เราก็แค่เพิ่ม css นี้เข้าไป แค่นี้ก็ใช้งานได้แล้ว

.fb-comments, .fb-comments iframe[style] {
   width: 100% !important;
}

แค่นี้ขนาดของ facebook comment ก็เปลี่ยนไปตามขนาดหน้าจอแล้ว สบายๆ เลย 🙂