25 มิถุนายน 2553

การบันทึกเวลาใน Cakephp

    ในเวลาเราจะบันทึกข้อมูลลงในฐานข้อมูล cakephp จะบันทึกเวลให้อัตโนมัติ ในฟิลที่มีชื่อว่า
created และ มีชนิดของฟิลเป็น datetime 
    ซึ่งในขณะเดียวกัน เวลาเราทำการแก้ไข เรคคอร์ด ก็จะบันทึกเวลาที่เราแก้ไขให้อัตโนมัติเช่นเดียวกัน ในฟิลที่มีชื่อว่า  modified  และมีชนิดของฟิลเป็น datetime

23 มิถุนายน 2553

ฟังชั่นคำนวณวัน PHP

 // ฟังชั่นคำนวณวัน
    function dateDiv($t1,$t2){ // ส่งวันที่ที่ต้องการในรูปแบบ  27-03-2006 21:20:00

        $t1Arr=splitTime($t1);
        $t2Arr=splitTime($t2);
  
        $Time1=mktime($t1Arr["h"], $t1Arr["m"], $t1Arr["s"], $t1Arr["M"], $t1Arr["D"], $t1Arr["Y"]);
        $Time2=mktime($t2Arr["h"], $t2Arr["m"], $t2Arr["s"], $t2Arr["M"], $t2Arr["D"], $t2Arr["Y"]);
        $TimeDiv=abs($Time2-$Time1);
  
        $Time["D"]=intval($TimeDiv/86400); //  จำนวนวัน
        $Time["H"]=intval(($TimeDiv%86400)/3600); // จำนวน ชั่วโมง
        $Time["M"]=intval((($TimeDiv%86400)%3600)/60); // จำนวน นาที
        $Time["S"]=intval(((($TimeDiv%86400)%3600)%60)); // จำนวน วินาที
      
         return $Time;
}



    function splitTime($time){ // เวลาในรูปแบบ 27-04-2006 22:30:50
         $timeArr["Y"]= substr($time,8,2);
         $timeArr["M"]= substr($time,3,2);
         $timeArr["D"]= substr($time,0,2);
         $timeArr["h"]= substr($time,11,2);
         $timeArr["m"]= substr($time,14,2);
         $timeArr["s"]= substr($time,17,2);

         return $timeArr;
    }

//------------------------------  ตัวอย่างการใช้งาน
$t1="27-03-2006 21:20:00";
$t2="27-04-2006 22:30:50";

$time=dateDiv($t1,$t2);
print_r($time);

Javascript ปิดหน้าต่างลูกแล้ว refresh หน้าต่างหลัก

javascript:window.parent.opener.document.location.href='index.php'; window.close();

วิธีการเข้าใช้งาน ก่อนอื่นทำการสร้างหน้า ที่ทำการเปิด หน้า Popup

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Open A New Window</title>
</head>

<body>
<a href="" onclick="window.open('test.php','welcome','width=300,height=200')">Open a new window</a>
</body>
</html>



ไฟล์ test.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Close Open A New Window</title>
</head>

<body>
<a href="#" onclick="javascript:window.parent.opener.document.location.href='http://www.google.co.th'; window.close();">Close</a>
</body>
</html>


ซึ่งในไฟล์ test.php นี้จะเป็นหน้าสำหรับหน้า Popup และจะมีปุ่ม Close เพื่อปิดหน้า ซึ่งเมื่อเรากดปุ่ม Close หน้าหลักจะเด้งไปที่ www.google.co.th ให้อัตโนมัติ



21 มิถุนายน 2553

submit form ให้ขึ้นเป็น popup และอยู่กลางจอ

ฟังชั่น

function submitPopup (objForm,W,H,S) {
 // W = width, H = height, S = scrollbar
 var winleft = (screen.width - W) / 2;
 var winup = (screen.height - H) / 2;
 winProp  = 'width='+W+',height='+H+',left='+winleft+',top='+winup+',scrollbars='+S+',resizable' + ',status=yes'
 
 objForm.target = "newPopup";
 window.open('', "newPopup", winProp);
 objForm.submit();
}


วิธีใช้งาน

<a href="javascript:submitPopup(document.frmTest,300,400,'no');">Submit</a>


ข้อมูลจากเวป >>  http://sixhead.com/ 

17 มิถุนายน 2553

ฟังชั่น php ลบแท็ก html

 strip_tags = ใช้สำหรับลบแท็ก html ที่มาพร้อมกับข้อความ
เช่น
<p>ทดลอง</p>
เมื่อเราใช้คำสั่ง strip_tags จะไม่ได้ค่า <p></p> จะได้เฉพาะคำว่า ทดลอง

15 มิถุนายน 2553

Jquery Refresh Div

 ไฟล์ Index.html

<script  type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
    <script type="text/javascript">
        var auto_refresh = setInterval(
            function ()
            {
            $('#load_tweets').load('Untitled-2.php').fadeIn("slow");
        }, 1000); // refresh every 10000 milliseconds
    </script>
<div id="load_tweets"> </div>

ไฟล์ Untitled-2.php

<?php

    echo "test page";

?>

เท่านี้ก็จะทำให้เรารีเฟรชหน้าได้เฉพาะบา่งส่วนแล้วครับ  แต่อาจจะใช้งานไม่ได้สำหรับ I.E. เวอร์ชั่นเก่า ๆ ครับ

ดูข้อมูลเพิ่มเติมได้ที่ : http://www.9lessons.info/2009/07/auto-load-refresh-every-10-seconds-with.html

14 มิถุนายน 2553

การเรียงลำดับตัวอักษรในภาษาไทย

หากในฐานข้อมูลคุณเป็นภาษาไทยแล้วอยากเรียงลำดับ  ก ข ค ง
สมมุติมีข้อมูล ก ,เข, เก, ข  ถ้าหากใช้คำสั่ง ORDER BY ธรรมดามันจะเรียง  ก,ข,เก,เข
แต่ถ้าหาำกว่าเราอยากจะเรียงเป็น ก,เก,ข,เข แล้วละก็ ใช้คำสั่งต่อไปนี้ครับ

SELECT * FROM tb_test ORDER BY CONVERT (NAME USING tis620);

เพื่อแปลงเป็น tis620 ก่อนครับ


ข้อมูลจาก บอร์ด thaicreate PHP ครับ

11 มิถุนายน 2553

เปิดใช้งาน cakephp

1. โหลด cakephp มา ก่อนเลยครับ แล้วแตกไฟล์เอาไปไว้ที่ root ของเรา เ่ช่น C:\AppServ\www\cakephp

2. จากนั้นก็เข้าสู่ขั้นตอน config ไฟล์่ต่างๆ โดยเริ่มจากไปเปิดไฟล์ /app/config/database.php.default แล้วเปลี่ยนชื่อเป็น /app/config/database.php ครับ

3. เปิดไฟล์ /app/config/database.php ขึ้นมาแล้วไปแก้ไขให้ถูกต้องครับ

var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost', // ส่วนนี้ไม่ต้องเปลี่ยน
'login' => 'root', //ชื่อผู้ใช้ฐานข้อมูล
'password' => 'root', //รหัสผ่านฐานข้อมูล
'database' => 'ชื่อฐานข้อมูล',
'prefix' => '',
);

4. เปิด /app/config/core.php ขึ้นมา ไปที่บรรทัด 151 จะเห็น

Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');

ให้แก้ไขโดยเปลี่ยน DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi เป็นอักษรอื่นๆ ครับ เป็น key สำหรับเข้ารหัสครับ ตั้งตามใจชอบ

5. ยังอยู่ที่ไฟล์เดิมนะครับ ย้อนขึ้นไปที่ประมาณบรรทัดที่ 57 ให้เอาคอมเม้นต์ในบรรทัดนี้ออก จะได้เป็น

Configure::write('App.baseUrl', env('SCRIPT_NAME'));

ส่วนนี้เอาไว้ในการใช้งาน mod_rewrite ถ้าที่ทำมาทั้ง 5 ข้อ ไม่ผิดพลาดอะไร พอเรา refresh browser ก็จะได้น่าตาแบบนี้ครับ

ุ6. สมมติว่าเราสร้าง Controller ขึ้นมาชื่อว่า MessagesController นะครับ และมี method ชื่อ index แล้วต้องการจะใช้งาน Controller นี้ เราต้องไปทำการกำหนด route ก่อน โดยไปที่ไฟล์ app/config/rountes.php แล้วเพิ่ม

Router::connect ('/', array('controller'=>'messages', 'action'=>'index'));

ลงไปครับ เพื่อบอกว่าให้เริ่มทำงานที่ controller ที่ชื่อว่า messages และ method ที่ชื่อว่า index


ข้อมูลจากเวป > http://www.nattapon.com/th/index.php/programmer/%E0%B9%80%E0%B8%9B%E0%B8%B4%E0%B8%94%E0%B9%83%E0%B8%8A%E0%B9%89-cakephp-1.2.html

ปรับแต่ง cakephp ให้อ่านไฟล์นามสกุล .php

ปกติแล้ว cake ไฟล์จะนามสกุล .ctp ซึ่งเราจะต้องทำการเปลี่ยนนามสกุลจาก .php ทุกครั้ง

หากจะเปลี่ยนให้ cakephp อ่านไฟล์นามสกุล .php ต้องไปที่

E:\AppServ\www\cakephp\cake\libs\controller\controller.php

ไปที่บรรทัด 240 แก้ไขจาก

var $ext = '.ctp';

ไปเป็น

var $ext = '.php';

เท่านี้มันก็จะอ่านไฟล์นามสกุล .php ได้เลย

กฏของ cakephp

กฏข้อที่ 1 : การตั้งชื่อ ตาราง การตั้งชื่อตารางของฐานข้อมูล จะต้องเป็นชื่อภาษาอังกฤษตัวพิมพ์เล็กทั้งหมด ที่สำคัญต้องเป็นพหูพจน์ด้วย ซึ่งพหูพจน์โดยทั่วไปให้เติม s หรือ es เช่น ตาราง users และ ตาราง comments เป็นต้น
กฏข้อที่ 2 : การตั้งชื่อฟิวด์ที่เป็นคีย์หลัก การตั้งชื่อฟิวด์ที่เป็นคียหลัก(PK) ของแต่ละตารางให้ตั้งชื่อฟิวด์นั้นว่า id เสมอ
กฏข้อที่ 3 : การตั้งชื่อฟิวด์ที่เป็นคีย์รอง การตั้งชื่อฟิวด์ที่เป็นคียรอง(FK) ของแต่ละตารางให้ตั้งชื่อฟิวด์โดยใช้ชื่อ ตารางที่เป็นคีย์หลัก_id แต่..ชื่อตารางที่เป็นคีย์หลักให้เปลี่ยน จากพหูพจน์เป็นเอกพจน์ด้วย เช่น user_id และ comment_id
กฏข้อที่ 4: การตั้งชื่อไฟล์ของ controller การตั้งชื่อไฟล์ของ controller นั้นจะใช้กฏเดียวกันกับการตั้งชื่อตาราง แต่ต่างกันตรงที่ชื่อไฟล์ของ controller จะต้องเป็นแบบนี้นั่นคือ ชื่อตาราง_controller.php เช่น users_controller.php เป็นต้น
กฏข้อที่ 5: การตั้งชื่อไฟล์ของ model การตั้งชื่อไฟล์ของ model นั้นจะใช้ชื่อของตาราง(แต่เป็นเอกพจน์) ในการตั้งชื่อไฟล์ เช่น user.php เป็นต้น
กฏข้อที่ 6: การตั้งชื่อโฟลเดอร์ของ views การตั้งชื่อโฟลเดอร์ของ views นั้นจะใช้ชื่อของตาราง(พหูพจน์) ในการตั้งชื่อโฟลเดอร์ เช่น users

จากเวป > http://cakephpthai.webfreedoms.com/?m=201005

9 มิถุนายน 2553

ฟั่งชั่น กำจัดการกรอกตัวอักษร

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script>
$(document).ready(function(){
    $('#Wish').keyup(function(){
        var max = parseInt($(this).attr('maxlength'));
        if($(this).val().length > max){
            $(this).val($(this).val().substr(0, $(this).attr('maxlength')));
        }
        $('#WishMax').html('เหลืออีก ' + (max - $(this).val().length) + ' ตัวอักษร');
    });
});
</script>

วิธีใช้งาน ด้านล่างนี้เลย

<textarea name="Wish" id="Wish" maxlength="10"></textarea>
<div id="WishMax"></div>

4 มิถุนายน 2553

บวกค่าชนิด Text ที่มีลูกน้ำคั่น ในคำสั่ง SQL

เมื่อได้ลองทำการบวกค่าที่อยู่ในฐานข้อมูลชนิด Text เช่น 1,000.00 กับค่า 20,000.00

SQL คือ SELECT (num1 + num2) as sumtotal FROM tbl_test

ผลลัพธ์ที่ได้มาคือ 21 ซึ่งมันจะมองเห็นตัวเลขข้างหน้าลูกน้ำ คือ 1 และ 20 มาบวกกันเท่านั้น

วิธีที่ผมใช้แก้ไข คือ

SELECT (REPLACE(num1,',','') + REPLACE(num2,',','')) as sumnew FROM tbl_test

- REPLACE(ค่าที่ต้องการแก้ไข,'ค่าที่ต้องการเปลี่ยน','ค่่าที่นำมาแทนที')

แล้วผลลัพธ์ที่ได้ คือ 21000

แต่ถ้าหาำกค่าที่อยู่ภายในฐานข้อมูลเรามีจุดทศนิยม เช่น 1,000.50 กับค่า 20,000.25

ผลลัพธ์ที่ได้ คือ 21.000.75

ซึ่งคำสั่งนี้จะเหมือนกับ str_replace ใน PHP ครับ