Upload
duongthu
View
235
Download
0
Embed Size (px)
Citation preview
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 1
Chapter 1
แนะน าการสรางเวบไซต
กอนทเราจะสรางเวบไซตไดนน ควรท าความรจกค าวา ‚เวบไซต‛ ใหพอเขาใจถงลกษณะการท างาน
กนกอน เวบไซต (Web Site) แปลตามค ากคอ Web แปลวา เครอขายใยแมงมม และ Site แปลวา ทต ง,หรอทอย
อธบายให เขาใจไดงาย เวบไซตกคอ เวบเพจหลายๆหนา ซงเ ชอมโยงกน และจดเกบในรปแบบของ
เวลดไวดเวบ (World Wide Web) เชอมโยงกนทวโลก
ภาพจาก: http://school.obec.go.th/borkruwitt/inter/internet01.gif
โดยทวไปการสรางเวบไซตน น จะเขยนดวยภาษา HTML เปนหลก แตอาจจะแทรกดวย ภาษา
PHP,JavaScript,ASP เพอใชในการค านวณ ประมวณผล หรอรนโปรแกรมตางๆ ในทนจะใช PHP ในการ
ประมวณผลและตดตอกบโปรแกรม SCILAB ซงจะตองมการตดตงโปรแกรมตางๆเพอเตรยมพรอมกอนการใช
งานเราจะใชโปรแกรม AppServ ซงเปนชดตดต งทรวมโปรแกรมตางๆทเก ยวของกบการใชงาน PHP มาใช
สามารถดาวนโหลดไดท http://www.appservnetwork.com ขนตอนตดตงมแนวทางดงน
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 2
1. หลงจากดาวนโหลดโปรแกรมมาแลวใหดลเบลคลกไฟลทดาวนโหลดมา จะเขาสหนาจอ
การตดตงเหมอนกบโปรแกรมทวไป
2. จะปรากฏหนาจอตวชวยการตดตง คลก Next
3. หนาจอเงอนไขการใชงาน ใหคลก I Agree
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 3
4. ก าหนดต าแหนงการตดตง ใหใชคาดฟอลตคอ C:\AppServ
5. เลอกโปรแกรมทจะตดตง ใหเลอกทงหมด
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 4
6. ก าหนดชอเซรฟเวอร ใหก าหนดเปน localhost และ อเมล ใหใสเมลอะไรกได ในตวอยางจะใช
[email protected] จากนน คลก Next
7. ก าหนดพาสเวรดของ MySQL คานส าคญมากเราตองจ าใหได มฉะนนจะไมสามารถใชงานฐานขอมล
ได ชอง Character Sets And Collations ใหก าหนดเปน UTF-8 Unicode
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 5
8. จากนนจะเขาสหนาจอการตดตง ใหรอจนกวาจะตดตงเสรจ
หลงจากตดตงโปรแกรม AppServ เสรจเรยบรอยแลวใหทดสอบการตดตงวาโปรแกรมทเราตดตงไปนนใช
งานไดหรอไม ใหเปดโปรแกรม Browser ชนมา พมพ http://localhost จะปรกกฎหนาจอดงรป แสดงวาการ
ตดตงโปรแกรมนนสมบรณพรอมใชงาน
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 6
Chapter 2
ภาษาทใชในการตดตอกบ SCILAB
ภาษาทใชในเขยนเวบไซตเพอตดตอกบ SCILAB มดงน
HTML (Hypertext Markup Language)
ใชในการก าหนดรปแบบของเอกสารเวบเพจ ลกษณะของค าสงจะเรยกวา แทก (Tag) ใชในการระบ
จดเรมตนและจดสนสดของค าสงทตองการจดรปแบบเอกสาร ซงแทกใน HTML มอยมากมายเชน การก าหนด
ตวอกษร ตาราง พนหลง ฯลฯ
โครงสรางของ HTML
จะประกอบไปดวยแทกหลกๆดงน
จากโคดน <html>…..</html>คอ เอกสาร HTML ทงหมด ซงภายในกจะมองคประกอบทส าคญๆอย 2
สวนคอ
<html>
<head>
<title>…</title>
</head>
<body>
………………………
………………………
</body>
</html>
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 7
1. สวนของ Header
จะอยระหวาง <head>…..</head>ในสวนนเราจะเขยนแทกทใชเปนขอก าหนดดงตาราง
<head>…..</head> ใชก าหนดจดเรมตนและจดสนสดของสวนหวเอกสาร
<title>…..</title> ก าหนดชอของเอกสาร ซงจะปรากฏท Title Bar
<mata> ใชในการก าหนดขอมลพเศษบางอยาง เชน คยเวรด (keyword) และ
ค าอธบายส าหรบเสรชเอนจน (Search Engine) หรอการรเฟรชเพจ (Refresh
Page) เปนตน
<style>…</style> ใชในการก าหนดรปแบบ CSS
<link> ใชส าหรบการเชอมโยงรปแบบของ CSS จากไฟลภายนอก
<script>…</script> ใชในการเรยกใชงาน JavaScript
2. สวนของ Body อยระหวาง <body>….</body>
ในแตละแทก จะมขอก าหนดยอยๆ ทเรยกวา แอตทรบวต เชน แทกเก ยวกบตวอกษร จะมการก าหนดชนด ,
ขนาด, สตวอกษร เปนตน โดยทแตละแทกกจะมแอตทรบวตทแตกตางกนไป และเราจะเรยกทกๆอยางทอย
ระหวางแทกเปดไปจะถงแทกปดวา อลเมนต (Element) รปแบบการก าหนดแอตทรบวตคอ
ตวอยาง
<ชอแทก แอตทรบวตท1=‚คาทก าหนด‛แอตทรบวตท2=‚คาทก าหนด‛แอตทรบวตท3=‚คาทก าหนด‛…>ขอความ</ชอแทก>
<font face=‛Tahoma‛ size=‛14‛ color=‛red‛>ทดสอบ</font>
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 8
เรมตนกบ PHP
PHP แตเดมยอมาจาก Personal Home Page แต ตอมากเปลยนเปนยอมาจาก PHP Hypertex t
Preprocessor เปนภาษาสครปตแบบเซรฟเวอรไซด (server-side scripting language) หมายถงการประมวลผลจะ
เกดขนบนเครองแมขาย (Server) แลวสงผลลพธกลบมายงเครองลกขาย (Client) การเขยน PHP จะแทรกลงบน
เอกสาร HTML ดวยการเปดแทก <?php และปดดวยแทก ?>หรอ แทก <?...?> กไดเชนกน PHP เปนโอเพน
ซอ ร ส (Open Source) สา ม า ร ถด า ว น โห ลด PHP ม า ใช ง า น ไดฟ ร จ า ก เ วบ ไซต ข อ ง PHP
(www.php.net/downloads.php)
การจดเกบและการทดสอบการท างาน
การจดเกบไฟล PHP นนตองจดเกบไวใน Document Root ทเราก าหนด ส าหรบคาดฟอลตของ AppServ คอ
C:\AppServ\www\ และสรางโฟลเดอรใหมส าหรบเกบไฟลชอ scilab_php
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 9
ทดสอบการท างานดวยค าสงงายๆโดยการเปดโปรแกรม Notepad แลวพมพค าสง ดงน
ผลการรนโปรแกรม
การแสดงผล
การแสดงผลของ PHP มอยหลายรปแบบค าสง แตในทนจะใช 2 ค าสงหลกๆ คอ print และ echo
ฟงกชน print()
รปแบบค าสง
Print (ผลลพธ); หรอ print ผลลพธ;
ธ
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 10
ตวอยาง
ฟงกชน echo()
เปนค าสงทนยมใชกนมากทสด เพราะท างานไดรวดเรวกวาค าสง print เนองจากค าสงนไมมการตรวจสอบ
ขอผดพลาด
รปแบบค าสง
ตวอยาง
ค าอธบาย (Comment)
การเขยนค าอธบายคอการแทรกขอความเขาไปในโคดโปรแกรมแตจะไมน าไปประมวลผล ในภาษา PHP นน
จะใชรปแบบเดยวกนกบ JavaScript คอ
Single-line comment จะใช Comment ทละบรรทด เชน //Comment PHP
Multiple-line comment จะใช Comment ครงละหลายๆบรรทดตดตอกน เชน
echo (ผลลพธ); หรอ echo ผลลพธ;
ธ
print("PHP &Scilab");
print "PHP world";
echo("PHP & Scilab");
echo "PHP world";
/* This is the comment PHP
This is Multiple-line Comment
*/
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 11
ตวแปร (Variable)
การเขยนโปรแกรม PHP นนกเหมอนกบการเขยนโปรแกรมดวยภาษาอนๆ ซงจะก าหนดตวแปรเพอจอง
พนทในหนวยความจ าส าหรบเกบพกขอมล ซงมวธการก าหนดตวแปรดงน
ตวแปรใน PHP จะตองขนตนดวยเครองหมาย ‚$‛ เชน $name, $data, $_file เปนตน
ตองขนตนดวยตวอกษร a-z หรอ A-Z หรอเครองหมาย ‚-‚ เทานน หามขนตนดวยตวเลขหรออกขระ
อนๆ
ตวแปรใน PHP ไมจ าเปนตองระบชนดขอมล เนองจากตวแปรแตละตวสามารถเกบขอมลชนดใดกได
การเขยนตวแปรดวยลกษณะตวพมพทแตกตางกน ถอวาเปนตวแปรคนละตวไมใชตวเดยวกน เชน
$abc ,$ABC $aBC ถอเปนคนละตวกน
การก าหนดคาใหกบตวแปรชนดสตรง(ตวอกษร) จะตองก าหนดใหอยภายในเครองหมาย Single Quote
(‘-’) หรอ Double Quote (‚-‛) เชน $name = ‚วโรจน‛
การก าหนดคาใหกบตวแปรชนดตวเลข สามารถระบคาเขาไปไดโดยไมตองมเครองหมาย Single Quote
(‘-’) หรอ Double Quote (‚-‛) ถาใสเครองหมายทงสองน โปรแกรมจะถอวาเปนขอมลชนดสตรงทนท
เชน $number = 12
เครองหมาย Single Quote และ Double Quote
ถาเราตองการก าหนดคาใหกบตวแปรชนดสตรงใน PHP สามารถใชไดทง Single Quote และ Double
Quote แตทง Single Quote และ Double Quote กมขอแตกตางกนอยบางในเรองของการแสดงผลเมอเราตองการ
ก าหนดคาใหก าตวแปรเพอจะน าผลลพธไปแสดง ถาตวแปรนนอยภายใตเครองหมาย Single Quote จะไม
สามารถแสดงคาของตวแปรไดเพราะสงทเราเขยนไปจะแสดงผลออกมาเชนนนเปรยบเทยบจากตวอยางตอไปน
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 12
ผลลพธ
จากผลลพธแสดงวาเราไมสามารถทจะก าหนดคาเพอแสดงภายใตเครองหมาย Single Quoteได
Predefined Variables
Predefined Variables คอตวแปรท PHP สรางไวลวงหนาแลวเพอความสะดวกในการน าไปใชและให
เปนคาพนฐานในการใชงาน สวนใหญตวแปรเหลานมกจะเกบขอมลส าคญบางอยางเอาไว ตวแปรชนดนจะม
ลกษณะเปนอารเรยมากกวาแบบธรรมดา ซงมอยหลายตวแตในทนจะกลาวถงเฉพาะบางตวทส าคญและจ าเปน
ตอการใชงาน เพอตดตอกบ SCILAB เทานน รายละเอยดเพมเตมสามารถเรยกดไดทไฟล phpinfo.phpไปท
หวขอ PHP Variables
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 13
$_SERVER
ตวแปร $_SERVER เปนตวแปรทใชเกบขอมลทเก ยวของกบการเชอมตอระหวางไคลเอนตกบ
เซรฟเวอร เชน ชอโฮสต พาธในการเกบขอมล เมธอดในการสงขอมล เปนตน ตวแปร $_SERVER นเรมใช
ตงแต PHP 4.1.0 เปนตนมา โดยในเวอรชนกอนหนานจะใชชอตวแปรนวา $HTTP_SERVER_VARS การอาง
ถงขอมลในตวแปร $_SERVER จะใชรปแบบคอ
เมอ variable_name คอขอมลทเราตองการทราบ ซงในการใชงาน PHP เพอตดตอกบ SCILAB นนมการใชงาน
ดงน
$_SERVER[‘SystemRoot’]
จะเกบไดเรกเทอรทเกบไฟลระบบปฏบตการ(System) เอาไว
$_SERVER[‘DOCUMENT_ROOT’]
ตวแปรนจะเกบ โฮมไดเรกเทอร (Home Directory) คอไดเรกเทอรทเกบไฟลเวบไซตทเราสรางขนทงหมด
ชนดขอมล (Data Type)
ชนดขอมลพนฐานใน PHPมดงน
ชนดขอมล ค าอธบาย
ตรรกศาสตร คาความจรงหรอทเรยกวาตรรกะ จะมคาเปนจรง (True) หรอ เทจ (False)
เลขจ านวนเตม เปนเลขจ านวนเตมบวก จ านวนเตมลบ หรอศนย
จ านวนทศนยม(Float หรอ Double) เปนเลขทศนยม
สตรง(String) คาทเปนตวอกษรทงหมด
$_SERVER[‘variable_name’];
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 14
การตรวจสอบชนดขอมล
ในจะใชฟงกชน gettype() ดงตวอยาง
โคดโปรแกรม ผลลพธ
ตวด าเนนการทางคณตศาสตร (Arithmetic Operator)
ตวด าเนนการ ชอ ตวอยาง (ให $a=20, $b=3)
+ บวก(Addition) $a + $b = 23
- ลบ(Subtraction) $a - $b = 17
* คณ (Multiplication) $a * $b = 60
/ หาร (Division) $a / $b = 6.66
% โมดลส (Modulus)การหาเศษจากการหาร
$a % $b = 2
ตวด าเนนการเพม/ลดคา (Incrementing/Decrementing Operator)
ไดแกตวด าเนนการ ++ และ -- ซงตองการตวถกด าเนนการตวเดยว (Unary Operator) และตองเปนตว
แปรเทานน โดยจะเพมคาของตวแปรขน 1 และลดคาของตวแปรลง 1 ตามล าดบ
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 15
การใชงานมทงระบไวหนาตวแปรและหลงตวแปร ซงมความหมายแตกตางกน ดงรายละเอยดในตาราง
ตวอยางการใชงาน ผลลพธ
++$a เพมคาของ $a ขน 1 กอน แลวจงก าหนดคาใหกบ $a (++$a จะมคาเทากบ $a ทเพมคาแลว)เชน ก าหนด $a = 200 ++$a จะมคาเทากบ 201
$a++ ใหคาของ $a กอน แลวจงใหคาของ $a ($a++จะมคาเทากบ $a กอนเพมคา)เชน ก าหนด $a = 200 $a++ จะมคาเทากบ 200
--$a ลดคาของ $a ลง 1 กอน แลวจงก าหนดคาใหกบ $a (--$a จะมคาเทากบ $a ทลดคาแลว)เชน ก าหนด $a = 200 --$a จะมคาเทากบ 199
$a-- ใหคาของ $a กอน แลวจงลดคาใหกบ $a ($a--จะมคาเทากบ $a กอนการลดคา)เชน ก าหนด $a = 200 $a--จะมคาเทากบ 200
ตวด าเนนการเปรยบเทยบ (Comparison Operator)
ใชเปรยบเทยบคา 2 คาวาเทากน มากกวา หรอ นอยกวา โดยผลลพธทไดจะเปนคาตรรกะ คอ จรง (True) และ
เทจ (False) อยางใดอยางหนงเสมอ
ตวด าเนนการ ชอ ตวอยาง ค าอธบาย
== เทากบ (Equal) $a == $b ใหคา TRUE เมอ $a มคาเทากบ $b
=== เหมอนกบ (Identical) $a === $b ใหคา TRUE เมอ $a มคาเทากบ $b และขอมลตองเปนชนดเดยวกน
!= หรอ <> ไมเทากบ (Not equal) $a != $b ใหคา TRUE เมอ $a มคาไมเทากบ $b
!== ไมเหมอนกบ (Not identical)
$a !=== $b ใหคา TRUE เมอ $a มคาไมเทากบ $b หรอเมอเปนขอมลคนละชนดกน
< นอยกวา (Less than) $a < $b ใหคา TRUE เมอ $a มคานอยกวา $b
> มากกวา (Greater than) $a > $b ใหคา TRUE เมอ $a มคามากกวา $b
<= นอยกวาหรอเทากบ (Less than or equal to)
$a <= $b ใหคา TRUE เมอ $a มคามากกวาหรอเทากบ $b
>= มากกวาหรอเทากบ (Greater than or equal to)
$a >= $b ใหคา TRUE เมอ $a มคานอยกวาหรอเทากบ $b
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 16
ตวด าเนนการทางตรรกศาสตร
ตวด าเนนการ ชอ ตวอยาง ค าอธบาย
&&หรอ and และ $a&& $b ใหคา TRUE กตอเมอ $a และ$bเปนจรงทงค
|| หรอ or หรอ $a || $b ใหคา TRUE เมอ $a หรอ$bตวใดตวหนงเปนจรงถาตวใดตวหนงเปนเทจ จะใหคา FALSE
xor Exclusive or $a xor $b ใหคา TRUE เมอ $a หรอ$bตวใดตวหนงเทานนเปน TRUE แตถาเปน TRUE ทงค หรอ เปน FALSE ทงค จะใหคาเปน FALSE
! นเสธ !$a ใหคาตรงกนขามกบ $a ถา $a เปน TRUE จะได FALSE แตถา $a เปน FALSE จะไดคาเปน TRUE
เงอนไขและการตดสนใจ
เงอนไขและการตดสนใจใน PHP ถอวาส าคญและจะใชบอยมากในการเขยนโปรแกรม เพราะในการใช
งานจรงนนจะตองมการตรวจสอบเงอนไข เพอใหโปรแกรมทเราเขยนขนมานนท างานไดถกตองตามการ
ออกแบบและความตองการ ในทนนนจะใชหลกๆอยดงน
ค าสง if, else และ else if
ค าสง switch
ค าสง if
ค าสง if จะตรวจสอบเงอนไขถาเงอนไขเปนจรงกจะท างานในบรรทดตอไป ถาเปนเทจกจะขามไปท า
บรรทดอน ค าสง if จะมเครองหมายปกา ( { }) หรอไมมกได
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 17
รปแบบของค าสงคอ
ตวอยาง
ผลลพธ
ค าสง if…else
ค าสง if…else นนม 2 ทางเลอก จะท าการตรวจสอบเงอนไข ถาเงอนไขเปนจรงกจะท าในค าสงเมอ
เงอนไขเปนจรง ถาเงอนไขเปนเทจ กจะท าในงานในเงอนไขทเปนเทจ
รปแบบของค าสงคอ
if ( เงอนไข){
--- ค าสงตางๆเมอเงอนไขเปนจรง;
}
if ( เงอนไข){
--- ค าสงตางๆเมอเงอนไขเปนจรง;
}else{
--- ค าสงตางๆเมอเงอนไขเปนเทจ;
}
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 18
ค าสง if...elseif
ค าสง if…elseif นน มมากวา 2 ทางเลอก โดยจะท าการตรวจสอบเงอนไขไปเรอยๆ จนกวาจะสนสด
เงอนไขทเราก าหนด
รปแบบของค าสงคอ
ค าสง switch()
ค าสง switch() นนกเปนการตดสนใจแบบหลายทางเลอกโดยการตรวจสอบเงอนไขแลวขามไปท าใน
ค าสงทเงอนไขเปนจรง จากนนจะออกจาก ค าสง switch ไป
รปแบบของค าสงคอ
If( เงอนไขท 1){
--- ค าสงตางๆเมอเงอนไขเปนจรง;
}elseif(เงอนไขท 2){
--- ค าสงตางๆเมอเงอนไขเปนจรง;
}elseif(เงอนไขท 3){
--- ค าสงตางๆเมอเงอนไขเปนจรง;
}else{
--- ค าสงตางๆเมอเงอนไขเปนเทจ;
}
switch(คาทรบมา){
case เงอนไขท 1:
--- ค าสงตางๆเมอเงอนไขเปนจรง;
break;
case เงอนไขท 2:
--- ค าสงตางๆเมอเงอนไขเปนจรง;
break;
case เงอนไขท 3:
--- ค าสงตางๆเมอเงอนไขเปนจรง;
break;
}
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 19
การท าซ า (Repetition)
คอการประมวลผลค าสงทซ าๆกน ตามเงอนไขทเราก าหนด หรอเรยกกนวาการวนลป (Looping) การ
ท าซ าหรอการวนลปนมประโยชนมากในการเขยนโปรแกรม เพราะจะชวยลดการเขยนโปรแกรมทซ าๆหลาย
บรรทดรวมไวในลป ท าใหการท างานของโปรแกรมกระชบขนการตรวจสอบหาขอผดพลาดในโคดของ
โปรแกรมกกระท าไดสะดวกขน
ค าสง while
ค าสง while จะท าการประมวลผลค าสงตางๆไปเรอยๆจนกวาเงอนไขจะเปนเทจ
รปแบบของค าสงคอ
ตวอยาง
ค าสง do…while
ค าสง do…while จะท าค าสงทก าหนดกอน แลวท าการตรวจสอบเงอนไขทหลง ถาเงอนไขเปนจรงจะ
กลบมาท างานในค าสงอกครง ท าแบบนไปเรอยๆจนกวาจะเงอนไขจะเปนเทจ
while ( เงอนไข){
--- ค าสงตางๆ;
}
<?
$i=1;
while($i <= 10){
echo "Hello! ".$i ."<br>";
$i++;
}
?>
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 20
รปแบบ
ตวอยาง
ฟงกชนเกยวกบสตรง
ฟงกชนทเก ยวของกบการจดการสตรงใน PHP นนมฟงกชนใหใชมากมาย ซงในทนนนเราจะน ามา
แสดงเฉพาะทนาสนใจและเก ยวของกบการใชงานรวมกบ SCILAB เทานน ซงในการสรางเวบไซตเพอตดตอ
กบ SCILAB นน ฟงกชนทเก ยวกบการจดการสตรงนนจะมการใชงานบอยมาก เพราะ การแสดงผลลพธทสงมา
จากโปรแกรม SCILAB นน รปแบบจะไมคงทและไมสามารถน ามาแสดงผลบนเวบเพจไดทนท ตองใชฟงกชน
เหลานในการจดการรปแบบของผลลพธเสยกอน
ฟงกชน strlen()
เปนฟงกชนทใชในการหาความยาวของสตง หรอนบจ านวนสตง ซงจะนบรวมชองวางเปน 1 ตวอกษร
ดวย
รปแบบ
do{
--- ค าสงตางๆ;
}while ( เงอนไข );
<?
$i=1;
do{
echo "Hello! ".$i ."<br>";
$i++;
}while($i <= 10)
?>
strlen (สตง)
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 21
ตวอยาง
ผลลพธ
ฟงกชน explode()
เปนฟงกชนในการแยกสตรงออกเปนสตรงยอยๆ ดวยการก าหนดสตรงหรอสญลกษณทจะใชแยก
ผลลพธทไดจะถกเกบอยในรปแบบของ Array
รปแบบคอ
ตวอยาง
ผลลพธ
<?
echostrlen("Hello world!");
?>
Hello world!
$result = explode (สญลกษณทใชแยก, สตรง)
<?
$str = "Hello world.";
print (explode(" ",$str));
?>
Array ( [0] => Hello [1] => world. )
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 22
ฟงกชน implode() หรอ join()
ฟงกชนนจะท างานตรงกนขามกบ explode() คอเปนการน าสตรงยอยๆมารวมกน ตามสญลกษณทเรา
ระบ
รปแบบคอ
ตวอยาง
ผลลพธ
ฟงกชน strstr()
ฟงกชนนเปนการตดเอาเฉพาะสตรงทเรมตงแตสตรงยอยทเราก าหนดไปจนถงจดสนสดของสตรงนนๆ
รปแบบคอ
ตวอยาง
ผลลพธ
$result = implode (สญลกษณทใชรวม, อารเรยของสตรง)
<?
$arr = array('Hello','World!','Scilab','&','PHP!');
echo implode(" ",$arr);
?>
Hello World! Scilab& PHP!
strstr (สตรงยอย,สตรงหลก)
<?
echostrstr("Hello world!","w");
?>
world!
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 23
ฟงกชน substr()
เปนฟงกชนทใชตดสตรงคลายๆกบ strstr() แตสามารถก าหนดความยาวของสตรงทตองการได
รปแบบคอ
ตวอยาง
ผลลพธ
ฟงกชน ltrim(), rtrim() และ trim()
ฟงกชนนใชส าหรบการตดชองวางทอยดานซาย,ดวนขวา, และทงสองขางของสตรงออกทงหมด
รปแบบคอ
ตวอยาง
substr (สตรงหลก, ต าแหนงเรมตน, ความยาว)
<?
echosubstr("Hello world!",6,5);
?>
world
ltrim(สตรง)
rtrim(สตรง)
trim(สตรง)
<?
$str = " Hello ";
echo ltrim($str)."<br>";
echo rtrim($str)."<br>";
echo trim($str)."<br>";
?>
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 24
ผลลพธ
‚Hello ‚
‚ Hello‚
‚ Hello ‚
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 25
การจดการไฟลและไดเรกเทอร
การเปดไฟล, สรางไฟล
ในการอานขอมลจากไฟลหรอบนทกขอมลลงไฟล จะตองเรมดวยการเปดไฟลขนมากอนโดยใชฟงกชน
fopen() ซงมรปแบบการใชงานดงน
filename ชอไฟลทตองการเปดหรอสรางขนใหม
mode วธการเปดไฟล ซงมหลายกรณ ดงตาราง
‘r’ อานอยางเดยว ตวชจะเรมทต าแหนงเรมตนของไฟล
‘r+’ อานและเขยนไฟล ตวชจะเรมทต าแหนงเรมตนของไฟล ‘w’ เขยนไดอยางเดยว ตวชจะเรมทต าแหนงเรมตนของไฟล และถาเปนไฟลทมอยแลวจะตดขอมล
เดมทงทงหมด แตถาไมมไฟลนอยจะสรางไฟลขนมาใหม ‘w+’ อานและเขยนไฟล ตวชจะเรมทต าแหนงเรมตนของไฟล และถาเปนไฟลทมอยแลวจะตดขอมล
เดมทงทงหมด แตถาไมมไฟลนอยจะสรางไฟลขนมาใหม ‘a’ เขยนไดอยางเดยว ตวชจะเรมทต าแหนงสนสดไฟล และถาไมมไฟลนอยจะสรางไฟลขนมาใหม ‘a+’ อานและเขยนไฟล ตวชจะเรมทต าแหนงสนสดไฟล และถาไมมไฟลนอยจะสรางไฟลขนมาใหม ‘x’ เขยนไดอยางเดยว ตวชจะเรมทต าแหนงเรมตนของไฟล และถาไมมไฟลนอยจะสรางไฟลขนมา
ใหใหม แตถามไฟลอยแลวจะคนคา false และจะแจงขอผดพลาด ‘x+’ อานและเขยนไฟล ตวชจะเรมทต าแหนงเรมตนของไฟล และถาไมมไฟลนอยจะสรางไฟลขนมา
ใหใหม แตถามไฟลอยแลวจะคนคา false และจะแจงขอผดพลาด use_include_path ระบคาเปน 1 เมอตองการใหคนหาไฟลจากทระบไวใน include_pathในไฟลคอนฟกกเรชน
(configuration file)
int fopen (string filename, string mode [,int use_include_path])
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 26
ตวอยางการใชงานเชน
การอานไฟล
การอานไฟลสามารถท าไดหลายวธ ไดแกการอานไฟลดวยฟงกชน fgets(), fgetc(), fgetss(), fgetcsv()
เพออานขอมลมาเกบไวในตวแปร และเมอเลกใชไฟลแลวควรปดไฟลดวยฟงกชน fclose ซงจะใหคาเปน true
การปดไฟลส าเรจ และใหคาเปน false หารการปดไฟลลมเหลว
ฟงกชนทใชในการอานไฟลทงส มหนาทและวธการใชดงน
ฟงกชน fgets ()
รปแบบ
fp ไฟลพอยเตอร
length ความยาวของขอความ (ในหนวยไบต) ทใหอาน โดยเรมจากต าแหนงของตวชเปน
จ านวนเทากบ length – 1 ไบต แตหากไมระบ คาโดยปรยายของพารามเตอร length น
คอ 1024
ฟงกชน fgets จะอานขอความทละ 1 บรรทด นบจากตวชปจจบนและไมเกนจ านวน length-1 ไบต
$file = @fopen("test.txt", "r");
string fgets (int fp [, int length ])
สญลกษณ @ เมอน ามาใชเปน prefix ของ expressions จะท าหนาทเปน Error Control Operator เพอไมใหมการรายงานขอผดพลาดในกรณทการท างาน
ลมเหลว
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 27
ตวอยาง การอานขอความในไฟล fgets.txt ครงละไมเกน 1024 ไบต
ฟงกชน fgets() จะอานขอความจากไฟลเขามาทละบรรทด (แตบรรทดละไมเกน 1023 ไบต) แลวสงคน
ขอความนนกลบออกไปจากฟงกชน ขอความจะถกน าไปก าหนดใหกบตวแปร $data ซงส าหรบขอความใด ๆ ท
ไมใชสตรงวาง (‚‛) จะถกประเมนคาเปน true เสมอ จงเกดการวนลปตอไปเรอย ๆ แตเมอฟงกชน fgets() อาน
ไปจนกระทงพลจสนสดของไฟล (End Of File – EOF) จะสงคนคาสตรงวางออกไป ซงจะถกประเมนเปนคา
false และท าใหลปจบการท างาน
ฟงกชน fgetc()
ฟงกชน fgetc() จะอานขอความทละตวอกษร มรปแบบการใชดงน
รปแบบ
fp ไฟลพอยเตอร
หากพบจดสนสด(End Of File – EOF) จะคนคาเปน false
ฟงกชน fgetss()
รปแบบการใชฟงกชน fgetss() PHP 4
รปแบบ
string fgetc (int fp)
stringfgetss (int fp, int length [, string allowable_tags])
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 28
รปแบบการใชฟงกชน fgetss() PHP 5
fp ไฟลพอยเตอร
length ความยาวของขอความ (ในหนวยไบต) ทใหอาน โดยเรมจากต าแหนงของตวชเปน
จ านวนเทากบ length – 1 ไบต (ใน PHP5 พารามเตอร length จ าเปน optional
parameter คอจะใสหรอไมกได)
allowable_tags ขอความระบแทกในภาษา HTML ทตองการใหแสดง
ฟงกชน fgetcsv()
รปแบบการใชฟงกชน fgetcsv() PHP4
รปแบบ
รปแบบการใชฟงกชน fgetcsv() PHP5
รปแบบ
fd ไฟลพอยเตอร
length ความยาวของขอความ (ในหนวยไบต) ทใหอาน โดยเรมจากต าแหนงของตวชเปน
จ านวนเทากบ length – 1 ไบต คาของพารามเตอร length นจะตองมากกวาความยาว
ของบรรทดทยาวทสดในไฟล ส าหรบ PHP5 นนพารามเตอร length จ าเปน optional
parameter คอจะระบหรอไมกได
string fgetss (int fp[, int length [, string allowable_tags]])
srrayfgetcsv (resource handle, intlength [, string delimiter[, string enclosure]]])
srrayfgetcsv (resource handle [, intlength[, string delimiter [, string enclosure]]])
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 29
delimiter ตวแบงขอความ (ขนาด 1 ตวอกษร) หากไมระบไว คาโดยปรยายคอ เครองหมาย
comma ( , )
enclosure เครองหมายส าหรบใชแบงขอความ หากไมระบ คาโดยปรยายคอเครองหมาย double
quote (‚) (พารามเตอร enclosure นเรมมใชใน PHP4.3.0)
ฟงกชน fgetcsv() จะอานขอความทละบรรทดและไมเกน length – 1 ไบต เชนเดยวกบฟงกชน
fgets() แตฟงกชน fgetcsv() จะสามารถอานไฟลในฟอรแมต CSV (Comma –Separated Values) ซง
แตละขอความจะถกแบงดวยตวแบง delimiter ได โดยฟงกชน fgetcsv() จะอานขอความแตละบรรทดแลว
ใหคาเปนอารเรยของแตละขอความทถกคนดวย delimiter
การเขยนลงไฟล
การเขยนขอมลลงเทกซไฟลดวยฟงกชน fputs() มรปแบบการใชงานดงน
รปแบบ
fp ไฟลพอยเตอร
str ขอความทตองการเขยนลงไฟล
length ความยาวของขอความ )ในหนวยไบต (ทใหเขยน
intfputs (int fp, string str [, int length])
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 30
ตวอยาง การเขยนขอมลลงไฟลดวยฟงกชน fputs()
<? php
$linklist[] = http://www.php.net;
$linklist[] = http://www.zend.com;
$linklist[] = http://www.apache.org;
$linklist[] = http://www.linux.org;
$fp = @fopen(‚link.htm‛, ‚w‛);
foreach ($linklist as $eachlink) {
fpust($fp, ‚<a href=’$eachlink’>$eachlink</a><br>\n‛;
}
@fclose($fp) or die(‚Cannot close file.‛);
?>
ผลลพธของโปรแกรม
โปรแกรมขางบนนจะสรางไฟล link.htm ขนมา และเขยนขอมลทเกบอยในตวแปรอารเรย
$linklist ลงไป ซงสดทายแลวจะไดแทกซไฟลทมขอความดงน
<a href=’http://www.php.net’>http://www.php.net</a><br>
<a href=’http://www.zend.com’>http://www.zend.com</a><br>
<a href=’http://www.apache.org’>http://www.apache.org</a><br>
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 31
<a href=’http://www.linux.org’>http://www.linux.org</a><br>
ซงสามารถน ามาแสดงผลบนบราวเซอรได
การอานและเขยนไบนารไฟล
ในการอานและเขยนไบนารไฟลนน แทนทจะใชฟงกชน fgets() และ fputs() ควรจะใชฟงกชน
fread() และ fwrite() และหากระบบปฏบตการทใชมความแตกตางระหวางไบนารไฟลกบแทกซไฟลก
จ าเปนตองเพมตวอกษร b เขาไปในอารกวเมนต mode ของฟงกชน fopen() ดวย
ฟงกชน fread()
รปแบบการใชฟงกชน fread()
รปแบบ
string fread (int fp, int lengh)
fp ไฟลพอยเตอร
length ความยาวของขอความ )ในหนวยไบต (ทใหอาน
ฟงกชน fread() จะอานไฟลเปนจ านวน length ไบตนบจากต าแหนงทไฟลพอยเตอรชอย และจะ
หยดอานเมอพบจดสนสดของไฟล (EOF)
ฟงกชน fwrite()
รปแบบการใชฟงกชน fwrite()
รปแบบ
int fwrite (int fp, string string [, int length])
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 32
fp ไฟลพอยเตอร
string ขอความทตองการเขยนลงไฟล
length ความยาวของขอความ )ในหนวยไบต (ทใหเขยน
ฟงกชน fwrite() จะเขยนขอมลลงไฟลเปนจ านวน length ไบตหรอจนสนสดขอความใน
อารกวเมนต string และจะคนคาเปนจ านวนไบตทถกเขยนลงไฟล หรอหากมขอผดพลาดจะคนคาเปน -1
ตวอยางท 7.5 การท าส าเนาไฟลดวยฟงกชน fread() และ fwrite()
<? php
$fp = @fopen(‚sample.zip‛, ‚rb‛);
$fpnew = @fopen(‚new_sample.zip‛,‛wb‛);
while ($ln = @fread($fp, 1024 )) {
fwrite ($fpnew,$ln);
}
@fclsoe($fp) or die (‚Cannot close old file.‛);
@fclose($fpnew) or die (‚Cannot cllse new file.‛);
?>
ผลลพธของโปรแกรม
ในตวอยางนจะท าการคดลอกขอมลจากไฟล sample.zip ครงละ 1024 ไบต น ามาเกบไวในตวแปร
$ln แลวจงเขยนลงไฟล new_sample.zip ขนมาใหมซงมขอมลเหมอนกบไฟล sample.zip ทกประการ
ตรวจสอบการมอยของไฟล
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 33
รปแบบ
filename ชอไฟลทตองการตรวจสอบ
ผลลพธ
การเรยกใชงานไฟล ดวยค าสง
การลบไฟล
การลบไฟลใน PHP จะใชฟงกชน unlink()
รปแบบ
ถาการลบไฟลส าเรจจะใหคาเปน true และถาลมเหลวจะใหคาเปน false
ฟงกชน exec()
เปนฟงกชนทใชรนโปรแกรมภายนอก หรอค าสงระบบ
boolfile_exists( string filename)
int unlink(string filename)
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 34
รปแบบคอ
ฟงกชนทเกยวกบโปรแกรม SCILAB
ฟงกชน file เปนฟงกชนทใชในการเปดหรอปดแฟมขอมลหรอไฟล
รปแบบคอ
โดยทพารามเตอร
o 'open' เปนการบอกโปรแกรมใหเปดไฟล filename ขนมาใชงาน o filename เปนชอไฟลขอมลทตองการจะเรยกขนมาใชงาน o status เปนการก าหนดสถานะของไฟลทเปดขนมาใชงานซงมอย4รปแบบคอ
"new" หมายถงไฟลทเปดขนมาจะตองไมเคยมอยในไดเรกทอรท างาน "old" หมายถงไฟลทเปดขนมาจะตองมอยแลวในไดเรกทอรท างาน "unknown" หมายถงไฟลทเปดขนมาจะมอยหรอไม,มอยในไดเรกทอรท างานกไต "scratch" หมายถงไฟลทเปดขนมาจะถกลบทงหลงจากเสรจสนการท างาน
o Unit เปนเลขจ านวนเตมทโปรแกรมใชอางถงชอไฟล filename นน
หมายเหตหลงจากเสรจสนการใชงานไฟลทเปดขนมาแลว จะตองท าการปดการท างานของไฟลนนดวยเสมอ
โดย ใชฟงกชนดงน
ในทางปฏบตฟงกชนทงสองนมกจะใชงานคกนเสมอ
String exec( string$command [, array &$output [, int&$return_var]] );
unit = file('open', filename, [status])
file(‘close', unit)
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 35
ฟงกชน fprintf
เปนฟงกชนทท าหนาทพมพคาของตวแปรลงไปเกบไวในไฟล แทนทจะแสดงผลออกมาทหนาตางฟงกชน
รปแบบคอ
โดยทพารามเตอร
o file เปนชอของไฟลทตองการจะใหเกบคาของตวแปร value_l – n o format รหสควบคมการพมพ o value_i - n เปนตวก าหนดวาจะใหขอมลใดแสดงผลออกมาทหนาตางค าสง
ตารางท 1.1 รหสรปแบบในโปรแกรม SCILAB
รหสรปแบบ ค าอธบาย %d แสดงผลเปนเลขจ านวนเตมฐานสบแบบมเครองหมาย (signed integer) %u แสดงผลเปนเลขจ านวนเตมฐานสบแบบไม ,มเครองหมาย (unsigned integer) %x หรอ %x แสดงผลเปนเลขจ านวนเตมฐานสบหกแบบไม ,มเครองหมาย %f แสดงผลเปนเลขจ านวนจรง %e แสดงผลเปนเลขจ านวนจรงในรปของเลขยกก าลง %c แสดงผลตวอกขระ %s แสดงผลสายอกขระ
fprintf(file, format, value_l,..., value_n)
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 36
ตารางท 1.2 รหสบงคบการพมพในโปรแกรม SCILAB
รหสบงคบการพมพ ค าอธบาย
\n ขนบรรทดใหม
\t แทป (tab) ในแนวนอน
\v แทปในแนวตง
\b เลอนเคอรเซอรไปลบตวอกขระทางซายมอหนงตวอกขระ
\r เครองหมาย return เหมอนกบการกดปม Enter
\f ขนหนาใหม
\a สงเสยงดงออกล าโพงหนงครง
\\ เครองหมาย \ (backslash)
\’ เครองหมาย ' (single quote)
\” เครองหมาย " (double quote)
\? เครองหมาย ? (question mark)
\000 พมพตวอกขระทมเลขฐานแปดตรงกบคา 000
\xhh พมพตวอกขระทมเลขฐานสอบหกตรงกบคา hh
ตวอยางการใชงาน
เปดโปรแกรม SCILAB แลวพมพค าสงดงน
-->u = file('open', 'results.txt', 'unknown');
-->for t = 0:%pi/10:%pi
-->fprintf(u, 'time = %6.3f value = %6.3f\n', t, cos(t));
-->end
-->file('close', u);
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 37
จากนนทดลองเปดไฟล results.txt จะไดผลลพธดงภาพ
ค าสง exec
เปนค าสงทใชในการโหลดฟงกชนตางๆ เขามาประมวลผลรวมกบโปรแกรม SCILABโดยมลกษณะดงน
โดยทพารามเตอร
path เปนชอและทอยของไฟล
ตวอยางการใชงาน
-->exec(' test.sci');
ค าสง savematfile เปนค าสงทใชในการบนทกขอมลใหอยในรปแบบ binary หรอ ASCII ได โดยมรปแบบดงน
exec(path)
savematfile(‘filename’,’var1’,’var2’)
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 38
โดยทพารามเตอร
o filename ชอและทอยของไฟล o var1…var2 เปนตวแปรทจะเขยนลงในไฟล
ตวอยางการใชงาน
savematfile(‘test.txt’, ‘ans’)
ค าสง xs2gif เปนค าสงทใชในการบนทกกราฟตางๆ ทวาดขนเปนไฟลรปภาพทมนามสกล .gif
รปแบบการใชงาน
โดยทพารามเตอร
o win_num คอ หนาตางกราฟฟกตงแต 0.....N o filen คอ ชอไฟลทเราตองการบนทก นามสกลเปน .gif
ตวอยางการใชงาน
xs2gif(win_num, filen)
xs2gif(0,'00 l.gif)
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 39
Chapter 3 การเขยนเวบ Applications ดวย PHP ตดตอกบ Scilab
ในบทนเราจะน าองคความรทกลาวมาขางตนมาประยกตใชงานรวมกบโปรแกรม SCILAB เพอประมวลผลค าสงและฟงกชนทางคณตศาสตร โดยจะเรมจากหาคา Log ฐาน 2 เพอใหเขาใจไดงายเพราะไมซบซอนมากนก ล าดบขนตอนการเขยนโปรแกรมมดงน
ขนตอนการเขยนโปรแกรม
1. สรางไฟล HTML ขนมาเพอใชในการจดการขอมลทจะสงไปยงไฟล PHP เพอสรางไฟลสคลปตของโปรแกรม SCILAB
2. เขยนโปรแกรมประมาลผลไฟลสคลปตดวยค าสงของ PHP ในการเรยกใชงานโปรแกรมภายนอก 3. เขยนโปรแกรม PHP ในการอานขอมลจากแทกไฟลน ามาแสดงผลทางหนาเวบเพจ
แผนผงระบบการท างาน (System Flowchart)
เรมตน
ฟอรมรบคา Log2
PHP รบคา Log2 สราง
ไฟลสครปต
ประมวลผลไฟล
สครปต
สรางเทกไฟลผลลพธ
แสดงผลลพธ
จบการท างาน
1
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 40
ในตวอยางการหาคา Log ฐาน 2 เราจะท าการสรางฟอรม ฟอรมนจะอยในไฟล HTML จากนนสงคาไปยง
ไฟล PHP ทท าหนาทในการสรางไฟลสครปต ทเปนค าสงของโปรแกรม SCILAB เพอหาคา Log 2 ซงใน
โปรแกรม SCILAB จะมฟงกชน Log2(x) ดงนนเราจะรบคาเปนตวเลขมาจากฟอรมแลวท าการเขยนลงไปใน ตว
แปร x
นยามลอการทม
ลอการทม เปนการด าเนนการทางคณตศาสตร ทเปนฟงกชนผกผนของ ฟงกชนเอกซโพเนนเชยล
(การใช คาคงตว หรอ "ฐาน" เปนเลขยกก าลง) ลอการทมของจ านวน x ทมฐาน b คอจ านวน x นน
คอ x = bn เขยนไดเปน
ตวอยางเชน
Log 2 (128) = 7
เพราะวา 2 x 2 x 2 x 2 x 2 x 2 x 2 = 128
ขนตอนการเขยนโปรแกรม
1.1 เปดโปรแกรม TextEditer จากนนพมพโคดดงน
รปท 3.1 แสดงโคดโปรแกรม
logb (x) = n
1. การสรางฟอรม เพอรบคา Log 2 สงไปยงไฟล PHP
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 41
อธบายโปรแกรม
เนองจากหนาเวบเพจนเปนการสรางฟอรม และเปนค าสง HTML ทงหมด
บรรทดท 2-4 เปนสวนหว (Header) ของหนาเวบเพจและจะแสดงขอความ Test Log 2 ท Title Bar
บรรทดท 5-11 เปนสวนของ Body ในสวนของ Body นน กจะสรางฟอรมดวย tag <form>…</form>
1.2 ท าการ Save ไฟล ตงชอไฟล เปน log2.html ไปไวทไดเรกเทอร C:\Appserv\www\scilab_php (ในทนจะ
สราง Folder ชอ scilab_php ส าหรบเกบไฟลตางๆทเราสรางขนเพอใหเปนระเบยบและเขาใจไดงาย)
1.3 ท าการเรยกดหนาเวบเพจทสรางขน เปด Browser พมพ URL ดงน
http://localhost/scilab_php/log2.php จะไดหนาเวบดงรป
รปท 3.2 แสดงฟอรมการกรอกขอมล
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 42
เมอเราสรางฟอรมในการรบขอมลแลว เราตองสงขอมลไปยงเครอง Server เพอประมวลผลไฟล ซง
ฝง Server นจะใช PHP เปนตวรบขอมลและสรางไฟลสครปต นามสกล .sce เพอประมวลผลดวย
โปรแกรม SCILAB แตกอนทจะสรางไฟลสครปตนน ตองรกอนวาค าสงมอะไรบาง จากตวอยางจะไดดงน
รปท 3.3 แสดงค าสงทงหมดของไฟลสครปต
ขนตอนการเขยนโปรแกรม
2.1 เปดโปรแกรม TextEditer จากนนพมพโคดดงน
รปท 3.4 แสดงโคดการสรางไฟลสครปต
อธบายโปรแกรม
ในขนตอนนจะเขยนโคดเพอรบคาจากเพจ log2.html ทสงมา จากนนสรางไฟลเทกขนมาชอ test.sce
น าคาทรบมาเขยนลงไฟล
บรรทดท 3-4 ก าหนดตวแปร $log2 เพอเกบคาทรบมาจากเพจ log2.html แลวน าคาทไดไปรวมกบค าสงทจะ
เขยนลงในไฟลสครปต
2. เขยนโปรแกรมประมวลผลไฟลสคลปตดวยค าสงของ PHP
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 43
บรรทดท 7-8 สรางไฟลสครปต test.sce ดวยค าสง fopen() ระบ mode ใหสามารถเขยนขอมลลงไฟลอยางเดยว
ทดสอบการท างาน
เมอเปดโปรแกรม Browser ขนมาแลวเรยก URL http://localhost/scilab_php/log2.html จากนนทดลอง
กรอกตวเลข 128 เขาไป เมอคลกปม Submit แลวขอมลจะถกสงไปยงไฟล log2.php จากนนกจะสรางไฟล
สครปตชอ test.sce ดงรปท 3.5 และเมอเปดไฟล test.sce ดวย NotePad จะไดผลลพธดงรปท 3.6
รปท 3.5 แสดงไฟล test.sce
รปท 3.6 แสดงการเปดไฟล test.sce ดวยโปรแกรม NotePad
2.2 เขยนโปรแกรมเพอรนไฟลสครปตและบนทกผลลพธเปนเทกไฟล
เมอเราทราบหลกการสรางไฟลสครปตแลวขนตอนนจะเปนการน าไฟลสครปตทไดไปรนบน
โปรแกรม SCILAB จากนนกจะบนทกผลลพธเปนเทกไฟล ซงในโปรแกรม SCILAB จะมรปแบบ
ดงน
savematfile('filename', 'var1', 'var2', ...)
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 44
โดยท
filename คอ ชอและนามสกลของไฟล
var1, var2… คอ ตวแปรทตองการบนทก
ขนตอนการเขยนโปรแกรม
1. เปดไฟล log2.php ขนมาแกไข จากนนเพมโคดดงน
รปท 3.7 โคดการประมวลผลไฟลสครปต
อธบายโปรแกรม
หลงจากทไดสรางไฟลสครปตเรยนรอยแลวในหวขอทผานมาในหวขอนกจะเขยนโคดโปรแกรมตอ
จากเดมเพราะไฟล PHP ทงหมดจะอยในไฟลเดยวกน
บรรทดท 10 – 11 สรางตวแปร $path เกบคาทอยในตวแปร PHP แบบ Predefinde Variables ซงเปนตวแปรท
PHP สรางไวลวงหนาเพอใหใชงานไดสะดวก ซงตวแปร $_SERVER[‚SystemRoot‛] จะเกบคาไดเรกเทอรท
เกบไฟลระบบของระบบปฏบตการ ในทนคอ C:\Windows จากนนน าตวแปร $path ไปก าหนดรวมกบค าสงท
ใชในการประมวลผลไฟลสครปตเกบไวในตวแปร $com
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 45
ทดสอบโปรแกรม
ขนตอนการทดสอบใหท าเหมอนการทดสอบกอนหนาคอ เปดโปรแกรม Browser แลวเรยกไฟลทสราง
ขนผานทาง Address Bar ซงในหวขอตอๆไปกท าเชนกน หลงจากทรนโปรแกรมจะกจะสรางไฟล 001.txt
ขนมา ดงรปท 3.8 และเมอเปดดวยโปรแกรม NotePad จะไดดงรปท 3.9
รปท 3.8 แสดงไฟล 001.txt
รปท 3.9 แสดงการเปดไฟล 001.txt
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 46
ขนตอนนจะอยไฟลเดยวกบขนตอนการสรางไฟลสครปตและประมวลผลไฟลสครปต เมอ
ประมวลผลไฟลสครปตแลวผลลพธทไดนนจะอยในรปแบบของเทกไฟล (นามสกล .txt) ดงนนใน
ขนตอนนเราจะเขยนค าสงเพอเปดไฟลทไดแลวท าการอานไฟลไปเรอยๆจนสนสดทบรรทดสดทาย
จากนนน าผลลพธมาแสดงทางหนาจอ
ขนตอนการเขยนโปรแกรม
3.3 เปดไฟล log2.php จากนนเพมโคดตอจากบรรทดสดทายของไฟลเดมดงน
รปท 3.10 แสดงโคดโปรแกรม
3. อานขอมลจากเทกซไฟลน ามาแสดงผลทางหนาเวบเพจ
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 47
รปท 3.11 แสดงไฟล log2.php ทสมบรณ
อธบายโปรแกรม
บรรทดท 15 ท าการเปดไฟล 001.txt แบบอานอยางเดยว จากนนเกบไวในตวแปร $file
บรรทดท 16–18 อานไฟลไปเรอยๆจนถงจดสนสดของไฟล ดวยเงอนไข while ($data = fgets($file,1024))
หมายความวา ถาอานไฟลส าเรจดวยฟงกชน fgets($file,1024) จะไดคาเปน TRUE ดงนนเงอนไขในค าสง while
กเปนจรง จะท าแบบนไปเรอยๆจนกวาจะไดคาเปน FALSE กจะออกจาก Loop while
บรรทดท 19 ค าสงทใชในการปดไฟล
การทดสอบการท างาน
การท างานของโปรแกรมจะรบคาตวเลขทางแปนพมพผานฟอรมสงไปใหไฟล PHP ทางฝงเซรฟเวอรสราง
ไฟลสรปตแลวอานไฟลมาแสดงผล ดงนนในทนฟอรมจะอยทไฟล log2.html การเรยกใชงานจงเรยกไฟล
log2.html ดงน
1. เปดโปรแกรม Browser แลวพมพ URL ในชอง Address ดงน http://localhost/scilab_php/log2.html ดง
รปท 3.12
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 48
รปท 3.12 แสดงการทดสอบการท างาน
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 49
Chapter 4
การประยกตใชงาน PHP เพอตดตอกบ Scilab
ในบทนจะเปนการประยกตองคความรทงหมดในบททผานมาเพอใชในการสรางโปรแกรมเพอใชในการ
ค านวณทางคณตศาสตร ฟสกส ไฟฟา และอนๆ ซงฟงกชนตางๆของโปรแกรม SCILAB สามารถศกษาไดจาก
ค มอภาษา SCILAB ส าหรบผเ รมตน (ฉบบปรบปรงใหม) ห รอสามารถดาวนโหลดไดท เวบไซต
http://home.npru.ac.th/piya/webscilab ซงจะมตวอยางการใชงาน การประยกตใชงานฟงกชน การสรางฟงกชน
ขนมาใชงาน รวมถงเครองมอ (Tools) ทใชในการพฒนา และสามารถดาวนโหลดโปรแกรม SCILAB มาใชงาน
ไดฟรจากเวบไซตน โดยผอานสามารถน าองคความรทไดไปตอยอดพฒนาสอการเรยนการสอนหรอน าไปใช
งานในทางคณตศาสตรไดอกมากมาย ซงในบทนมตวอยางการประยกตใชงานดงน
1. การหา det ของเมทรกซขนาด 2x2
2. การหาค าตอบของสมการพหนาม
3. การวาดกราฟของสมการพหนาม
ขนตอนการเขยนโปรแกรม
1. สรางฟอรมส าหรบรบคาเมทรกซ A ใหออกแบบหนาจอดงรปท 4.1
รปท 4.1 หนาจอการออกแบบ
1. การหา det ของเมทรกซขนาด 2x2
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 50
โคดของฟอรม
อธบายโปรแกรม
ในสวนของฟอรมนน จะเปนภาษา HTML ซงเปนพนฐานของการเขยนเวบไซต ในทนจะไมอธบายอยาง
ละเอยดแตจะอธบายในสวนทส าคญๆ เทานน จากโคดจะไดหนาเวบเพจดงรปท 4.1
2. เขยนโคดรบคาจากฟอรม
หลงจากเขยนหนาฟอรมไวเรยบรอยแลวขนตอนตอไปนจะเปนการรบคามาเกบไวในตวแปรเพอเตยม
พรอมในการใชงานดงน
3. สรางไฟลสครปต
ขนตอนนจะน าคาในตวแปรมาเขยนลงไฟลสครปต โดยจะสรางไฟลสครปตชอ matrix.sce ดงน
บรรทดท 8 สรางตวแปร $data เกบขอมลทจะเขยนลงไฟล
สรางตวแปรเกบคาสมาชกของเมทรกซ
แตละตว เปน $d1 ,$d2 $d3, $d4
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 51
บรรทดท 11-12 สรางและเปดไฟลชอ matrix.sce เกบไวในตวแปรไฟล แลวเขยนลงไฟลดวยขอมลท
อยในตวแปร $data เมอรนโปรแกรมจะพบวามโปรแกรมจะสรางไฟล matrix.sce ขนมา และเมอเปดด
จะไดดงรปท 4.2
รปท 4.2 แสดงการเปดไฟล matrix.sce
4. ประมวลผลไฟลสครปตดวยโปรแกรม SCILAB
ขนตอนนเราจะเขยนโปรแกรม PHP เพอรนโปรแกรมภายนอก รปแบบคอ
exec(ชอไฟลหรอไดเรกเทอร ) เพมโคดโปรแกรมดงน
บรรทดท 14 สรางตวแปร $path เกบขอมลไดเรกเทอรทเกบไฟลระบบปฏบตการ
บรรทดท 15 สรางตวแปร $com เกบค าสงทใชในการประมวลผลไฟลสครปต โดยอางถงไฟล
Scilex.exe ซงเปนไฟลทใชในการรนโปรแกรม SCILAB เพอประมวลผลไฟล matrix.sce
บรรทดท 17 เปนค าสงทใชเรยกใชงานโปรแกรมภายนอก ในทนจะเรยกโปรแกรม SCILAB ขนมา
5. น าผลลพธทไดจากการประมวลผลไฟลสครปตไปแสดงผลยงเวบบราวเซอร
หลงจากทประมวลผลไฟลสครปตแลวนนจะไดเทกซไฟลผลลพธขนมา ขนตอนนเราจะใช PHP ใน
การเปดไฟลเพออานผลลพธและสงไปแสดงยงเวบบราวเซอร ใหเขยนโคดเพมดงน
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 52
บรรทดท 19 เปดไฟล matrix.txt แบบอานอยางเดยว แลวเกบไวในตวแปรไฟล
บรรทดท 20 ท าการอานไฟลไปเรอยๆ จนกวาเงอนไข while จะมคาเปนเทจ (Flase) จะไดคา Flase
กตอเมออานไฟลไปจนถงจดสนสดของไฟล (End Of File)
บรรทดท 21 แสดงผลลพธทไดจากการอานไฟล โดยก าหนดรปแบบการแสดงผลขอมลเปนทศนยม
ไมเกน 7 ต าแหนง
เสรจจากขนตอนนแลวจะไดไฟล PHP ทสมบรณเพอท างานในฝงเซฟเวอร สรปไฟล matrix.php ท
สมบรณจะไดดงน
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 53
เมอไดไฟลทสมบรณแลว ใหทดสอบการท างานเมอรนโปรแกรมแลวจะไดดงรปท 4.3 กรอกตวเลข
สมาชกของเมทรกซ A ลงไปในฟอรม คลกปม Submit จะไดผลลพธดงรปท 4.4
รปท 4.3 ฟอรมกรอกขอมล
รปท 4.4 ผลลพธทไดจากการค านวณ
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 54
ในตวอยางนจะเปนการหาค าตอบของสมาการพหนาม เมอ y มคาเทากบ 0 เชน 2x3+5x2-2 = 0
ส าหรบค าตอบทไดนนจะมค าตอบเทากบเลขชก าลงตวทมากทสดของสมการพหนาม ซงในตวอยางน
จะใหแสดงสมาการทเรากรอกลงไปในรปแบบทสามารถเขาใจไดงาย
ตวอยางเชน 2x3+5x2-2
จากสมาการตวอยาง ในโปรแกรม SCILAB จะไมสามารถบนทกขอมลใหอยในรปแบบนได แตจะ
บนทกผลลพธเปนเทกซไฟล เชน -2+5\*x+2\*x^{3} ดงนนเราจงตองสรางฟงกชน เพอทจะแปลงคาท
ไดเปนรปแบบทเราอานไดงาย ดงน
รปท 4.5 แสดงฟงกชน pohtml ทเราสรางขน
2. การหาค าตอบของสมการพหนาม
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 55
ฟงกชนทสรางขนมานนจะบนทกไฟลเปนนามสกล .sci และเรยกใชงานฟงกชนดวยค าสง exec
ขนตอนการเขยนโปรแกรมมดงน
1. ออกแบบหนาจอและสรางฟอรมรบคาสมการพหนามดงรปท 4.6
2. ให Save ไปไวท C:\AppServ\www\scilab_php ตงชอไฟลเปน poly.hmtl
3. เขยนโปรแกรม PHP เพอจดการกบขอมลทรบมาจากฟอรมซงจะแบง โคดของโปรแกรมออกเปน
สวนๆ คอ
- สวนการรบคาจากฟอรม
- สวนของการสรางไฟลสครปต และรนไฟลสครปต
- สวนการแสดงผลลพธ
จากการแบงโคดโปรแกรมเปนสวนๆสามารถเขยนโปรแกรมไดดงน
เขยนโปรแกรมเพอรบคาจากฟอรม
บรรทดท 2 รบคาดวยเมธอด POST จากฟอรมชอ poly เกบไวในตวแปร $y
บรรทดท 4 เขยนค าสงทตองการสรางไฟลสครปตเกบไวในตวแปร $data จากค าสงดงกลาวจะได
ไฟลสรปตทมรปแบบค าสงทงหมดดงรปท 4.6
รปท 4.6 แสดงไฟลสคปตชอ poly.sce ทจะใชในการค านวณ
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 56
เขยนโปรแกรมสรางไฟลสครปตและรนไฟลสครปต
บรรทดท 6 สรางไฟลสรปตชอ poly.sce แลวเปดไฟล จากนนเกบไวในตวแปร $file
บรรทดท 7 น าคาทเกบไวในตวแปร $data มาเขยนลงไฟล poly.sce
บรรทดท 9-10 สรางตวแปรเพอเกบค าสงทใชในการรนไฟลสครปต
บรรทดท 12 เปนค าสงทใชในการประมวลผลไฟล poly.sce
เขยนโปรแกรมเพอแสดงผลลพธทางหนาจอ
บรรทดท 14 เปดไฟล fp.html ซงเปนไฟลผลลพธทไดจากการรนไฟลสรปตเกบไวในตวแปร $file
บรรทดท 15-18 อานไฟลดวยฟงกชน fgets() แลวเกบไวในตวแปร $data_y จากนนใชฟงกชน trim()
ในการตดชองวางออกไป เมอตดชองวาออกแลวกตดขอความอกครงดวยฟงกชน explode() จากนนเกบ
ไวในตวแปร $exp1 และ $exp2 จ าคาทเกบไวในตวแปร $exp2 ไปเกบไวในตวแปร $result[] ซงเปน
ตวแปรชนด Array
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 57
บรรทดท 19-20 ใหแสดงขอความ ‚สมาการทรบมา คอ y =‛ ตามดวยขอมลทเกบอยในตวแปร
$result[4] ล าดบท 4 ของตวแปร Array แลวขนบรรทดใหมดวย แทก <br> จากใหใหแสดง ‚ ******‛
บรรทดท 22 แสดงขอความ ‚คาของ x‛
บรรทดท 23 เปดโปแกรมดวยฟงกชน fopen() เกบไวในตวแปร $file1
บรรทดท 24-29 ใหตวแปร $i มคาเรมตนเปน 1 จากนนอานไฟลดวยฟงกชน fgets() จากนนน าคาทได
ไปแสดงผลทางหนาจอในบรรทดท 27 โดยมรปแบบคอ ‚คาท 1=,คาท 2 =,…..ไปเรอยๆจนถง
จดสนสดของไฟล‛
บรรทดท 30 ปดไฟลดวยฟงกชน fclose()
เมอสรางไฟล poly.php เสรจแลวใหบนทกไฟลไปท C:\AppServ\www\scilab_php จากนนท าการทดสอบโดย
เรยกไฟล poly.html ขนมาเพอกรอกสมาการ
ทดสอบโปรแกรม
กรอกสมการ 5x2 + 2x2 -5 ซงในโปรแกรม SCILAB จะมรปแบบการกรอกขอมลเปน 5*x^2+2*x^2-5
รปท 4.7 แสดงการกรอกสมการ
เมอคลกปม Submit จะไดผลลพธดงรปท 4.8
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 58
รปท 4.8 แสดงผลลพธทไดจากการอานไฟล
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 59
ในตวอยางนนนเปนการวาดกราฟของสมการพหนามดงนนผลลพธทไดนนจะแตกตางจากตวอยางท
ผานมา เนองจากจะไดผลลพธเปนไฟลภาพ (.gif) โดยเราจะวาดกราฟดวยฟงกชน plot(x,y) และบนทกผลลพธ
ดวยฟงกชน xs2gif()
ในการพฒนาเวบแอปพลเคชนนนปจจบนนยมใชเทคนค Ajax เขามาชวยในการท างานระหวางเครองไคล
เอนกบเซรฟเวอร เพอใหการตรวจสอบขอผดพลาดนนท าไดงาย ดงนนในตวอยางนเราจะมาลองใช Ajax ใน
การท างานรวมกบ PHP และ SCILAB ซงการพฒนานน เราจะสรางฟอรมซงจะอยในเพจเดยวกนกบเพจทใชใน
การแสดงผล โดยจะใช Ajax เขามาชวยในการสงขอมลจากฟอรมแลวน ากลบมาแสดงผล ซงมขนตอนดงน
1. ออกแบบหนาจอเพอรบและแสดงผลกราฟดงรปท 4.9 จากนน Save ชอ gra.html
รปท 4.9 แสดงฟอรมกรอกขอมลเพอวาดกราฟ
3. การวาดกราฟของสมการพหนาม
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 60
โคดของการออกแบบหนาจอ
<html> <head> <title>ทดสอบ SCILAB BY Ajax & PHP</title> <style type="text/css"> .txt20b { font-family: sans-serif; font-size: 24px; font-weight: bold; color: #FF0000; } </style> </head> <body ><center> <table width="610" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFCC"> <tr> <td align="center" class="txt20b">Test SCILAB BY Ajax & PHP </td> </tr> <tr> <td><table width="610" border="0" cellpadding="0" cellspacing="2" bgcolor="#66FF99"> <tr> <td align="center"> คาเรมตน <input name="x1" type="text" id="x1" size="1"> คาสะสม <input name="x2" type="text" id="x2" size="1"> คาสนสด <input name="x3" type="text" id="x3" size="1"> </td> </tr> <tr> <td align="center">สมการ <input type="text" name="poly" id="poly"/> <button id="btnGrap">ค านวณ</button> <button id="Clear">เคลยรคา</button></td> </tr> <tr> <td align="center" class="txt20b">รปกราฟ</td> </tr> <tr> <td><div id="result" align="center"></div> </td> </tr> </table></td>
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 61
2. เขยนโปรแกรมดวย Ajax แทรกลงในเพจ gra.html โดยแทรกโคดตอไปนในสวนของแทก
<head></head>
บรรทดท 12 เปดแทกสครปต
บรรทดท 13 ประกาศตวแปร ajax ใหเปนคาวาง
บรรทดท 14-19 สราง Object HttpRequest แลวเกบไวในตวแปร ajax
บรรทดท 20 สรางฟงกชน ajaxLoad() โดยรบคาพารามเตอร 4 ตว คอ
- method ใชรบคาเมธอดทก าหนด โดยจะก าหนดเปน POST หรอ GET
- URL ใชรบคาชอไฟลทตองการสงคาไปให
- data เกบขอมลทจะสงไปยงไฟล PHP
</tr> <tr> <td></td> </tr> </table> </center> </body> </html>
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 62
- displayId เกบชอ Oject หรอ Attribute ทตองการใหแสดงผล
บรรทดท 21 เรยกใชงานเมธอด open และสงพาราเมเตอร method และ url เขาไป
บรรทดท 22 เรยกใชงานเมธอด setRequestHeader แลวใส header เขาไป
บรรทดท 25-26 เรยกใชงานเมธอด onreadystatechange เพอตรวจจบ Request วาสงทสงใปนนถกตอบ
กลบมาหรอยง โดยตรวจสอบดวย if (ajax.readyState == 4 && ajax.status == 200) ถาเปนจรงแสดงวา
ขอมลถกสงกลบมาแลวกจะเรยกใชงานฟงกชน ajaxCallback() ซงจะอธบายในล าดบตอไป
บรรทดท 27-30 ถาเงอนไขเปนเทจหรอยงไมมการตอบกลบมาจะแสดงรปนาฬกาทรายและขอความ
"กรณารอสกคร..."
บรรทดท 31 เรยกใชงานเมธอด send แลวสงพารามเตอร ดวยตวแปร data
บรรทดท 34 สรางฟงกชน ajaxCallback() เพอก าหนดคาใหกบอลเมนต ซงชออลเมนตนนถกเกบ
ไวในตวแปร displayId จากนนก าหนดคาใหกบอลเมนต ดวยเมธอด responseText
บรรทดท 39 สรางฟงกชน sendData()
บรรทดท 40 ประกาศตวแปร URL เกบชอและทอยของไฟล gra.php
บรรทดท 41 ก าหนดคาทไดจากฟงกชน Math.random() ใหกบ URL
บรรทดท 42 รบคาจากอลเมนตชอ x1 จากนนก าหนดใหกบตวแปร x1
บรรทดท 43 รบคาจากอลเมนตชอ x2 จากนนก าหนดใหกบตวแปร x2
บรรทดท 44 รบคาจากอลเมนตชอ x3 จากนนก าหนดใหกบตวแปร x3
บรรทดท 45 รบคาจากอลเมนตชอ poly จากนนก าหนดใหกบตวแปร poly
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 63
บรรทดท 46 น าคาจากตวแปรแตละตวทรบมาจากอลเมนตเกบไวในตวแปร data
บรรทดท 47 เรยกใชฟงกชน ajaxLoad() แลวก าหนดพารามเตอร
3. เพมอเวนต (Event) เพอก าหนดเหตการณตางๆใหกบอลเมนตโดยก าหนดเหตการณเมอผใชคลกปม
‚ค านวณ‛ ก าหนดดงน
4. สรางไฟล PHP เพอประมวลผลขอมลทถกสงมาโดย Ajax และควบคมการท างานของโปรแกรม
SCILAB ดงน
บรรทดท 2-5 รบขอมลทสงมาผาน URL เกบไวในตวแปร $x1,$x2,$x3,$plot ตามล าดบ
บรรทดท 7 ตรวจสอบคาทเกบไวในตวแปร $plot ถามชองวาใหแทนดวยเครองหมาย ‚+‛ (คาทสง
มานนเปนสมการ อาจมเครองหมายบวกซงเมอสงผาน URL แลวนนเครองหมายบวกจะถอวาเปนชอง
วา 1 ชอง)
บรรทดท 9 สรางค าสงทใชในการสรางไฟลสครปตเกบไวในตวแปร $data
บรรทดท 11-12 สรางไฟลสครปต gar.sce จากนนเปดไฟลเกบไวในตวแปร $file แลวน าตวแปร $file
ไปเขยนดวยขอมลทอยในตวแปร $data ดวยฟงกชน fwrite()
บรรทดท 14-15 สรางค าสงเพอใชในการรนไฟลสครปต เกบไวในตวแปร $com
<button id="btnGrap" onClick="sendData()">ค านวณ</button>
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 64
บรรทดท 17 เปนค าสงทใชในการรนไฟลสครปต
บรรทดท 19-20 แสดงผลลพธไฟลรปภาพ test.gif จากนนปดไฟลดวยฟงกชน fcolse()
5. สรางฟงกชน Clear() เพอเคลยรขอมลในเพจ gra.html
ขนตอนนเปนการสรางฟงกชนเพอควบคมการกรอกขอมลเมอกรอกขอมลไปแลวนนขอมลจะคางอยท
ฟอรมกรอกขอมล (Textfield) เพอความสะดวกในการกรอกขอมลครงตอไป ใหคลกปม Clear แลว
ขอมลจะถกลางออกไป เราจะสรางฟงกชนไวในสวน head โคดมดงน
บรรทดท 50 สรางฟงกชนชอ Clear
บรรทดท 51-54 ก าหนดใหอลเมนต x1,x2,x3 และ poly เปนคาวาง
บรรทดท 55 ก าหนดใหอลเมนต result แสดงค าวา ‚ยงไมมขอมล‛ เปนตวอกษรสแดง ขนาด 2 px
6. เรยกใชงานฟงกชน Clear() ดวยการเพม Even เมอมการคลกปม Clear ดงน
7. สรางฟงกชนตรวจสอบขอผดพลาดในการกรอกขอมล
ขนตอนนจะชวยใหการท างานของโปรแกรมท าไดโดยไมเกด ERROR เพราะเราจะตรวจสอบความ
ถกตองของการกรอกขอมลกอนสงในทางฝงเซรฟเวอรโดยการก าหนดอเวนต onkeyup ใหกบอลเมนต
เมอผใชกรอกขอมลลงไปในฟอรมรบขอมล จะท าใหฟงกชนทเราสรางขนมาท างาน โคดของฟงกชนม
ดงน
<button id="Clear" onClick="Clear()">เคลยรคา</button>
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 65
อธบายโปรแกรม
บรรทดท 58 เปนการสรางฟงกชน IsNumeric() โดยรบคาพารามเตอรเขามา 2 ตว คอ ตวแปร sText
และตวแปร obj
- sText ใชเกบคาของขอมลทสงมาจากอลเมนต
- obj ใชเกบชออลเมนต
บรรทดท 60 ประกาศตวแปร ValidChars เกบขอมล 0-9 และ จด(.)
บรรทดท 61-62 ปรกาศตวแปร IsNumber ใหเปนคา True และประกาศตวแปร Char
บรรทดท 63 ใหวนลปตงแตตวแปร i มคาเปน 0 จนถง คาทไดจากการนบตวอกษรในอลเมนต และ
ตวแปร IsNumber มคาเปนจรง (True)
บรรทดท 65 ดงตวอกษรล าดบท i เกบไวในตวแปร Char
บรรทดท 66-69 ตรวจสอบตวแปร Char วาเทากบ -1 หรอไม ถาไช ถาใชกก าหนดคาตวแปร IsNumber
เทากบ False
บรรทดท 70 จบลป For
บรรทดท 71 -74 ตรวจสอบตวแปร IsNumber วาเทากบ False หรอไม ถาไชใหแสดงขอความ ‚กรอก
เฉพราะตวเลขเทานน‛ จากนนตดตวอกษรทอยในอลเมนตนนทงไปหนงต าแหนง
บรรทดท 75 จบฟงกชน
8. การเรยนใชงานฟงกชน IsNumeric() ท าไดโดยการก าหนด Even ใหกบอลเมนต TextFiled ทตองการ
ตรวจสอบในทนเราจะตรวจสอบอลเมนตทชอ x1,x2,x3 ดงน
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 66
ทดสอบการท างานของโปรแกรม
การทดสอบการท างานของโปรแกรมท าดงน
1. เปดโปรกแกรม Browser ในชอง URL พมพ http://localhost/scilab_php/gra.html
รปท 4.10 แสดงการรนไฟล gra.html
2. กรอกขอมลคาเรมตน = 5 คาสะสม = 2 คาสนสด = 50 และสมการ 2x3 + 4x2 – 5 ซงในการกรอกสมการ
นนเราจะกรอกในตามรปแบบของโปรแกรม SCILAB คอ 2x3 + 4x2 – 5 จะได 2*x^3+4*x^2-5
รปท 4.11 แสดงการกรอกขอมลสมการ
<input name="x1" type="text" id="x1" size="1" onKeyUp="IsNumeric(this.value,this)">
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 67
3. เมอคลกปม ค านวณ จะไดกราฟดงรปท 4.12
รปท 4.12 แสดงกราฟของสมการ 2x3 + 4x2 – 5
4. คลกปม เคลยรคา ขอมลทปรากฏอยกจะหายไปดงรปท 4.13
รปท 4.13 แสดงหนาจอเมอมการคลกปม เคลยรคา
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 68
5. ทดสอบฟงกชนการตรวจสอบขอมลโดยกรอกตวอกษรลงในชอง คาเรมตน คาสะสม และคาสนสด ดง
รปท 4.14
รปท 4.14 แสดงการตรวจสอบขอมล
คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 69
เอกสารอางอง
[1] สมศกด โชคชยชตกล. 2550. Insight PHP ฉบบสมบรณ(พมพครงท7). กรงเทพฯ:โปรวชน.
[2] บญชา ปะสละเตสง. 2551. พฒนาเวบดวยเทคนค Ajax และ PHP. กรงเทพฯ:ซเอดยเคชน.
[3] บญชา ปะสละเตสง. 2551. ออกแบบและพฒนาเวบไซตดวย DHTML. กรงเทพฯ:ซเอดยเคชน
[4] ปยะ โควนททววฒน. 2549. คมอโปรแกรมภาษา SCILAB ส าหรบผเรมตน (พมพครงท 2). กรงเทพฯ : ศนย
ผลตต าราเรยนสถาบนเทคโนโลยพระจอมเกลาเจาพระนครเหนอ.