Group Blog
 
 
ตุลาคม 2548
 
 1
2345678
9101112131415
16171819202122
23242526272829
3031 
 
22 ตุลาคม 2548
 
All Blogs
 

ตอบข้อสอบ

การบ้านวิชา CY623 ของ ว่าที่ ร.ต.หญิงอารยา กสิพันธุ์
1. ออกข้อสอบ 1 ข้อ พร้อมเฉลย ในหัวข้อ การเขียนโปรแกรม PHP โดยประเมินว่า ผู้เข้าสอบต้องใช้เวลาประมาณ 1 ชั่วไมงในการทำ

การตรวจสอบเงื่อนไขใน PHP
จงบอกวิธีการตรวจสอบเงื่อนไขของการเขียน PHP

การตรวจสอบเงื่อนไขใน
PHP


ตามเงื่อนไขที่ได้วางไว้ เช่น จะโชว์รูปสติ๊กเกอร์เฉพาะที่ได้รับคะแนนโหวตสูงสุด
หรือ จะทำการบันทึกข้อมูลลงฐานข้อมูลก็ต่อเมื่อกรอกข้อความสำคัญให้ครบเท่านั้น
อย่างนี้เป็นต้น ดังนั้น การตรวจสอบเงื่อนไขจึงเป็นพื้นฐานสำคัญอีกพื้นฐานนึง
...



ใน PHP มีรูปแบบและคำสั่งเหมือน ๆ กับภาษาทั่ว ๆ ไป เช่น if , elseif , select case ซึ่งท่านที่เคยเขียนโปรแกรมอื่น ๆ มาแล้ว ก็คงจะทำความเข้าใจได้ไม่ยาก ส่วนท่านที่ไม่เคยเขียนโปรแกรมแล้วมาจับ
PHP เป็นภาษาแรกก็ต้องทำความเข้าใจให้ดีซึ่งก็ไม่ยากเกินความสามารถของท่านหรอก
... มาเริ่มคำสั่งรูปแบบแรกเลยดีกว่า


การตรวจสอบเงื่อนไขด้วยคำสั่งif



เป็นรูปแบบคำสั่งประเภท Classic ซึ่งใช้อยู่ประจำ if อย่างเดียวก็ทำงานได้ทุก ๆ อย่างแล้ว ...



คำสั่ง if เปรียบเสมือนกับสิ่งที่เราคิดตั้งเงื่อนไขให้กับตัวเอง
เช่น ถ้าเราหิวข้าว เราจะไปกินข้าว ... แต่ถ้าไม่หิวเราจะเล่นเน็ตต่อ
หรือ ถ้าเราขับรถไปเจอไฟแดง เราจะหยุดรถ แต่ถ้า เราไปเจอไฟเขียว
เราจะเหยียบคันเร่งให้มิดเลย ... อะไรทำนองนี้



รูปแบบคำสั่ง if มีตามนี้



if
(เงื่อนไข)

{

   กิจกรรมหรือคำสั่ง เมื่อเงื่อนไขข้างต้นเป็นจริง

}




ซึ่งถ้าเราใช้ตัวอย่างในชีวิตประจำวันข้างต้นมาเขียนก็อาจจะเขียนได้ว่า



if
(หิวข้าว)

{

   ไปกินข้าวดีกว่า

}




ลองมาดูตัวอย่างที่เป็นเรื่องเป็นราวดีกว่า



$nacm
= 2;

if ( $nacm == 2 )

{

   echo "ตัวแปรชื่อ nacm มีค่าเท่ากับ 2";

}



อธิบายเป็นบรรทัด ๆ ไปได้ว่า

1. เราประกาศชื่อตัวแปร 1 ตัว ชื่อ nacm โดยให้เริ่มต้นเป็น 2

2. จากนั้นเราก็ตรวจสอบค่าของ nacm ว่าเท่ากับ 2 หรือไม่

3. ถ้า nacm เท่ากับ 2 ให้พิมพ์ออกมาว่า "ตัวแปรชื่อ nacm
มีค่าเท่ากับ 2"



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



if
( $nacm == 2 )

   echo "ตัวแปรชื่อ nacm มีค่าเท่ากับ
2";




แต่ถ้ามีหลายบรรทัด ก็ต้องใส่นะไม่งั้นเจ๊งแน่ ...




ลองนำ Code นี้ไป Run ดูนะ






จากนั้นลองเปลี่ยนค่าเริ่มต้นของ nacm ให้เป็นค่าอื่น ๆ ที่ไม่ใช่
2 แล้ว Run ดูใหม่



ผลที่ได้ก็คือ ไม่มีอะไรโผล่มาให้เห็นเลย ... เนื่องจากว่า เมื่อเปลี่ยนค่าของ
nacm แล้ว ทำให้เงื่อนไขของ if ไม่เป็นจริง PHP ก็จะไม่ทำคำสั่งใด
ๆ เลย



แต่ถ้าต้องการให้แสดงค่าใด ๆ เมื่อเงื่อนไขของ if เป็นเท็จ ก็ต้องเพิ่มคำสั่ง
else เข้าไป



คำสั่ง else เป็นลูกของคำสั่ง if อีกที มันจะต้องตามหลังคำสั่ง if
เท่านั้น อยู่ ๆ จะใส่มันขึ้นเฉย ๆ โดยไม่มี if ไม่ได้นะครับ จากตัวอย่างข้างต้น
เราจะเขียนลงไปได้ว่า



$nacm
= 10;

if ( $nacm == 2 )

   echo "ตัวแปรชื่อ nacm มีค่าเท่ากับ 2";

else

   echo "ตัวแปรชื่อ nacm มีค่าไม่เท่ากับ 2";



ลองดู แต่ก่อน Run ลองมาทายดูว่า PHP จะพิมพ์คำสั่งหลัง if
หรือหลัง else ... ถูกต้องนะเก่งจังเลย ... พิมพ์คำสั่งหลัง
else




แต่ในชีวิตจริงของเรามักจะมีทางเลือกมากกว่า 2 ทาง เช่น ไฟจราจร ก็มี 3 สี ดังนั้น การใช้ if และ elseif
ก็จะไม่พอ ไม่สามารถดักทางเลือกทั้ง 3 ได้ เช่น



if
(เจอไฟแดง)

  หยุดรถ

else

   ไม่ต้องหยุด



จากตัวอย่างจะเห็นว่า เราจะหยุดเราเมื่อเจอไฟแดงเท่านั้น
แต่ถ้าไม่ใช่ไฟแดงเราจะไม่หยุดรถ คือ ไฟเขียว และไฟเหลือง นี่ยังไม่นับไฟเขียวกระพริบนะ




ดังนั้นเราต้องทำการดักทางเลือกที่มากกว่า 2 ทางเลือกด้วยคำสั่ง
elseif ซึ่งแน่นอนว่าจะมีศักดิ์เป็นลูกของคำสั่ง if เหมือนกับ
else แต่ก็เหมือนเป็นเพราะต้องตามหลัง if และอยู่ก่อนหน้า
else ดังนี้



if
(เงื่อนไขที่ 1)

{

   กิจกรรมหรือคำสั่ง เมื่อเงื่อนไขที่ 1 เป็นจริง

}

elseif (เงื่อนไขที่ 2)


{

   กิจกรรมหรือคำสั่ง
เมื่อเงื่อนไขที่ 2 เป็นจริง

}

else

{

   กิจกรรมหรือคำสั่ง เมื่อเงื่อนไขทั้ง 2 ข้างบนไม่เป็นจริง



}



ตัวอย่างเช่น


$nacm
= "วัชรพงษ์";

if ( $nacm == "วัชรพงษ์" )

   echo "ชื่อจริง";

elseif ( $nacm == "ณ เชียงใหม่" )


   echo
"นามสกุล";

else

   echo "อะไรก็ไม่รู้";


เป็นต้น
...




ซึ่งถ้าเรามีทางเลือกมากกว่านี้ เราก็จะเอา elseif มาต่อกันไปเรื่อย



ส่วนเงื่อนไขนั้นเราสามารถใช้หลักของตัวดำเนินการด้านการเปรียบเทียบและตรรก
ซึ่งอยู่ในบทของ ตัวแปรและตัวดำเนินการ
(จำได้ไม๊ครับ ... บอกแล้วว่าอย่าเพิ่มข้ามขั้น ... ) เช่น >
, < , >= , <= , != , && , || เป็นต้น ซึ่งตัวอย่างแบบจะจะคงจะได้ดูเมื่อเราถึงตอนที่เราจะทำออกมาเป็น
Project





การตรวจสอบเงื่อนไขโดยใช้
switch



switch เป็นอีกคำสั่งที่ใช้สำหรับตรวจสอบเงื่อนไขเหมือนกับ if โดยมีรูปแบบดังนี้



swicth
( ค่าตัวแปรที่ใช้ตรวจสอบ )

{

   case (ค่าที่ 1 ):

      กิจกรรมหรือคำสั่งที่จะทำเมื่อเงื่อนไขตรงกับค่าที่
1

      break;

   case (ค่าที่ 2 ):

      กิจกรรมหรือคำสั่งที่จะทำเมื่อเงื่อนไขตรงกับค่าที่
1

      break;

   default:

      กิจกรรมหรือคำสั่งที่จะทำเมื่อเงื่อนไขไม่ตรงกับค่าใด
ๆ เลย

}



คล้าย ๆ กับ if ครับ แต่มีข้อสังเกตุนิดนึงตรงที่จะมีบรรทัดคำสั่ง
break เพื่อให้ PHP หยุดแล้วโดดข้าม case อื่น ๆ ไป เพราะถ้าไม่มี
break PHP จะทำทุก case หลังจากทำ case ที่ตรงกับเงื่อนไขแล้ว



ยกเว้น default ซึ่งเปรียบเสมือนกับ else ที่จะไม่มี break เพราะนี่คือ
case สุดท้ายแล้ว ไม่ต้องใส่ก็ได้




ตัวอย่างเช่น



$nacm
= "ณ เชียงใหม่";

swicth ( $nacm )

{

   case ( "วัชรพงษ์" ):

      echo "ชื่อ";

      break;

   case ( "ณ เชียงใหม่" ):

      echo "นามสกุล";

      break;

   default:

      echo "อะไรก็ไม่รู้";

}



โดยที่ค่าที่จะนำมาตรวจสอบสามารถเป็นได้ทั้งตัวอักษรและข้อความ
ถ้าเป็นตัวอักษรก็เอาเครื่องหมายคำพูดครอบซะ ...




เรื่องแบบนี้ ต้องลองครับ แค่อ่านไม่พอ แล้วต้องลองหลาย ๆ แบบ ...
สำหรับเรื่องการตรวจสอบเงื่อนไขคงมีเท่านี้ครับ ...



2. ให้ตรวจสอบหนังสือ PHP5 และสรุปมาว่า

2.1 เรื่องใด ที่ไม่ได้เกี่ยวกับ Database และอาจารย์พันธุดิศ ไม่ได้สอน
คำตอบ คือ -บทที่ 5ตรวจสอบความถูกต้องของข้อมูลด้วย Regular Expression
-บทที่ 7การจัดการไฟล์และไดเร็คทอรี

2.2 เหตุผลที่ว่า ทำไมเรื่องนั้น ถึงเป็นเรื่องจำเป็นที่อาจารย์ควรจะสอน
คำตอบ คือ -บทที่ 5ตรวจสอบความถูกต้องของข้อมูลด้วย Regular Expression จำเป็นที่จะต้องสอนเพราะ การตรวจสอบรูปแบบของข้อมูล
ที่ผู้ใช้ป้อนเข้ามาในโปรแกรม(เช่น อีเมล์แอดเดรส,URLของเว็บเพจ,หมายเลขโทรศัพท์)ว่าถูกต้องหรือไม่นั้น เป็นเรื่องที่ยุ่งยากสำหรับผู้เขียน โปรแกรมซึ่งแม้ว่าจะสามารถแก้ปัญหานี้ได้โยฟังก์ชั่นสตริงต่างๆเข้ามาตรวจสอบ แต่ก็เต็มไปด้วยความยุ่งยากใช้เวลามาก และมีโอกาสผผิดพลาดได้
ง่ายทางออกที่ดีกว่าคือการใช้ regular expression ซึ่งสามารถตรวจสอบรูปแบบของข้อมูลได้ด้วยโค้ดเพียงบรรทัดเดียว แต่เนื่อง
จากregular expression มักจะถูกมองว่าเป็นเรื่องที่ซับซ้อนและเข้าใจยาก จึงมักไม่ถูกนำมาใช้ประโยชน์อย่างเต็มที่

-บทที่ 7การจัดการไฟล์และไดเร็คทอรี จำเป็นที่จะต้องสอนเพราะ การจัดการระบบไฟล์ด้วย PHP นับได้ว่ามีความยืดหยุ่นสูง มีฟังก์ชั่นจำนวน
มากให้ใช้ทำงานเกี่ยวกับไฟล์สามารถที่จะสร้าง เขียน อ่าน ทำสำเนา ลบไฟล์และไดเร็คทอรีได้ ซึ่งในงานเล็กๆที่ไม่ต้องการใช้ระบบฐานข้อมูลใน การจัดเก็บ ก็สามารถใช้วิธีบันทึกข้อมูลลงไฟล์ได้ โดยในบทนี้มีฟังก์ชั่นเกี่ยวกับระบบไฟล์มากมายให้เรียนรู้ ซึ่งฟังก์ชั่นการจัดระบบไฟล์เหล่านี้ไม่ เพียงแต่ใช้ดำเนินการกับไฟล์เท่านั้นบางฟังก์ชั่นก็ยังสามารถดำเนินการกับไดเร็คทอรีด้วย เช่น ฟังก์ชั่น rename()ใช้สำหรับเปลี่ยนชื่อไฟล์ หรือไดเร็คทอรี,ฟังก์ชั่นmkdir()ใช้สำหรับสร้างไดเร็คทอรีใหม่,ฟังก์ชั่น rmdir()ใช้สำหรับลบไดเร็คทอรี เป็นต้น นอกจากกลุ่ม
ฟังก์ชั่นที่ใช้ดำเนินการกับไฟล์แล้ว PHP ยังมีกลุ่มฟังก์ชั่นสำหรับดำเนินการกับไดเร็คทอรีโดยเฉพาะด้วย เพื่อใช้ดำเนินการ เช่น เปิด-ปิด
ไดเร็คทอรี,อ่านรายการไฟล์ที่อยู่ในได้เร็คทอรี,เปลี่ยนไดเร็คทอรีปัจจุบัน เป็นต้น

2.3 เหตุผลที่ว่า ทำไมเรื่องนั้น ถึงเป็นเรื่องไม่จำเป็น อาจารย์เลยไม่ได้สอน
คำตอ คือ -บทที่ 5ตรวจสอบความถูกต้องของข้อมูลด้วย Regular Expression ไม่จำเป็นที่จะต้องสอนเพราะ การตรวจสอบรูปแบบของ ข้อมูลที่ผู้ใช้ป้อนเข้ามาในโปรแกรม(เช่น อีเมล์แอดเดรส,URLของเว็บเพจ,หมายเลขโทรศัพท์)ว่าถูกต้องหรือไม่นั้น เป็นเรื่องที่ยุ่งยากสำหรับผู้ เขียนโปรแกรมซึ่งแก้ไขโดยใช้ Regular Expression แต่ก็มีข้อเสียคือ"เป็นเรื่องที่ซับซ้อนและเข้าใจยาก จึงมักไม่ถูกนำมาใช้ ประโยชน์อย่างเต็มที่" อาจารย์จึงไม่นำมาสอน

-บทที่ 7การจัดการไฟล์และไดเร็คทอรี ไม่จำเป็นที่จะต้องสอนเพราะ เป็นเรื่องที่ต้องใช้ความจำในการจดจำฟังก์ชั่นต่างๆจำนวนมาก ซึ่งเราไม่จำ เป็นที่จะต้องจำทั้งหมดแต่ต้องอาศัยความคุ้นเคยโดยการใช้งานฟังก์ชั่นต่างๆบ่อยๆก็จะทำให้คุ้นเคยไปเอง...และจดจำได้ในที่สุด




 

Create Date : 22 ตุลาคม 2548
0 comments
Last Update : 23 ตุลาคม 2548 22:32:17 น.
Counter : 348 Pageviews.

ชื่อ :
Comment :
  *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 
รหัสส่งข้อความ
กรุณายืนยันรหัสส่งข้อความ


araya020323
Location :
กรุงเทพ Thailand

[ดู Profile ทั้งหมด]

ให้ทิปเจ้าของ Blog [?]
ฝากข้อความหลังไมค์
Rss Feed

ผู้ติดตามบล็อก : 1 คน [?]




Friends' blogs
[Add araya020323's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.