•Professional Home Page •PHP Hypertext Processor •Server ......PHP •Professional Home Page...

Post on 18-Jan-2020

20 views 0 download

Transcript of •Professional Home Page •PHP Hypertext Processor •Server ......PHP •Professional Home Page...

PHP

•Professional Home Page•PHP Hypertext Processor•Server Side Script•www.php.net

จุดเดน PHP

• Free• Speed• Open Source• Crossable Platform• Database Access• Protocol Support• Library• Easy

หลักการทํางานของ PHP

client Browser(HTML) Server

PHPInterpreter

PHPLibraries Other

Database

MySQL

ODBC

SQL Server

Access

ผลสงกลับ Browser

Server สงคําสั่ง PHP

สงผลเปน html กลับ Server

แสดงผลใหผูใช

เรียกโปรแกรมPHP ผาน Browser สงตอไป Server

รปูแบบการเขียนสคริปต PHP• ทั่วไป (แบบภาษา SGML)

<?คําสั่งในภาษา PHP;?>

• ลักษณะภาษา XML<?phpคําสั่งในภาษา PHP;?>

รูปแบบการเขียนสคริปต PHP (ตอ)• ลักษณะ Javascript

<Script Language=“php”>คําสั่งในภาษา PHP;</script>

• ลักษณะภาษา ASP<%คําสั่งในภาษา PHP;%>

รูปแบบการเขียนสคริปต PHP (ตอ)

• ลักษณะพิเศษ<%=$ตัวแปร;

คําสั่งในภาษา PHP;%>

หมายเหตุ 1. ทุกคําสั่งใน PHP ตองปดทายดวย ;2. คําสั่งจะเปนตัวพิมพเล็กหรือใหญก็ได3. ทดสอบโปรแกรม phpex_01.php

ชนิดขอมูล

ชนิด คําอธิบาย

IntegerFloating point NumbersStringArrayObjectType juggling

เลขจํานวนเต็ม

เลขจํานวนจริง

ขอความ

อารเรย หรือ แถวลําดับขอมลูลักษณะออปเจ็กต

ขอมลูลักษณะเฉพาะผูใชเติมเขามา

ตัวแปร (Variable)

• ชื่อแทนขอมูล$varname=value;

• การตั้งชื่อ ขึ้นตนดวย $ และตามดวยตัวอักษร ยาว 1 ถงึ 255 ตัวเชน

$Name = “Panutson”;• นอกจากนี้มีตัวแปรระบบ เชน

$SCRIPT_NAME เปนตัวแปรของระบบแสดงชื่อ script PHP ที่กาํลังทํางาน

คาคงที่ (Constant)

• คาคงที่ที่กําหนดโดย PHP (Built-in Constant) เชนTRUE คาคงที่เปนจริงPHP_VERSION คาคงที่แสดงเวอรชันของ PHP

• คาคงที่ที่ผูใชกําหนดเอง (User-defined Constant)DEFINE(ConstName, Value);เชน

DEFINE(“NewLine”,”<BR>\n”);

ตัวดําเนินการ (Operator)

• Arithmetic Operators

+ บวก $c=$a + $b;

- ลบ $c=$a - $b;* คูณ $c=$a * $b;/ หาร $c=$a / $b;% หารเอาเศษ $c=$a % $b;

ตัวดําเนินการ (Operator) (ตอ)

• Assignment Operators

= กําหนดคา $c = 1;

+= เพิ่มคา $c += 1;-= ลบคา $c -= 1;*= คูณคา $c *= 1;/= หารคา $c /= 1;

ตัวดําเนินการ (Operator) (ตอ)

• Bitwise Operators

& And $a & $b

| Or $a | $b~ Not ~$a<< Shift Left $a << $b>> Shift right $a >> $b

ตัวดําเนินการ (Operator) (ตอ)• Comparison Operators

== เทากับ $a == $b

!= ไมเทากับ $a != $b< นอยกวา $a < $b> มากกวา $a > $b<= นอยกวาหรือเทากับ $a <= $b

>= มากกวาหรือเทากับ $a >= $b

ตัวดําเนินการ (Operator) (ตอ)• Incrementing/Decrementing Operators

• String Operator (.) เชน

$a = “Hello...”;$b = $a.”Students”;

++$a เพิ่มคากอน

$a++ เพิ่มคาทีหลัง

--$a ลดคากอน

$a-- ลดคาทีหลัง

ตัวดําเนินการ (Operator) (ตอ)• Logical Operators

and และ $a and $b

&& และ $a && $bor หรือ $a or $b|| หรือ $a || $bxor exclusive or $a xor $b

! ไม !$a

การใสหมายเหตุ (Comment)

• ใชเครื่องหมาย // หรือ # ตามดวยขอความหมายเหตุเชน

echo “Hello..<br>”; //แสดงขอความ Hello..• ถามีหมายเหตุหลายบรรทัด ใช /* ตามดวยขอความ แลวปดดวย */

เชน

/* หมายเหตุบรรทัดที่ 1หมายเหตุบรรทัดที่ 2*/

คําสั่ง echo หรือ print• คําสั่งแสดงขอความหรือขอมูล

echo “ขอความ”;

หรือ

echo ตัวแปร;print “ขอความ”;

หรือ

print ตัวแปร;

เชน $Fname=“Panutson”;echo “Hello...”.$Fname;print $Fname,” สวัสดี”;

• ทดสอบโปรแกรม phpex_02.php ถึง phpex_05.php

คําสั่งเกี่ยวกับเงื่อนไข

• If...elseif...elseรูปแบบคําสั่ง

IF (condition1){instructions;}

ELSEIF (condition2){instructions;}

....ELSE

{instructions;}

คําสั่งเกี่ยวกับเงื่อนไข (ตอ)• Switch...Case

รูปแบบคําสั่ง

Switch (variable)

{

Case expr1;

{instructions;

break;}

Case expr2;

{instructions;

break;}

....

default;

{instructions;}

}

คําสั่งการทํางานวนซ้ํา (Loop)

• คําสั่ง Forรูปแบบคําสั่ง

For ([start]; [condition]; [step]){

instructions;}

โดย start คือคาเริ่มตน condition คือเงื่อนไข

step คือคาเพิ่มขึ้นหรือลด ถาไมระบุถือวาเพิ่มคาครั้งละ 1

คําสั่งการทํางานวนซ้ํา (Loop) (ตอ)

• คําสั่ง Whileรูปแบบคําสั่ง

While (condition){

instructions;[step];

}หมายเหตุ step ถามี จะเปนการกําหนดใหคาของ condition

เปลี่ยนไป

Presenter�
Presentation Notes�
ทดสอบโปรแกรม phpex_10.php�

คําสั่งการทํางานวนซ้ํา (Loop) (ตอ)

• คําสั่ง Do...Whileรูปแบบคําสั่ง

Do{

instructions;[step];

}While (condition)

Presenter�
Presentation Notes�
ทดสอบโปรแกรม phpex_11.php�

คําสั่งการทํางานวนซ้ํา (Loop) (ตอ)

• คําสั่ง Foreachรูปแบบคําสั่ง

Foreach (array_var as value_var){

instructions;}

หมายเหตุ 1. เปนการทํางานวนซ้ํา ตามตัวแปรอารเรย2. ทดสอบโปรแกรม phpex_12.php ซึ่งมีการใชคําสั่ง

While รวมกับ Function list() และ each()แสดงผลเหมือนคําสั่ง Foreach

Presenter�
Presentation Notes�
ทดสอบโปรแกรม phpex_12.php ซึ่งมีการใช้คำสั่ง While ร่วมกับ Function list() และ each() แสดงผลเหมือนคำสั่ง Foreach �

คําสั่งควบคุมการทํางานอื่นๆ

• คําสั่ง Break คือหยุดการทํางาน ถาใชกับคําสั่งวนซ้ําจะออกจากการวนซ้ํา รูปแบบคําสั่ง

Break;• คําสั่ง Continue คือทํางานตอ

ถาใชกบัคําสั่ง For จะกลับไปเพิ่มคาใหกับตัวแปรทันทีถาใชกบัคําสั่ง While จะกลับไปทดสอบตามเงื่อนไขทันทีรูปแบบคําสั่ง

Continue;หมายเหตุ ทดสอบโปรแกรม phpex_13.php และ phpex_14.php

Presenter�
Presentation Notes�
ทดสอบโปรแกรม phpex_13.php และ phpex_14.php�

คําสั่งควบคุมการทํางานอื่นๆ (ตอ)

• คําสั่ง Include คือคําสั่งนําแฟมอื่นมาทํางานรวมกับ script ท

ี่

กําลังทาํงานอยู รูปแบบคําสั่งInclude(‘file’);

file คือแฟมที่ตองการนํามาแทรกใน script ที่ใชงานอยู

หมายเหตุ ทดสอบโปรแกรม phpex_15.php

ฟงกชันของ PHP• ฟงกที่ผูใชสรางเอง

• ฟงกชันที่มากับ PHP เรียกใชงานไดทันทีฟงกชนัที่ผูใชสรางเอง

- ฟงกชันที่ไมมีการสงคารูปแบบ คอื

Function Func_Name(){

Instructions;}

เรียกใชงานโดย Func_Name();

หมายเหตุ ทดสอบโปรแกรม phpex_16.php

Presenter�
Presentation Notes�
ทดสอบโปรแกรม phpex_16.php�

ฟงกชันของ PHP (ตอ)ฟงกชนัที่ผูใชสรางเอง (ตอ)

- ฟงกชันที่มีการสงคาระหวางกันรูปแบบ คอื

Function Func_Name(parameter){

return Instructions;}

เรียกใชงานโดย Func_Name(parameter_value);

หมายเหตุ ทดสอบโปรแกรม phpex_17.php

ฟงกชันของ PHP (ตอ)ฟงกชันทีม่ากับ PHP เรียกใชงานไดทันท ีเชนฟงกชัน ความหมาย หมายเหตุ

date()time()Abs(x)Cos(radain)max(x, y,..)min(x, y,..)log(x)rand()

วันเวลาปจจุบัน

เวลาปจจุบัน

คาสัมบูรณ

คา cosineคาสูงสุด

คาต่ําสุด

logarithm ฐานธรรมชาติ (e)

คาสุม (random no.)

อาจกําหนดรูปแบบได

มุม radian

Presenter�
Presentation Notes�
ทดสอบโปรแกรม phpex_18.php ถึง phpex22.php �

Format date

• a am/pm• A AM/PM• d 01-31• D Mon-Sun• F January-December• g 1-12• G 0-24• h 01-12

• H 00-23• i 00-59 (minute)• J 1-31• l Sunday-Satueday• L Leap year 1 or 0• m 01-12• t จํานวนวันในเดือนนั้น

• Y 2005• y 05

ฟงกชันของ PHP (ตอ)ฟงกชันทีม่ากับ PHP เรียกใชงานไดทันท ี(ตอ) เชนฟงกชัน ความหมาย หมายเหตุ

chdir(directory)mkdir(directory)copy(sour,dest)rename(old,new)mail(to,sub,mes,[h])chr(x)substr(str,start,[len])Etc.

เปลี่ยนไปยังสาระบบที่ตองการ

สรางสาระบบ

สําเนาแฟมขอมลู

เปลี่ยนชื่อแฟมขอมลู

สง mailแปลงรหัส ascii เปนอักขระตัดอักขระที่ตองการออกมา

Presenter�
Presentation Notes�
ทดสอบโปรแกรม phpex_18.php ถึง phpex22.php�

ฟงกชันของ PHP (ตอ)ฟงกชันทีม่ากับ PHP เรียกใชงานไดทันท ีดานแฟมขอมูล เชน

ฟงกชัน ความหมาย

Fopen(filename,mode)Fgetc(file_handle)Feof(file_handle)Fgets(file_handle,len)Rewind(file_handle)Fgetss(file_handle,len)

Fclose(file_handle)

เปดแฟมขอมูล

อานขอมูลทีละอักขระ

ตรวจสอบ end-of-fileอานขอมูลทีละบรรทัดหรือ ตาม lenเลื่อนพอยเตอรไปตนแฟมขอมลู

อานขอมูลทีละบรรทัดหรือ ตาม len โดย ตัดแท็ก html

ปดแฟมขอมลู

Presenter�
Presentation Notes�
ทดสอบโปรแกรม phpex23.php�

ฟงกชันของ PHP (ตอ)ฟงกชันทีม่ากับ PHP เรียกใชงานไดทันท ี(ตอ) ดานแฟมขอมูล เชน

ฟงกชัน ความหมาย

File(filename)Fputs(filename,text)

Fread(file_handle,len)Fseek(file_handle,offset)Readfile(filename)Unlink(filename)

etc.

อานแฟมขอมูลทีละบรรทัดบันทึกลง arrayเขียนขอความลงแฟม ถาเดิมมีขอมูลอยูจะลบขอมลูเดิม

อานขอมูลจากแฟม ระบุความยาว len ไดเลื่อนพอยเตอรไปขางหนาตามตองการ

อานขอมูลจากแฟมขอมูลโดยไมตองเปดแฟม

ลบแฟมขอมลู

Presenter�
Presentation Notes�
ทดสอบโปรแกรม phpex23.php�

Int fopen(string filename, string mode )

• filename ชื่อไฟลที่ตองการเปดหรือสรางขึ้นใหม• Mode วิธีการเปดไฟลไดแก

• ‘r’ อานไดอยางเดียวตัวชี้จะเริ่มตําแหนงเริ่มตนไฟล

• ‘r+’ อานและเขียนตัวชี้จะเริ่มตําแหนงเริ่มตนไฟล

• ‘w’ เขียนไดอยางเดียวตัวชี้จะเริ่มตําแหนงเริ่มตนไฟลถามีไฟล

อยูแลวจะลบขอมูลเดิมทั้งหมด ถาไมมีจะสรางขึ้นใหม

• ‘w+’ อานและเขียนไดอยางเดียวตัวชี้จะเริ่มตําแหนงเริ่มตนไฟล

ถามีไฟลอยูแลวจะลบขอมูลเดิมทั้งหมด ถาไมมีจะสราง

ขึ้นใหม

• ‘a’ เขียนไดอยางเดียวตัวชี้จะเริ่มตําแหนงสิ้นสุดไฟล ถาไมม

จะสรางขึ้นใหม

• ‘a+’ อานและเขียน ตัวชี้จะเริ่มตําแหนงสิ้นสุดไฟล ถาไมม

จะสรางขึ้นใหม

• ตัวอยาง$fxx = @fopen(“c:/php_nuj/test.php”,”r”);

การอานไฟล

• String fgets (int fp [, int length])fp ไฟลพอยเตอร

length ความยาวของขอความโดยเริ่มจากตําแหนงตัวชี้เทากับ length - 1 หากมระบุ 1024

• String fgetc(int fp)fp ไฟลพอยเตอร

• หากพบ EOFจะคืนคา False

• String fgetss(int fp, int length [, string allowable_tags])fp ไฟลพอยเตอร

length ความยาวของขอความโดยเริ่มจากตําแหนงตัวชี้เทากับ length - 1 หากมระบุ 1024

allowable_tags ระบุแท็ก HTML ที่ตองการแสดง

Int fputs(int fp, string str [,int length])

fp ไฟลพอยเตอร

str ขอความที่ตองการเขียนลงไฟล

length ความยาวของขอความที่เขียน

• String fread(int fp, int length)fp ไฟลพอยเตอร

length ความยาวของขอความที่อาน

PHP กบัฐานขอมูล

• dBase• Informix• Microsoft SQL Server• ODBC โดยใชฐานขอมูล Microsoft Access• Oracle• MySQL• etc.

PHP กับฐานขอมูล MySQL

ฟงกชัน ความหมาย

mysql_affected_rowsmysql_change_usermysql_closemysql_connectmysql_create_dbmysql_data_seekmysql_db_query

จํานวนระเบียนในการใช กอนหนาเปลี่ยนชื่อผูใช

ปดการติดตอ MySQLติดตอกับ MySQL Serverสรางฐานขอมูล MySQLเลื่อนพอยเตอรภายใน

สงคิวรีไปยัง MySQL

ฟงกชันสําหรับการติดตอฐานขอมูล MySQL

PHP กับฐานขอมูล MySQL (ตอ)

ฟงกชัน ความหมาย

mysql_drop_dbmysql_errnomysql_errormysql_fetch_arraymysql_fetch_fieldmysql_fetch_lengthsmysql_fetch_object

ลบฐานขอมูล MySQLคาบอกขอผิดพลาดจาก MySQLขอความบอกขอผิดพลาดจาก MySQLคาระเบียนเก็บใน arrayคาขอมูล field เกบ็เปน objectคาขอบเขตแตละผลลัพธ

คาผลลัพธเปน object

ฟงกชันสําหรับการติดตอฐานขอมูล MySQL

PHP กับฐานขอมูล MySQL (ตอ)

ฟงกชัน ความหมาย

mysql_fetch_rowmysql_field_namemysql_field_seekmysql_field_tablemysql_field_typemysql_field_lenmysql_free_result

คาผลลัพธระบุลง arrayคาผลลัพธเปนชื่อ fieldกําหนดพอยเตอรชี้ไปยัง fieldคาผลลัพธเปนชื่อตารางจากชื่อ fieldผลลัพธเปนประเภทของ fieldขนาดของ field ที่กําหนดทําใหหนวยความจําวางมากขึ้น

ฟงกชันสําหรับการติดตอฐานขอมูล MySQL

PHP กับฐานขอมูล MySQL (ตอ)

ฟงกชัน ความหมาย

mysql_insert_idmysql_list_fieldsmysql_list_dbsmysql_list_tablesmysql_num_fieldsmysql_num_rowsmysql_pconnect

ไดคา id ทีส่รางจากคําสั่ง insertแสดงชื่อ fieldsแสดงชื่อฐานขอมูลที่มีใน MySQL Server

แสดงชื่อตารางในฐานขอมูล MySQL

คาผลลัพธเปนจํานวน fieldคาผลลัพธเปนจํานวนระเบียน

เปดการติดตอกับ MySQL Server

ฟงกชันสําหรับการติดตอฐานขอมูล MySQL

PHP กับฐานขอมูล MySQL (ตอ)

ฟงกชัน ความหมาย

mysql_querymysql_resultmysql_select_dbmysql_tablename

สง query ไป MySQLผลลัพธเปนขอมูล

เลือกฐานขอมูล MySQLใหชื่อตาราง

ฟงกชันสําหรับการติดตอฐานขอมูล MySQL

การติดตอฐานขอมูลและแสดงผล

• เริ่มติดตอฐานขอมูล• เลือกฐานขอมูลที่ตองการ• กําหนดคําสั่ง SQL และสั่งใหทํางาน• เก็บขอมูลลงตัวแปร array• นับจํานวนระเบียน• แสดงผลทาง browser• ปดการติดตอกับฐานขอมูล MySQL

เริ่มติดตอฐานขอมูล

• ใชฟงกชัน ดังนี้mysql_connect($hostname, $user,

$password) or die(“message”);เชน

$hostname = “localhost”;$user = “teach”;$password = “”;mysql_connect($hostname, $user,

$password) or die(“ติดตอฐานขอมูลไมได”);

เลือกฐานขอมูลที่ตองการ

• ใชฟงกชัน ดังนี้mysql_select_db($dbname) or die(“message”);เชน

$dbname = “bookshop”;mysql_select_db($dbname) or die(“เลือกฐานขอมูลไมได”);

กําหนดคําสั่ง SQL และสั่งใหทํางาน

• ใชฟงกชัน ดังนี้mysql_query($sql)

เชน

$tblname = “book”;$sql = “select * from $tblname”;mysql_query($sql);

เก็บขอมูลลงตัวแปร array• ใชฟงกชัน ดังนี้

mysql_fetch_array($dbname)• โดยมีรูปแบบคําสั่ง เชน$dbquery = mysql_db_query($dbname, “select *

from $tblname”);$result = mysql_fetch_array($dbname);หมายเหตุ $result เปน array ดังนั้น

$result[0] คือสมาชิกตัวแรกของ arrayหรือ

$result[“barcode”] คือ คาของ field ชื่อ barcode

นับจํานวนระเบียน

• ใชฟงกชัน ดังนี้mysql_num_rows($dbquery)

• จากการเก็บผลลัพธใน array ตามจํานวนระเบียนที่มีอยู ดังนั้นกอน แสดงผลอาจจําเปนตองทราบจํานวนระเบียน

• รูปแบบการใชงาน เชน$dbquery = mysql_db_query($dbname,

“select * from $tblname”);$num_rows = mysql_num_rows($dbquery);

แสดงผลทาง browser

• รูปแบบคําสั่ง ดังนี้เชน$i=0;while ($i < $num_rows){$result = mysql_fetch_array($dbquery);echo “<tr> <td>$result[“barcode”]</td>

<td>$result[“title”]</td><td>$result[“author”]</td><td>$result[“price”]</td> <td>$result[“type”]</td><td>$result[“year”]</td></tr>;

$i++;}

ปดการติดตอกับฐานขอมูล MySQL

• ใชฟงกชัน ดังนี้mysql_close()

หมายเหตุ ทดสอบตัวอยางโปรแกรม phpex_24.php