วันจันทร์ที่ 6 เมษายน พ.ศ. 2552

Date & Time in PHP


ฟังก์ชั่น Date() ถูกใช้จัดรูปแบบเวลา หรือวันที่ จากค่า Timestamp ซึ่มี syntax ดังนี้
date(format,timestamp)
format คือ การระบุรูปแบบจาก timestamp เพื่อแสดงข้อมูลออกมา
timestamp คือ ค่าตัวเลขของจำนวนวินาที เริ่มตั้งแต่วันที่ 1 มกราคม ค.ศ. 1970 เวลา 00:00:00 น. ถ้าไม่ระบุจะเป็นค่าเวลาปัจจุบัน
รูปแบบของ Date()ค่าแรกของฟังก์ชั่น date() มีรูปแบบต่างๆ มากมาย เราจะแสดงให้ดูตัวอย่างบางตัว:
d คือ แสดงวันของเเดือน มีค่า 01-31
m คือ แสดงเดือน มีค่า 01-12
Y คือ แสดงปี มีค่าเป็น ค.ศ. 4 หลัก
ค่าในรูปแบบต่างๆ สามารถดูได้จาก php date functionส่วนตัวอักขระ เช่น "/" , "." , "-" สามารถจะเพิ่มเข้าไประหว่างตัวอักษรของรูปแบบเวลาได้

ค่าที่ได้จะเป็น
2006/07/11
2006.07.11
2006-07-11
การสร้าง timestampการสร้าง timestamp เป็นเวลาปัจจุบันจะใช้ฟังก์ชั่น time() จะได้ค่าตัวเลข 10 หลักแบบนี้ 1239027959 ซึ่งถ้าเราไม่ใส่ค่า timestamp จะได้ค่าเดียวกันกับ time()ค่า timestamp เป็นค่าที่จะใส่หรือไม่ก็ได้ในฟังก์ชั่น date() ถ้าไม่ใส่จะเป็นเวลาปัจจุบัน แต่ถ้าเราต้องการระบุเวลาที่แน่นอนล่ะ จะต้องใช้ฟังก์ชั่น mktime() โดยมี syntax ดังนี้:
mktime(hour,minute,second,month,day,year)
ตัวอย่างถ้าเราต้องการให้แสดงวันที่ อีก 2 วันข้างหน้าจะเขียนดังนี้

ค่าที่ได้จะเป็น
วันอีก 2 วันข้างหน้า คือ 08/04/2009

ขอบคุณข้อมูลดีดีจาก http://www.phpstreet.com/tutorials/php/php_date.php


การสร้าง DateTime object$dt = new DateTime("2008-08-01 18:10");
สามารถสร้างโดยกำหนด string ของ datetime ตอน construct มันได้เลย ซึ่งมันจะใช้ timezone แบบเดียวกับค่าปริยายของเซิร์ฟเวอร์ เช่น ถ้าเซิร์ฟเวอร์ตั้งอยู่ประเทศไทย ก็จะใช้ timezone เป็น ICT หรือ GMT+0700 หรือถ้าต้องการระบุ timezone เป็นที่อื่น ก็สั่งแบบนี้
$dt1 = new DateTime("2008-08-01 18:10 UTC");
$dt2 = new DateTime("2008-08-05 13:00+09:00");ถ้าไม่ระบุค่า string จะได้ค่าวันที่และเวลาปัจจุบัน สมมติ $d คือ

เวลาเป็น unix timestamp ได้จากฐานข้อมูล ถ้าจะตั้งเวลาให้กับ DateTime ก็ทำได้โดย
$dt3 = new DateTime(strftime("%D %T",$d));
การแปลงเป็น stringเวลาจะเอาไปใช้งาน ก็ต้องแปลงเป็น string ก่อน เช่น เอาไปแสดงผล หรือแปลงไปเป็น unix timestamp เพื่อเอาไปเก็บลง
ฐานข้อมูล หรืออื่นๆ ต่อไป โดย format string ที่ใช้ สามารถดูได้ที่ http://php.net/date

echo $dt->format("l dS of F Y H:i:s")."\n";
$d = $dt->format("U");
echo strftime("%c",$d)."\n";
การตั้งค่า timezoneต้องใช้ TimeZone object ซึ่งใช้แบบง่ายๆ ดังนี้
echo $dt->format("l dS of F Y H:i:s")."\n";
$d = $dt->format("U");
echo strftime("%c",$d)."\n";โดยชื่อ timezone สามารถดูได้จาก http://php.net/timezones ทีนี้เวลาพิมพ์ค่าวันที่ออกมาโดยใช้ method format() ก็จะได้วันเวลาตาม timezone ที่ตั้งไว้
การเปลี่ยนค่าวันที่/เวลา
$dt->setDate(2006,12,31);เปลี่ยนวันที่เป็น 2006-12-31 เวลาคงเดิม
$dt->setTime(12,30,00);เปลี่ยนเวลาเป็น 12:30 โดยวันที่เป็นวันเดิม
$dt->modify("+1 week 2 days 4 hours 2 seconds");เปลี่ยนวันเวลาโดยอ้างอิงกับค่าเดิม ซึ่งรูปแบบ string ให้ใช้แบบเดียวกับ

ฟังก์ชัน strtotime()
การหาผลต่างของวันและเวลาก็คล้ายกับที่คุณ roteee ได้เขียนไว้ โดยต้องแปลงเป็นวินาที (unix time stamp) ก่อน แล้วเอามาลบกัน แล้วหารออกมาเป็นวัน-ชั่วโมง-นาที-วินาที
$dt1 = new DateTime("2007-08-01 18:00:00");
$dt2 = new DateTime();
$dt = $dt2->format("U") - $dt1->format("U");
$d = (int) ($dt / (24*60*60));
$x = $dt % (24*60*60);
$h = (int) ($x / (60*60));
$x = $x % (60*60);
$m = (int) ($x / 60);
$s = $x % 60;

echo $d." days ".$h." hours ".$m." minutes ".$s." secondsn";
ปัญหาของ DateTime objectปัญหาคือ ตรง format() มันยังไม่สนับสนุนการใช้ locale น่ะสิครับ ทำให้ยังไม่สามารถแสดงวันที่แบบท้องถิ่นของประเทศต่างๆ เช่นประเทศไทยได้ ซึ่งจะต่างจากการใช้ strftime() ที่จะใช้ตาม locale ที่ตั้งใน setlocale() ถ้าทำได้ ก็จะสะดวกขึ้นอีกมาก ตอนนี้ต้องใช้วิธีแปลง DateTime เป็น unix time stamp แล้วใช้ strftime() แปลงเป็น string อีกที ดังตัวอย่างนี้
setlocale(LC_TIME, 'ja_JP');

ปล. เดี่ยวจะอธิบายเรื่อง Object Class อีกอย่างระเอียดนะครับ
date_default_timezone_set('Asia/Tokyo');
$dt = new DateTime();
echo strftime("%c\n",$dt->format('U'));
ผลลัพธ์ 2007年08月09日 00時56分54秒ถ้าภาษาไทยก็ใช้ setlocale(LC_TIME, 'th_TH'); และ date_default_timezone_set('Asia/Bangkok'); จะได้ผลลัพธ์เป็น พ. 8 ส.ค. 2550, 23:00:59

ขอคุณข้อมูลดีดีจาก http://www.phpzealots.com/node/71

วันอาทิตย์ที่ 5 เมษายน พ.ศ. 2552

PHP operator

operator คืออะไร
operator คือตัวดำเนินการทางตรรกะครับ
operator มีประโยชน์อย่างไร operator เอาไว้ทำให้ อัลกอลิทึม ของโปรแกรมเป็นไปตามต้องการครับ ตัวอย่าง operator หรือ ตัวดำเนินการของภาษา PHP มีดังนี้ครับ


1. ตัวดำเนินการทางคณิตศาสตร์ (Arithmatic Operators)การบวก รูปแบบการใช้งาน เช่น $a + $b หมายถึง การหาผลรวมของ $a กับ $bการลบ รูปแบบการใช้งาน เช่น $a - $b หมายถึง การหาผลต่างของ $a กับ $bการคูณ รูปแบบการใช้งาน เช่น $a * $b หมายถึง การหาผลคูณของ $a กับ $bการหาร รูปแบบการใช้งาน เช่น $a / $b หมายถึง การหาผลการหารของ $a กับ $bการหารเอาเศษ รูปแบบการใช้งาน เช่น $a % $b หมายถึง การหาเศษผลการหารของ $a กับ $b

2. ตัวดำเนินการเพิ่มค่า/ลดค่า (Increment / Decrement Operators)Pe-increment รูปแบบการใช้งาน เช่น ++$a หมายถึง การเพิ่มค่า 1 ก่อนแล้วค่อยให้ค่ากับตัวแปรPost-increment รูปแบบการใช้งาน เช่น $a++ หมายถึง การให้ค่ากับตัวแปรก่อน แล้วค่อยเพิ่มค่า 1Pe-decrement รูปแบบการใช้งาน เช่น --$a หมายถึง การลดค่า 1 ก่อนแล้วค่อยให้ค่ากับตัวแปรPost-decrement รูปแบบการใช้งาน เช่น $a-- หมายถึง ให้ค่ากับตัวแปรก่อน แล้วค่อยลดค่า 1

3. ตัวดำเนินการตรรกศาสตร์ (Logical Operators)and รูปแบบการใช้งาน เช่น $a and $b หมายถึง เป็นจริงเมื่อทั้ง $a และ $b เป็นจริงand รูปแบบการใช้งาน เช่น $a && $b หมายถึง เป็นจริงเมื่อทั้ง $a และ $b เป็นจริงor รูปแบบการใช้งาน เช่น $a or $b หมายถึง เป็นจริงเมื่อ $a หรือ $b เป็นจริงor รูปแบบการใช้งาน เช่น $a $b หมายถึง เป็นจริงเมื่อ $a หรือ $b เป็นจริงExclusive or รูปแบบการใช้งาน เช่น $a xor $b หมายถึง เป็นจริงเมื่อ $a และ $b ตัวใดตัวหนึ่งเป็นจริงnot รูปแบบการใช้งาน เช่น !$a หมายถึง เป็นจริงเมื่อ $a เป็นเท็จ

ตัวดำเนินการด้านการเปรียบเทียบ
== เท่ากับ เป็นจริงก็ต่อเมื่อ ซ้ายเท่ากับขวา
!= ไม่เท่ากับ เป็นจริงก็ต่อเมื่อ ซ้ายไม่เท่ากับขวา
=== เท่ากับ เป็นจริงก็ต่อเมื่อ ซ้ายเท่ากับขวาและชนิดของข้อมูลต้องเหมือนกัน
> มากกว่า เป็นจริงก็ต่อเมื่อ ซ้ายมากกว่าขวา
>= มากกว่าหรือเท่ากับ เป็นจริงก็ต่อเมื่อ ซ้ายมากกว่าหรือเท่ากับขวา
< น้อยกว่า เป็นจริงก็ต่อเมื่อ ซ้ายน้อยกว่าขวา <= น้อยกว่าหรือเท่ากับ เป็นจริงก็ต่อเมื่อ ซ้ายน้อยกว่าหรือเท่ากับขวา ตัวดำเนินการด้านการตรรกศาสตร์
หรือ เป็นจริงก็ต่อเมื่อซ้ายหรือขวาเป็นจริง
or หรือ เป็นจริงก็ต่อเมื่อซ้ายหรือขวาเป็นจริง
&& และ เป็นจริงก็ต่อเมื่อซ้ายและขวาเป็นจริง
and และ เป็นจริงก็ต่อเมื่อซ้ายและขวาเป็นจริง
! ไม่ เป็นจริงก็ต่อเมื่อค่าตรงกันข้าม


โครงสร้างควบคุม
โครงสร้างควบคุม คือ โครงสร้างภายใน PHP ที่ใช้ควบคุมการทำงานต่างๆ โดยสามารถจัดกลุ่มเป็น
-โครงสร้างเงื่อนไข ( เช่น if)
-โครงสร้างวนรอบ หรือ loop ( เช่น while)
ถ้าต้องการตอบสนองกับข้อมูล บางทีคำสั่งจำเป็นต้องตัดสินใจด้วยเงื่อนไข (Conditional) บางอย่าง เพื่อบอกโปรแกรมให้ตัดสินใจ
เริ่มด้วย อะไรดี อืม… เอา ฟังชั่น IF ก่อนแล้วกัน ง่ายดี
Function IF คืออะไร??
ฟังชั่น IF ก็คือ ฟังชั่นที่ใช้ในการ ตัดสินใจ..งงป่ะ -*- งั้นอธิบายเพิ่มอีกหน่อย มันคือ การ เลือกกระทำ แบบ จริง หรือเท็จ ถ้า จริง ให้ ทำอย่างนี้ ถ้า เท็จ ให้ทำอีกอย่างหนึ่ง
อืม น่าจะ พอเข้าใจกันบ้างแล้วนะ งั้นเราไปดู ลักษณะการทำงานกันดีกว่า…
if ใช้ในการตัดสินใจ โดยต้องกำหนดเงื่อนไขกับประโยคคำสั่ง ถ้าเงื่อนไขเป็นจริง กลุ่มคำสั่ง (block code) จะได้รับการประมวลผล
เงื่อนไขในประโยคคำสั่ง if ต้องอยู่ในวงเล็บ ตัวอย่างเช่น
if ($total > 50) {
echo “ท่านได้ใส่จำนวนเกิน 50″;
} else {
echo “ท่านได้ใส่จำนวนต่ำกว่า 50″;
}
จากตัวอย่างข้างบน จะสรุปได้ว่า if($total>50) คือ ถ้า ตัวแปร total น้อยกว่า 50 ให้แสดงผลคำว่า “ท่านได้ใส่จำนวนเกิน 50″ ถ้าเป็นเท็จ ให้แสดงผลคำว่า “ท่านได้ใส่จำนวนต่ำกว่า 50″ ซึ่ง ชุดของคำสั่งจะเป็นแบบนี้นะ

if แปล ตามตัวคือ ถ้า
สมมุติว่าเราต้องการให้ user ทำการล็อกอินก่อนถึงจะใช้งานเว็บของเราได้นะครับ เราก็จะเขียน operation ได้ดังนี้
if(สถานะ user != "login"){
เข้าระบบไม่ได้
}else if(สถานะ user =="login"){
เข้าระบบได้
}

เขียนเป็นโค้ดนะครับ
if($userStatus!="login"){
echo"เข้าระบบไม่ได้";
}else if($userStatus=="login"){
echo"เข้าระบบได้";
}

if (เงื่อนไข) {
คำสั่งที่จะกระทำเมื่อเป็นจริง
} else {
คำสั่งที่จะกระทำเมื่อเป็นเท็จ
}
เป็นไงบ้าง ง่ายใช่ไไหมหละ งั้น แป้งก็จบ เรื่อง IF ไว้แค่นี้ก่อนนะ ไปดู เรื่องอื่นต่อเลย..


While loop คืออะไร??
Loop ง่ายที่สุดของ PHP คือ while loop ซึ่งเหมือนกับประโยคคำสั่ง if ที่ขึ้นกับเงื่อนไขความแตกต่างระหว่าง while loop กับประโยคคำสั่ง if คือ ประโยคคำสั่ง if ประมวลผลกลุ่มคำสั่งเพียงครั้งเดียวถ้าเงื่อนไขเป็นจริง
while loop ประมวลผลกลุ่มคำสั่งซ้ำตราบเท่าที่เงื่อนไขเป็นจริง โดยทั่วไป while loop ใช้ เมื่อ ไม่ทราบจำนวนรอบประมวลผล
ลักษณะการทำงาน..ไวยากรณ์พื้นฐานของ while loop คือ
while (เงื่อนไข) {
คำสั่งที่จะกระทำเมื่อเป็นจริง
}
ตัวอย่าง while loop แสดงหมายเลข จาก 1 ถึง 5
$num = 1;
while ($num <= 5) { echo $num.” ”;$num++; } $num = 1; (จุดเริ่มต้นของแต่ละรอบ) คือ การทดสอบเงื่อนไข ถ้าเป็นจริงก็จะทำต่อไปเรื่อยๆ จนกว่าเงื่อนไขจะเป็นเท็จก็จะจบการทำงานค่ะอะ ไปเรื่องต่อไปเลยดีกว่า รีบๆ…(ก็นู๋หิว T^T) for loop คืออะไร??
มีหน้าที่ เหมือน While loop ทุกประการเลย -*- แต่ มันแตกต่างกันตรงที่ วิธีการเขียน ซึ่ง ลักษณะการเขียนของ For loop มีดังนี้..
for loop คืออะไร??
มีหน้าที่ เหมือน While loop ทุกประการเลย -*- แต่ มันแตกต่างกันตรงที่ วิธีการเขียน ซึ่ง ลักษณะการเขียนของ For loop มีดังนี้..
for (กำหนดค่าเริ่มต้น; เงื่อนไข; เปลี่ยนแปลงค่าเริ่มต้น) {
คำสั่งที่จะกระทำเมื่อเป็นจริง;
}
กำหนดค่าเริ่มต้น: คือการกำหนดค่าเริ่มต้นการทำงาน เช่น $i = 0
เงื่อนไข: ซึ่งก่อนเริ่มแต่ละรอบจะทดสอบเงื่อนไขเสมอ ถ้าเป็นเท็จจะเป็นการสิ้นสุดรอบการทำงาน เช่น $i < 5
เปลี่ยนแปลงค่าเริ่มต้น: ทำการปรับปรุงค่าเริ่มต้น เช่น $i++
ตัวอย่างเช่น
for ($i = 0; $i< 5; $i++){
echo “แป้งน่ารัก”;
}
เมื่อเปรียบเทียบ while loop กับ for loop ในการทำงานแบบเดียวกัน for loop จะมีความกะทัดรัดมากกว่า
อะ ก็จบไปแล้ว ทั้ง IF, While, For เย้..ได้ไปกินข้าวละ อ๊ะ
เด๋วก่อน..ไหนๆ ก็ไหนๆ ละ แป้ง จะแถมเรื่องการออกจากเงื่อนไข loop ก่อนไปกินข้าวละกัน*0*มาดูกันเลย…
การออกจากโครงสร้างควบคุม
ถ้าต้องการหยุดการประมวลผลคำสั่ง มี 3 วิธี ขึ้นกับผลที่ต้องการ
ถ้าต้องการหยุดการ loop สามารถใช้ประโยคคำสั่ง break เพื่อหยุดการทำงาน แล้วจะเด้งออกมาทำงานคำสั่งต่อไป
ถ้าต้องการกระโดดไปยังรอบต่อไป สามารถใช้ประโยคคำสั่ง continue
ถ้าต้องการสิ้นสุดประมวลผลสคริปต์ PHP สามารถใช้ exit ตามปกติใช้เมื่อเกิดความผิดพลาด หรือ ใช้เพื่อทดสอบการทำงานบางอย่าง และไม่ต้องการให้ทำงานเลยโค้ดนั้นๆ เช่น
echo “แป้ง”;exit;echo “ไม่น่ารัก”;
ในโค้ดจะแสดงผลแค่ “แป้ง” แต่จะไม่แสดงผลคำว่า “ไม่น่ารัก”

ขอขอบคุณข้อมูลดีดีจาก http://lab.tosdn.com/?p=186

ตัวแปร PHP

ในหัวข้อนี้จะกล่าวถึงตัวแปรนะครับ ตัวแปรในภาษา PHP จะใช้สัญลักษณ์ $ ตามด้วยตัวอักษณก่อน แล้วค่อยตามด้วยตัวเลขหรือตัวอักษรก่อนก็ได้ เช่น $text $text1 $a $b ส่วนตัวอย่างตัวแปรที่ผิดนะครับ $1 $_ $__
เป็น casesensitive ครับ หมายความตัวแปรที่ขึ้นตัวเล็ก ตัวใหญ่เป็นคนละตัวแปรกันครับ
เช่น $a กับ $A ไม่ใช่ตัวเดียวกันครับ ง่ายมากสำหรับตัวแปร การประกาศตัวแปรสามารถประกาศไว้ที่ไหนก็ได้ครับ แต่ต้องอยู่ใน script PHP คืออยู่ในบล็อกนี้ครับ


ทำไมต้องใช้ตัวแปร เอาประโยชน์ที่เห็นได้ชัดนะครับ สมมุตว่าเราพิมพ์คำว่า PHP หลายๆ ครั้งใน 1 หน้าเว็บเพจ แต่บังเอญต้องการเปลี่ยนจากคำว่า PHP เป็น php เราต้องมานั่งแก้ แต่ถ้าเราใช้ตัวแปรเราก็สามารถแก้แค่ตัวแปรเท่านั้นครับ

ตัวอย่าง

$a="aa";
echo"$a";
?>

ผลลัพธ์จะได้เป็น

aa

นอกจากนนี้ยังมีตัวแปรแบบ Array อีกครับ
ตัวแปรแบบ Array ใข้สัญลักษณ์เช่นเดียวกันครับ แต่จะตามด้วยเครื่องหมาย []
และยังมีอีกหลายวิธีทในการประการศนะครับ
ตัวอย่างการประกาศตัวแปรแบบ Array

$myarr[]="aaa";
$myArr=array("ข้อมูลที่1","ข้อมูลที่2","ข้อมูลที่3");

รายละเอียดยังมีอีกเยอะครับเดิ๋ยวจะอธิบายต่อในตอนต่อไป

Hello My Word

เราจะมาทดสอบการทำงานของ PHP นะครับ
ไฟล์แรกในชีวิตเตรียมตัวให้ดีครับ
copy script ข้างล่างนี้ไปนะครับ แล้วบันทึกเป็น hello.php
เอาไปวางไว้ที่ C:AppServ/www/myweb/

myweb ถ้าไม่มีให้สาร้างใหม่นะครับ

<?
echo"Hello My word";
?>

นำไปวางและลองทำตามดูครับ

install Appserv

การติดตั้ง หรือ setup Appserv นั้นง่ายมากครับเพียงแค่ 8 คลิก กับ กรอกข้อมูล 4 ครั้งครับ
1. ดับเบิลคลิกที่ไฟล์ที่ดาวน์โหลดมา .exe นะครับ แล้วจะเห็นผลลัพธ์ดังรูป


setup appserv2. คลิกปุ่ม Next> ต่อไปครับแล้วจะเจอหน้าจอต่อไปนี้

setup appserv3. เป็นหน้าแสดงเงื่อนไขยอมรับการใช้งานครับถ้ายอมรับเงื่อนไขก็กด I Agree ครับ แล้วก็จะแสดงรูปดังภาพข่างล่างครับ

setup appserv 4. ภาพข้างบนเป็นการแสดง Directoryที่เราจะลงโปรแกรม Appserv ครับแนะนำให้เลือกค่าเดิมครับ เพราะคุณจะได้ไม่ต้องแก้ไขอะไรอีก ถ้าเก่งแล้วค่อยมาเลือก Directoryแล้วกันะครับ


setup appserv



5. ภาพข้างบนเป็นการเลือกให้ลง pagkage ต่างๆที่โปรแกรมจัดให้แนะนำให้เลือกทั้งหมดครับเพราะจำเป็นมากในการเขียน PHP+Mysql ครับ แล้วก็กดปุ่ม Next> ได้เลย

setup appserv



6।ภาพข้างบนเป็นการเลือกให้กรอกชื่อ Server และ email ของ Admin ครับ กรอกอะไรก็ได้ครับให้ถูกต้องตามรูปแบบ มั่วเอาก็ได้ไม่จำเป็นเท่าไหร่ เสร็จแล้วก็คลิกปุ่ม Next> ครับ

setup appserv



7. ภาพข้างบนเป็นการให้กรอก password ของฐานข้อมูลครับ ตรงนี้แหละที่สำคัญจด หรือ จำไว้ให้ดีนะครับ เป็น password ของ User ที่ชื่อว่า root ของฐานข้อมูล Mysql ครับ ให้เรากรอก Password ทั้งสองช่องให้ตรงกันครับ และคลิกปุ่ม Install จะเริ่มการติดตั้ง Appserv ครับ

setup appserv



8. ภาพข้างบนโปรแกรมกำลังทำการติดตั้งครับ รอจนโปรแกรม Appserv ทำการติดตั้งเสร็จ

setup appserv



เสร็จแล้วคลิกปุ่ม Finish เพื่อให้โปรแกรมเริ่มทำการ Start Service ของ Apache และ Mysql ครับ



ง่ายมากเลยนะครับ

ต้องขอขอบคุณรูปภาพสวย ๆ จาก http://www.thainextstep.com/php/appserv_setup.php

เริ่มทดสอบการใช้งานให้พิพม์ http://localhost/

เริ่มทดสอบการใช้งานฐานข้อมูลให้พิพม์ http://localhost/phpmyadmin