69
คู่มือการเขียนโปรแกรม 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 ขั ้นตอนติดตั ้งมีแนวทางดังนี

1. Scilab และ PHP

Embed Size (px)

Citation preview

Page 1: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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 ขนตอนตดตงมแนวทางดงน

Page 2: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 2

1. หลงจากดาวนโหลดโปรแกรมมาแลวใหดลเบลคลกไฟลทดาวนโหลดมา จะเขาสหนาจอ

การตดตงเหมอนกบโปรแกรมทวไป

2. จะปรากฏหนาจอตวชวยการตดตง คลก Next

3. หนาจอเงอนไขการใชงาน ใหคลก I Agree

Page 3: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 3

4. ก าหนดต าแหนงการตดตง ใหใชคาดฟอลตคอ C:\AppServ

5. เลอกโปรแกรมทจะตดตง ใหเลอกทงหมด

Page 4: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 4

6. ก าหนดชอเซรฟเวอร ใหก าหนดเปน localhost และ อเมล ใหใสเมลอะไรกได ในตวอยางจะใช

[email protected] จากนน คลก Next

7. ก าหนดพาสเวรดของ MySQL คานส าคญมากเราตองจ าใหได มฉะนนจะไมสามารถใชงานฐานขอมล

ได ชอง Character Sets And Collations ใหก าหนดเปน UTF-8 Unicode

Page 5: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 5

8. จากนนจะเขาสหนาจอการตดตง ใหรอจนกวาจะตดตงเสรจ

หลงจากตดตงโปรแกรม AppServ เสรจเรยบรอยแลวใหทดสอบการตดตงวาโปรแกรมทเราตดตงไปนนใช

งานไดหรอไม ใหเปดโปรแกรม Browser ชนมา พมพ http://localhost จะปรกกฎหนาจอดงรป แสดงวาการ

ตดตงโปรแกรมนนสมบรณพรอมใชงาน

Page 6: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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>

Page 7: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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>

Page 8: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

Page 9: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 9

ทดสอบการท างานดวยค าสงงายๆโดยการเปดโปรแกรม Notepad แลวพมพค าสง ดงน

ผลการรนโปรแกรม

การแสดงผล

การแสดงผลของ PHP มอยหลายรปแบบค าสง แตในทนจะใช 2 ค าสงหลกๆ คอ print และ echo

ฟงกชน print()

รปแบบค าสง

Print (ผลลพธ); หรอ print ผลลพธ;

Page 10: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

*/

Page 11: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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 จะไม

สามารถแสดงคาของตวแปรไดเพราะสงทเราเขยนไปจะแสดงผลออกมาเชนนนเปรยบเทยบจากตวอยางตอไปน

Page 12: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 12

ผลลพธ

จากผลลพธแสดงวาเราไมสามารถทจะก าหนดคาเพอแสดงภายใตเครองหมาย Single Quoteได

Predefined Variables

Predefined Variables คอตวแปรท PHP สรางไวลวงหนาแลวเพอความสะดวกในการน าไปใชและให

เปนคาพนฐานในการใชงาน สวนใหญตวแปรเหลานมกจะเกบขอมลส าคญบางอยางเอาไว ตวแปรชนดนจะม

ลกษณะเปนอารเรยมากกวาแบบธรรมดา ซงมอยหลายตวแตในทนจะกลาวถงเฉพาะบางตวทส าคญและจ าเปน

ตอการใชงาน เพอตดตอกบ SCILAB เทานน รายละเอยดเพมเตมสามารถเรยกดไดทไฟล phpinfo.phpไปท

หวขอ PHP Variables

Page 13: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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’];

Page 14: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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 ตามล าดบ

Page 15: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

Page 16: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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 จะมเครองหมายปกา ( { }) หรอไมมกได

Page 17: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 17

รปแบบของค าสงคอ

ตวอยาง

ผลลพธ

ค าสง if…else

ค าสง if…else นนม 2 ทางเลอก จะท าการตรวจสอบเงอนไข ถาเงอนไขเปนจรงกจะท าในค าสงเมอ

เงอนไขเปนจรง ถาเงอนไขเปนเทจ กจะท าในงานในเงอนไขทเปนเทจ

รปแบบของค าสงคอ

if ( เงอนไข){

--- ค าสงตางๆเมอเงอนไขเปนจรง;

}

if ( เงอนไข){

--- ค าสงตางๆเมอเงอนไขเปนจรง;

}else{

--- ค าสงตางๆเมอเงอนไขเปนเทจ;

}

Page 18: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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;

}

Page 19: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 19

การท าซ า (Repetition)

คอการประมวลผลค าสงทซ าๆกน ตามเงอนไขทเราก าหนด หรอเรยกกนวาการวนลป (Looping) การ

ท าซ าหรอการวนลปนมประโยชนมากในการเขยนโปรแกรม เพราะจะชวยลดการเขยนโปรแกรมทซ าๆหลาย

บรรทดรวมไวในลป ท าใหการท างานของโปรแกรมกระชบขนการตรวจสอบหาขอผดพลาดในโคดของ

โปรแกรมกกระท าไดสะดวกขน

ค าสง while

ค าสง while จะท าการประมวลผลค าสงตางๆไปเรอยๆจนกวาเงอนไขจะเปนเทจ

รปแบบของค าสงคอ

ตวอยาง

ค าสง do…while

ค าสง do…while จะท าค าสงทก าหนดกอน แลวท าการตรวจสอบเงอนไขทหลง ถาเงอนไขเปนจรงจะ

กลบมาท างานในค าสงอกครง ท าแบบนไปเรอยๆจนกวาจะเงอนไขจะเปนเทจ

while ( เงอนไข){

--- ค าสงตางๆ;

}

<?

$i=1;

while($i <= 10){

echo "Hello! ".$i ."<br>";

$i++;

}

?>

Page 20: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 20

รปแบบ

ตวอยาง

ฟงกชนเกยวกบสตรง

ฟงกชนทเก ยวของกบการจดการสตรงใน PHP นนมฟงกชนใหใชมากมาย ซงในทนนนเราจะน ามา

แสดงเฉพาะทนาสนใจและเก ยวของกบการใชงานรวมกบ SCILAB เทานน ซงในการสรางเวบไซตเพอตดตอ

กบ SCILAB นน ฟงกชนทเก ยวกบการจดการสตรงนนจะมการใชงานบอยมาก เพราะ การแสดงผลลพธทสงมา

จากโปรแกรม SCILAB นน รปแบบจะไมคงทและไมสามารถน ามาแสดงผลบนเวบเพจไดทนท ตองใชฟงกชน

เหลานในการจดการรปแบบของผลลพธเสยกอน

ฟงกชน strlen()

เปนฟงกชนทใชในการหาความยาวของสตง หรอนบจ านวนสตง ซงจะนบรวมชองวางเปน 1 ตวอกษร

ดวย

รปแบบ

do{

--- ค าสงตางๆ;

}while ( เงอนไข );

<?

$i=1;

do{

echo "Hello! ".$i ."<br>";

$i++;

}while($i <= 10)

?>

strlen (สตง)

Page 21: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 21

ตวอยาง

ผลลพธ

ฟงกชน explode()

เปนฟงกชนในการแยกสตรงออกเปนสตรงยอยๆ ดวยการก าหนดสตรงหรอสญลกษณทจะใชแยก

ผลลพธทไดจะถกเกบอยในรปแบบของ Array

รปแบบคอ

ตวอยาง

ผลลพธ

<?

echostrlen("Hello world!");

?>

Hello world!

$result = explode (สญลกษณทใชแยก, สตรง)

<?

$str = "Hello world.";

print (explode(" ",$str));

?>

Array ( [0] => Hello [1] => world. )

Page 22: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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!

Page 23: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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>";

?>

Page 24: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 24

ผลลพธ

‚Hello ‚

‚ Hello‚

‚ Hello ‚

Page 25: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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])

Page 26: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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 เพอไมใหมการรายงานขอผดพลาดในกรณทการท างาน

ลมเหลว

Page 27: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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])

Page 28: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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]]])

Page 29: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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])

Page 30: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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>

Page 31: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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])

Page 32: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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 ทกประการ

ตรวจสอบการมอยของไฟล

Page 33: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 33

รปแบบ

filename ชอไฟลทตองการตรวจสอบ

ผลลพธ

การเรยกใชงานไฟล ดวยค าสง

การลบไฟล

การลบไฟลใน PHP จะใชฟงกชน unlink()

รปแบบ

ถาการลบไฟลส าเรจจะใหคาเปน true และถาลมเหลวจะใหคาเปน false

ฟงกชน exec()

เปนฟงกชนทใชรนโปรแกรมภายนอก หรอค าสงระบบ

boolfile_exists( string filename)

int unlink(string filename)

Page 34: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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)

Page 35: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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)

Page 36: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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);

Page 37: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 37

จากนนทดลองเปดไฟล results.txt จะไดผลลพธดงภาพ

ค าสง exec

เปนค าสงทใชในการโหลดฟงกชนตางๆ เขามาประมวลผลรวมกบโปรแกรม SCILABโดยมลกษณะดงน

โดยทพารามเตอร

path เปนชอและทอยของไฟล

ตวอยางการใชงาน

-->exec(' test.sci');

ค าสง savematfile เปนค าสงทใชในการบนทกขอมลใหอยในรปแบบ binary หรอ ASCII ได โดยมรปแบบดงน

exec(path)

savematfile(‘filename’,’var1’,’var2’)

Page 38: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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)

Page 39: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

Page 40: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

Page 41: 1. Scilab และ 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 แสดงฟอรมการกรอกขอมล

Page 42: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

Page 43: 1. Scilab และ 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', ...)

Page 44: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

Page 45: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 45

ทดสอบโปรแกรม

ขนตอนการทดสอบใหท าเหมอนการทดสอบกอนหนาคอ เปดโปรแกรม Browser แลวเรยกไฟลทสราง

ขนผานทาง Address Bar ซงในหวขอตอๆไปกท าเชนกน หลงจากทรนโปรแกรมจะกจะสรางไฟล 001.txt

ขนมา ดงรปท 3.8 และเมอเปดดวยโปรแกรม NotePad จะไดดงรปท 3.9

รปท 3.8 แสดงไฟล 001.txt

รปท 3.9 แสดงการเปดไฟล 001.txt

Page 46: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 46

ขนตอนนจะอยไฟลเดยวกบขนตอนการสรางไฟลสครปตและประมวลผลไฟลสครปต เมอ

ประมวลผลไฟลสครปตแลวผลลพธทไดนนจะอยในรปแบบของเทกไฟล (นามสกล .txt) ดงนนใน

ขนตอนนเราจะเขยนค าสงเพอเปดไฟลทไดแลวท าการอานไฟลไปเรอยๆจนสนสดทบรรทดสดทาย

จากนนน าผลลพธมาแสดงทางหนาจอ

ขนตอนการเขยนโปรแกรม

3.3 เปดไฟล log2.php จากนนเพมโคดตอจากบรรทดสดทายของไฟลเดมดงน

รปท 3.10 แสดงโคดโปรแกรม

3. อานขอมลจากเทกซไฟลน ามาแสดงผลทางหนาเวบเพจ

Page 47: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

Page 48: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 48

รปท 3.12 แสดงการทดสอบการท างาน

Page 49: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

Page 50: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 50

โคดของฟอรม

อธบายโปรแกรม

ในสวนของฟอรมนน จะเปนภาษา HTML ซงเปนพนฐานของการเขยนเวบไซต ในทนจะไมอธบายอยาง

ละเอยดแตจะอธบายในสวนทส าคญๆ เทานน จากโคดจะไดหนาเวบเพจดงรปท 4.1

2. เขยนโคดรบคาจากฟอรม

หลงจากเขยนหนาฟอรมไวเรยบรอยแลวขนตอนตอไปนจะเปนการรบคามาเกบไวในตวแปรเพอเตยม

พรอมในการใชงานดงน

3. สรางไฟลสครปต

ขนตอนนจะน าคาในตวแปรมาเขยนลงไฟลสครปต โดยจะสรางไฟลสครปตชอ matrix.sce ดงน

บรรทดท 8 สรางตวแปร $data เกบขอมลทจะเขยนลงไฟล

สรางตวแปรเกบคาสมาชกของเมทรกซ

แตละตว เปน $d1 ,$d2 $d3, $d4

Page 51: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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 ใน

การเปดไฟลเพออานผลลพธและสงไปแสดงยงเวบบราวเซอร ใหเขยนโคดเพมดงน

Page 52: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 52

บรรทดท 19 เปดไฟล matrix.txt แบบอานอยางเดยว แลวเกบไวในตวแปรไฟล

บรรทดท 20 ท าการอานไฟลไปเรอยๆ จนกวาเงอนไข while จะมคาเปนเทจ (Flase) จะไดคา Flase

กตอเมออานไฟลไปจนถงจดสนสดของไฟล (End Of File)

บรรทดท 21 แสดงผลลพธทไดจากการอานไฟล โดยก าหนดรปแบบการแสดงผลขอมลเปนทศนยม

ไมเกน 7 ต าแหนง

เสรจจากขนตอนนแลวจะไดไฟล PHP ทสมบรณเพอท างานในฝงเซฟเวอร สรปไฟล matrix.php ท

สมบรณจะไดดงน

Page 53: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 53

เมอไดไฟลทสมบรณแลว ใหทดสอบการท างานเมอรนโปรแกรมแลวจะไดดงรปท 4.3 กรอกตวเลข

สมาชกของเมทรกซ A ลงไปในฟอรม คลกปม Submit จะไดผลลพธดงรปท 4.4

รปท 4.3 ฟอรมกรอกขอมล

รปท 4.4 ผลลพธทไดจากการค านวณ

Page 54: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 54

ในตวอยางนจะเปนการหาค าตอบของสมาการพหนาม เมอ y มคาเทากบ 0 เชน 2x3+5x2-2 = 0

ส าหรบค าตอบทไดนนจะมค าตอบเทากบเลขชก าลงตวทมากทสดของสมการพหนาม ซงในตวอยางน

จะใหแสดงสมาการทเรากรอกลงไปในรปแบบทสามารถเขาใจไดงาย

ตวอยางเชน 2x3+5x2-2

จากสมาการตวอยาง ในโปรแกรม SCILAB จะไมสามารถบนทกขอมลใหอยในรปแบบนได แตจะ

บนทกผลลพธเปนเทกซไฟล เชน -2+5\*x+2\*x^{3} ดงนนเราจงตองสรางฟงกชน เพอทจะแปลงคาท

ไดเปนรปแบบทเราอานไดงาย ดงน

รปท 4.5 แสดงฟงกชน pohtml ทเราสรางขน

2. การหาค าตอบของสมการพหนาม

Page 55: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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 ทจะใชในการค านวณ

Page 56: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

Page 57: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

Page 58: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 58

รปท 4.8 แสดงผลลพธทไดจากการอานไฟล

Page 59: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 59

ในตวอยางนนนเปนการวาดกราฟของสมการพหนามดงนนผลลพธทไดนนจะแตกตางจากตวอยางท

ผานมา เนองจากจะไดผลลพธเปนไฟลภาพ (.gif) โดยเราจะวาดกราฟดวยฟงกชน plot(x,y) และบนทกผลลพธ

ดวยฟงกชน xs2gif()

ในการพฒนาเวบแอปพลเคชนนนปจจบนนยมใชเทคนค Ajax เขามาชวยในการท างานระหวางเครองไคล

เอนกบเซรฟเวอร เพอใหการตรวจสอบขอผดพลาดนนท าไดงาย ดงนนในตวอยางนเราจะมาลองใช Ajax ใน

การท างานรวมกบ PHP และ SCILAB ซงการพฒนานน เราจะสรางฟอรมซงจะอยในเพจเดยวกนกบเพจทใชใน

การแสดงผล โดยจะใช Ajax เขามาชวยในการสงขอมลจากฟอรมแลวน ากลบมาแสดงผล ซงมขนตอนดงน

1. ออกแบบหนาจอเพอรบและแสดงผลกราฟดงรปท 4.9 จากนน Save ชอ gra.html

รปท 4.9 แสดงฟอรมกรอกขอมลเพอวาดกราฟ

3. การวาดกราฟของสมการพหนาม

Page 60: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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 &amp; 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">สมการ&nbsp;&nbsp;&nbsp; <input type="text" name="poly" id="poly"/>&nbsp; <button id="btnGrap">ค านวณ</button> &nbsp;<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>

Page 61: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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>

Page 62: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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

Page 63: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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>

Page 64: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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>

Page 65: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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 ดงน

Page 66: 1. Scilab และ PHP

คมอการเขยนโปรแกรม 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)">

Page 67: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 67

3. เมอคลกปม ค านวณ จะไดกราฟดงรปท 4.12

รปท 4.12 แสดงกราฟของสมการ 2x3 + 4x2 – 5

4. คลกปม เคลยรคา ขอมลทปรากฏอยกจะหายไปดงรปท 4.13

รปท 4.13 แสดงหนาจอเมอมการคลกปม เคลยรคา

Page 68: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 68

5. ทดสอบฟงกชนการตรวจสอบขอมลโดยกรอกตวอกษรลงในชอง คาเรมตน คาสะสม และคาสนสด ดง

รปท 4.14

รปท 4.14 แสดงการตรวจสอบขอมล

Page 69: 1. Scilab และ PHP

คมอการเขยนโปรแกรม PHP ตดตอ SCILAB | ผศ.ดร.ปยะ โควนททววฒน | นายวโรจน แกวเรอง 69

เอกสารอางอง

[1] สมศกด โชคชยชตกล. 2550. Insight PHP ฉบบสมบรณ(พมพครงท7). กรงเทพฯ:โปรวชน.

[2] บญชา ปะสละเตสง. 2551. พฒนาเวบดวยเทคนค Ajax และ PHP. กรงเทพฯ:ซเอดยเคชน.

[3] บญชา ปะสละเตสง. 2551. ออกแบบและพฒนาเวบไซตดวย DHTML. กรงเทพฯ:ซเอดยเคชน

[4] ปยะ โควนททววฒน. 2549. คมอโปรแกรมภาษา SCILAB ส าหรบผเรมตน (พมพครงท 2). กรงเทพฯ : ศนย

ผลตต าราเรยนสถาบนเทคโนโลยพระจอมเกลาเจาพระนครเหนอ.