3/29/2012

PHP : Fatal error: Cannot redeclare ..

Fatal error: Cannot redeclare ..ชื่อไฟล์ หรือ Function...
Error นี้คือ มีการสร้าง function หรือเรียกใช้ Function ที่ซ้ำกันครับ (ตรวจสอบให้ดี อาจเกิดจากการที่การ include ไฟล์เดียวกันมากกว่า 1 ครั้ง)
แก้ปัญหาโดยใช้
require_once()
include_once() 
แทนครับ
ความหมาย http://porpramarn.blogspot.com/2012/03/php-includeincludeonce-require.html
ที่มา http://www.thaicreate.com/php/forum/002913.html

PHP : include,include_once, require, require_once ต่างกันยังไง

ใน PHP จะมีฟังก์ชันที่ทำหน้าที่สำหรับนำเข้าไฟล์ (นำไฟลหนึ่งมาเป็นส่วนประกอบของอีกไฟล์หนึ่ง) อยู่หลายฟังก์ชันด้วยกัน แต่ที่มีคนนิยมใช้มากและพบเห็นได้บ่อย (ตามบทความหรือฟรี source code ทั่วไป) จะมีอยู่ประมาณ 4 ฟังก์ชัน ซึ่งก็มีหลายคน งงว่าจะเลือกใช้อะไรดี เพราะใช้ ๆ ไปผลลัพธ์มันก็เหมือน ๆ กัน ในบทความนี้เราจะมาฟันธงกันครับว่าควรจะใช้อะไรดี
ซึ่ง 4 ฟังก์ชันที่ผมพูดถึง ได้แก่
1. include เช่น incude("connect.inc") หรือ include "connect.inc"
2. include_once เช่น include_once("connect.inc") หรือ include_once "connect.inc"
3. require เช่น require("connect.inc") หรือ require "connect.inc"
4. require_once เช่น require("conect.inc") หรือ require_once "connect.inc"

(***comment สำหรับมือใหม่นิดหนึ่งนะครับ ...ไม่จำกัดว่าต้องเป็นไฟล์นามสกุล *.inc นะครับ นามสกุลอะไรก็ได้ หรือจะเป็น url ก็ได้
แต่นักเขียนโปรแกรมส่วนมากจะนิยมตั้งเป็น *.inc หรือ *.inc.php เพื่อให้สังเกตได้ง่ายว่าไฟล์นามสกุลแบบนี้จะต้อง ถูกเรียกใช้โดยไฟล์อื่น ประมาณนั้นครับ ^^)

จะสังเกตเห็นว่ารูปแบบของการเรียกใช้งานไม่ได้ต่างกันเลย แต่ความจริงมันต่างกันครับ แล้วมันต่างกันยังไงละ ^^
....ก่อนจะรู้ว่ามันต่างกันยังไงเรามาดูที่ศัพท์ภาษาอังกฤษกันก่อนนะครับ ในชื่อฟังก์ชันทั้ง 4 ฟังก์ชันนั้นจะมีศัพท์ภาษาอังกฤษหลัก ๆ อยู่ 3 คำ
คือ "include", "require" และ "once" ลองเปิดโปรแกรม dictionary ที่มีอยู่ ในเครื่องคุณดูสิครับว่าแต่ละคำหมายความว่าอะไร
ความหมายที่ได้จะประมาณนี้ครับ
include = รวมถึง, ประกอบด้วย
require = ต้องการ
once = ครั้งเดียว, หนเดียว

ดูจากคำแปลก็น่าจะรู้แล้วนะครับว่าฟังก์ชันไหนให้ความสำคัญกับไฟล์ที่นำเข้ามามากกว่ากัน ....ใช่ครับ require ฟังก์ชัน
require() กับ require_once() จะให้ความสำคัญกับไฟล์ที่นำเข้ามามากกว่า สรุปก็คือ
ฟังก์ชัน include() กับ include_once() เมื่อใช้แล้ว ถ้ามันไม่เจอไฟล์ตามที่ระบุ มันจะรายงาน error แค่
Warning เท่านั้นแล้วก็ข้ามไปส่วนอื่นต่อได้ จึงนิยมใช้เรียกไฟล์พวกข้อความ หรือ html ธรรมดา เพราะไม่ค่อยจำเป็นเท่า
ไหร่โปรแกรมยังสามารถข้ามไปทำงานส่วนอื่นต่อได้อีก ยังไม่สมควารต้องหยุด
ต่างกันกับ require() กับ require_once() ซึ่งถ้าไม่เจอไฟล์ตามที่ระบุแล้ว มันจะรายงาน error มาเป็น Final error ทันที
แล้วก็จะโปรแกรมก็จะหยุดแค่ตรงนั้น จีงนิยมใช้เรียกไฟล์ที่เก็บฟังก์ชัน, คลาส หรือค่า config ต่าง ๆ ที่มีความจำเป็นมาก เพราะถ้าข้าม
การเรียกไฟล์ส่วนนี้ไปผลลัพธ์ส่วนอื่นที่ถึงแม้รันออกมาได้ก็ไร้ค่า

ที่มา http://www.webthaidd.com/php/webthaidd_article_236_2.html

3/27/2012

Axapta : Error wrong argument types in variable assignment.

Error executing code: Wrong argument types in variable assignment.

เมื่อเรียกใช้ Class แล้วมี Error ดังรูป

เกิดจากมีการทำงานที่ผิดพลาด เวลาเขียนโปรแกรม แล้วมีการใช้งานทำให้มีงานค้างที่ Server

แก้ปัญหาโดย เข้าไปที่ เมนูของโปรแกรม Axapta
เลือก Tools ---> Options ---> Click button Usage data

และดูที่ Tap ต่าง ๆ ที่มีงานที่เราเรียกใช้ แล้ว Error เช่น จะมีชื่อคล้าย ๆ กับ Class หรือ Report ที่เราเรียกใช้
ส่วนมากจะอยู่ที่ Tab Job แล้วเลือกชื่อ Class ที่ Error แล้วกด Delete เมนูด้านบน  ลองเข้าที่ Class หรือ Report นั้นอีกที
ถ้าไม่ได้ ก็หาใน Tab อื่น ๆ อีก


3/26/2012

PHP : ตรวจสอบ email ว่ากรอกอีเมลล์ถูกรูปแบบหรือไม่

รูปแบบคือ
- ขึ้นต้นตัวแรกด้วย > a-z หรือ A-Z
- ตัวต่อมาจะเป็น > a-z หรือ A-Z หรือ 0-9 หรือ _ หรือ - หรือ . อย่างน้อย 1 ตัว
- ตามด้วย > @ 1ตัว
- ตามด้วย > a-z หรือ A-Z หรือ 0-9 หรือ _ หรือ - อย่างน้อย 1 ตัว
- ตามด้วย > . 1 จุด
- ต่อมาตาม > a-z หรือ A-Z หรือ 0-9 หรือ _ หรือ - หรือ . อย่างน้อย 1 ตัว

เป็น javascript นะ


<script>
function check_form(name_form){
    var format_mail=/^([a-zA-Z]{1,})+([a-zA-Z0-9\_\-\.]{1,})+@([a-zA-Z0-9\-\_]{1,})+([.]{1,1})+([a-zA-Z0-9\-\_\.]{1,})$/;   
    if(!(format_mail.test(document.forms["register"].user_email.value)))
    {
        alert("รูปแบบอีเมล์ไม่ถูกต้อง");
        document.forms["register"].user_email.focus();
        return false;
    }
}
</script>
<form method="post"  name="register" onSubmit="return check_form(this)" autocomplete="off"> 
<input  name="user_email">
<input type="submit"  value="ตกลง" >

3/16/2012

PHP - ฟังชั่นเกี่ยวกับ date เปลี่ยนวันที่ ค.ศ. เป็น พ.ศ. โดยดึงวันที่มาจาก database

ฟังชั่นนี้เอาไปปรับเปลี่ยนได้ตามการใช้งานนะครับ ซึ่งที่จำเป็นต้องใช้ฟังก์ชั่นนีเพราะ SQL โดยมาตรฐานแล้วจะเก็บวันเวลา เป็น ค.ศ. ซึ่งโดยปกติแล้ว การเก็บเวลาโดยใช้รูปแบบ DATE(), NOW(), TIME() จำพวกนี้ ซึ่งง่ายต่อการจัดเก็บ แต่ข้อมูลที่เก็บไว้มันแสดงออกมา ไม่สวย ออกมาแบบข้อมูลดิบๆ ที่เราไม่ได้ปรับแต่งมัน ทีนี้จะมาดูฟังชั่น ที่แปลงวันที่ และเวลา ให้ออกมาตามรูปแบบที่เราต้องการ

function thaiDate($datetime) {
list($date,$time) = split(' ',$datetime); // แยกวันที่ กับ เวลาออกจากกัน
list($H,$i,$s) = split(':',$time); // แยกเวลา ออกเป็น ชั่วโมง นาที วินาที
list(
$Y,$m,$d) = split('-',$date); // แยกวันเป็น ปี เดือน วัน
$Y $Y+543// เปลี่ยน ค.ศ. เป็น พ.ศ.
switch(
$m
{
case 
"01":
$m "ม.ค."; break;
case 
"02":
$m "ก.พ."; break;
case 
"03":
$m "มี.ค."; break;
case 
"04":
$m "เม.ย."; break;
case 
"05":
$m "พ.ค."; break;
case 
"06":
$m "มิ.ย."; break;
case 
"07":
$m "ก.ค."; break;
case 
"08":
$m "ส.ค."; break;
case 
"09":
$m "ก.ย."; break;
case 
"10":
$m "ต.ค."; break;
case 
"11":
$m "พ.ย."; break;
case 
"12":
$m "ธ.ค."; break;
}
return 
$d." ".$m." ".$Y;
}
// รูปแบบวันที่ ที่เราเก็บจะเ็ป็นแบบนี้ ซึ่งได้มาจาก การ INSERT NOW() เข้าไปใน database
// yyyy-mm-dd hh-ii-ss
// 2010-02-25 08:10:35
$date '2010-02-25 08:10:35';

print 
thaiDate($date);
// ผลที่ได้คือ
// 25 ก.พ. 2553


หากต้องการแก้เป็น ชื่อเืดือนเต็มๆ ก็แก้ใน case ได้เลยครับ และหาต้องการให้แสดงเวลาด้วย ให้เพิ่ม ตรง return เป็นแบบนี้ครับ


return $d.' '.$m.' '.$Y.' เวลา '.$H.' '.$.' '.$s; 

3/13/2012

ThunderBird Error "The folder inbox is full"


****ก่อนการกระทำใด ๆ ควร Back Up Mail และไฟล์ทุกอย่างไว้ก่อนเสมอ
แก้ได้ 3 วิธี ดังนี้

1. แก้เบื้องต้นด้วยการ Compact ถ้า ข้อมูลเมล์มีมากเกินไป คือขนาดของ Inbox ที่ส่วนมากอยู่ใน C:\Documents and Settings\(USER)\Application Data\Thunderbird\Profiles\prcvlhmv.default\Mail\mail.scivalve.com เป็นต้นหรือที่อื่นตามที่ User ตั้งค่าไว้ หาก inbox มีขนาดมากกว่า 4 Gb การ Compact จะช่วยลดพีื้นที่ลงเล็กน้อย เท่านั้น จำเป็นต้องลบ เมล์เก่า ๆ ออกที่มีขนาดพื้นที่ใหญ่ แล้ว Compact ใหม่ สักพักก็จะเป็นอีกเมื่อมีเมล์เข้าเยอะ ๆ

2. สร้าง Folder ใหม่แล้วลากเมล์เก่า ๆ หรือทำไว้แต่ล่ะปีก็ได้แล้วลากจาก Inbox ไปเก็บไว้ใน Folder นั้น แล้วทำการ Compact ใหม่ วิธีนี้จะดีที่สุด แต่จะแยกเมล์ไว้ Folder ใคร Folder มัน

3. แก้โดยย้ายเมล์ออกและ นำเข้าไปใหม่วิธีนี้ลดขนาดพื้นที่ได้เยอะ แต่อย่างไรเมล์เก่า ๆ ก็ควรลบทิ้ง น่ะครับไม่งั่นก็คงเกินความจุ 4 Gb แล้วจะมี Error เหมือนเดิม วิธีนี้พื้นที่ inbox ลดลงประมาณ 800 - 900 mb
วิธีแก้แบบที่ 2
Mozilla ThunderBird Error "The folder inbox is full"
The whole error message is: "The folder inbox is full, and can't hold any more messages. To make room for more messages, delete any old or unwanted mail and compact the folder".

Follow this steps :
1 - Create a folder called TEMP (can be any name)
2 - Move all messages from Inbox to TEMP
3 - Exit Thunderbird
4 - Go to the LOCAL DIRECTORY folder and erase the 2 files : INBOX and INBOX.MSF
5 - Open thunderbird again
6 - Move ALL MESSAGES from TEMP to Inbox
7 - Erase TEMP folder
8 - DONE

ที่มา
http://www.ajaykumarsingh.com/mozilla-thunderbird/the-folder-inbox-is-full-and-cant-hold-any-more-messages.html
http://otaitek.blogspot.com/2010/05/mozilla-thunderbird-error-folder-inbox.html

ฟังก์ชั่นตรวจสอบเงื่อนไขแบบ Switch

ฟังก์ชัน switch จะทำการตรวจสอบตัวแปรว่ามีค่าเท่ากับ case ใด ถ้าตรงกับ case ใดก็จะทำงาน
ตามประโยคคำสั่งของ case นั้น การเปรียบเทียบของฟังก์ชัน switch ไม่สามารถเปรียบเทียบค่ามากกว่า น้อยกว่า
เหมือนฟังก์ชัน if ได้ และที่สำคัญตัวแปรที่นำมาใช้กับฟังก์ชัน switch จะต้องเป็นข้อมูลชนิดเลขจำนวนเต็ม
หรือตัวอักษรเท่านั้น ดังนั้น a1, a2 และ a3 อาจจะเป็นค่าคงที่ ตัวอักษร หรือตัวแปรก็ได้ โดยทั่วไปฟังก์ชัน
switch นิยมใช้ในการตรวจสอบเงื่อนไข จำนวนหลาย ๆ เงื่อนไขเพราะถ้าใช้ฟังก์ชัน if จะทำให้เกิดความยุ่งยากได้

รูปแบบ switch(ตัวแปร)
{
case a1;
ประโยคคำสั่ง 1;
break;
case a2;
ประโยคคำสั่ง 2;
break;
case a3;
ประโยคคำสั่ง 3;
break;
default;
ประโยคคำสั่ง ;
}