การเขียนเว็บเพจ ด้วยพีเอชพี (PHP) ติดต่อฐานข้อมูลมายเอสคิวแอล (MySQL) เบื้องต้น

ปรับปรุง : 2550-02-23 (ปรับก่อนเมษายน)
โครงการอบรมการเขียนเว็บเพจพีเอชพี (PHP) ติดต่อฐานข้อมูลมายเอสคิวแอล (MySQL)
บทเรียน
1. ความรู้เบื้องต้น
2. การเลือกตามเงื่อนไข
3. การทำซ้ำ
4. การส่ง และรับค่า
5. ฟังก์ชัน
6. คำสั่งเอสคิวแอล
7. พีเอชพี และมายเอสคิวแอล
8. กรณีศึกษาระบบสมาชิก
9. กรณีศึกษาระบบเว็บบอร์ด
99. ตัวอย่างรหัสต้นฉบับ

วันที่ 1 9.00 - 10.30 น. ความรู้เบื้องต้น
- ความรู้เบื้องต้นเกี่ยวกับเว็บเซิร์ฟเวอร์ (Web Server)
- ความรู้เบื้องต้นเกี่ยวกับภาษาพีเอชพี (PHP)
- ความรู้เบื้องต้นเกี่ยวกับมายเอสคิวแอล (MySQL)
- การเขียนโปรแกรมด้วยพีเอชพีเบื้องต้น 10.40 - 12.00 น. การโปรแกรมเบื้องต้น
- การเลือกตามเงื่อนไข (Decision)
- การทำซ้ำ (Loop) 13.00 - 14.30 น. การส่ง และรับค่าแบบ Get
- การส่ง และรับค่าจาก Get
- การนำค่ามาประมวลผลอย่างง่าย 14.40 - 16.00 น. การส่ง และรับค่าแบบ Post
- การส่ง และรับค่าจาก Post
- การนำค่ามาประมวลผลอย่างง่าย วันที่ 2 9.00 - 10.30 น. การเปิดบริการมายเอสคิวแอล
- การติดตั้ง และเปิดบริการมายเอสคิวแอล (MySQL Service)
- การเข้าใช้มายเอสคิวแอลผ่านบรรทัดคำสั่ง (Command Line)
- คำสั่งเอสคิวแอล (SQL Command) 10.40 - 12.00 น. พีเอชพีมายแอ็ดมิน
- การใช้พีเอชพีมายแอ็ดมิน (phpMyAdmin)
- การสร้างฐานข้อมูล (Create Database)
- การสร้างตาราง (Create Table)
- การเพิ่ม ลบ และแก้ไขข้อมูล 13.00 - 14.30 น. ติดต่อฐานข้อมูล
- การใช้พีเอชพีเชื่อมต่อมายเอสคิวแอล (MySQL Connection)
- การอ่านข้อมูลมาแสดงผล
- การเลือกข้อมูลมาแสดงผลจากฟอร์ม 14.40 - 16.00 น. อ่านข้อมูลจากฐานข้อมูล
- การอ่านข้อมูลมาแสดงข้อมูลในตารางเอชทีเอ็มแอล
- การแสดงผลแยกสีแต่ละบรรทัด วันที่ 3 9.00 - 10.30 น. ปรับปรุงข้อมูล 1
- การแสดงข้อมูลด้วยการสั่งจากฟอร์ม
- การเพิ่มข้อมูลด้วยการสั่งจากฟอร์ม 10.40 - 12.00 น. ปรับปรุงข้อมูล 2
- การลบข้อมูลด้วยการสั่งจากฟอร์ม
- การแก้ไขข้อมูลด้วยการสั่งจากฟอร์ม 13.00 - 14.30 น. ฝึกสร้างฐานข้อมูล
- การสร้างฐานข้อมูลระบบสมาชิก
- การเขียนโปรแกรมจัดการฐานข้อมูลระบบสมาชิก 14.40 - 16.00 น. ศึกษาระบบตัวอย่าง
- ศึกษาระบบต่าง ๆ ที่ไม่ใช้ MySQL
- ศึกษาระบบต่าง ๆ ที่ใช้ MySQL
เช่น Memmysql, Mambo, Moodle, OSCommerce ..
เว็บเซิร์ฟเวอร์ (Web Server)
เครื่องบริการเว็บไซต์ หรือเว็บเพจผ่าน http:// .. .. .. เพื่อให้ได้ข้อมูลทั้งภาพ และเสียงจากผู้ให้บริการ เช่น http://www.google.com เปิดบริการเว็บไซต์ค้นหาข้อมูลจากเครื่องให้บริการที่เรียกว่า Web Server
เครื่องคอมพิวเตอร์ซึ่งให้บริการเว็บไซต์ ผู้ใช้เรียกชมหน้าเว็บไซต์ได้โดยใช้โปรโตคอล HTTP (Port 80) ผ่านทางเว็บบราวเซอร์ (Web Browser)
พีเอชพี (PHP) [wikipedia.org]
ภาษาคอมพิวเตอร์ ประเภท Open Source ที่ใช่กันอย่างแพร่หลาย ซึ่งใช้ในการจัดทำเว็บไซต์ และสามารถประมวลผลออกมาในรูป HTML มีโครงสร้างคำสั่งคล้าย ภาษาซี ภาษาจาวา และ ภาษาเพิร์ล ซึ่งง่ายต่อการเรียนรู้ เป้าหมายหลักของภาษานี้ คือ เป็นเครื่องมือให้นักพัฒนาเว็บไซต์สามารถเขียน เว็บเพจ ที่ตอบโต้กับผู้ใช้ได้
ภาษาแบบ Server-Side Script จึงต้องมีเครื่องบริการ ที่บริการการแปลภาษา เป็นภาษาที่ถูกนำไปใช้พัฒนาเว็บเพจร่วมกับภาษา HTML เดิม PHP พัฒนาจาก ภาษาซี (C Language) และมีโครงสร้างภาษาคล้าย PERL คำว่า PHP ย่อมาจาก Personal Home Page แต่ต่อมาได้พัฒนาให้มีประสิทธิภาพ และเปลี่ยนเป็น Professional Home Page [ php.net ]
มายเอสคิวแอล (MySQL) [wikipedia.org]
โปรแกรมฐานข้อมูล มีหน้าที่เก็บข้อมูลอย่างเป็นระบบ รองรับคำสั่ง SQL (Structured Query Language) เป็นเครื่องมือสำหรับเก็บข้อมูล ที่ต้องใช้ร่วมกับเครื่องมืออื่นอย่างสอดคล้อง เพื่อให้ได้ระบบที่รองรับความต้องการของผู้ใช้ เช่น เครื่องบริการเว็บ (Web Server) และโปรแกรมประมวลผลฝั่งเครื่องบริการ (Server-Side Script)
MySQL เป็นซอฟต์แวร์โอเพนซอร์ส ใช้ในการจัดการดาต้าเบส (Database) โดยใช้ภาษา SQL ถูกพัฒนาโดย บริษัท MySQL AB ในประเทศสวีเดน มีทั้งแบบใช้ฟรี และเชิงธุรกิจ
เอสคิวแอล (SQL)
SQL (Structured Query Language) คือ ภาษาสอบถามข้อมูล หรือภาษาจัดการข้อมูลอย่างมีโครงสร้าง มีการพัฒนาภาษาคอมพิวเตอร์ และโปรแกรมฐานข้อมูลที่รองรับมากมาย เพราะจัดการข้อมูลได้ง่าย เช่น MySQL, MsSQL, PostgreSQL หรือ MS Access เป็นต้น สำหรับโปรแกรมฐานข้อมูลที่ได้รับความนิยมคือ MySQL เป็น Open Source ที่ใช้งานได้ทั้งใน Linux และ Windows
แนะนำเว็บ (Web Guides)
- http://www.thaiall.com/webserver
- http://www.thaiall.com/html/html.htm
- http://www.thaiall.com/php
- http://www.thaiall.com/mysql
- http://www.thaiall.com/source
- http://www.thaiall.com/programming
- http://www.thaiabc.com
1. ความรู้เบื้องต้น (Introduction)
- ติดตั้งโปรแกรมจาก thaiabc.com เพื่อทำให้คอมพิวเตอร์ของตนเองเป็น Web Server (ทดสอบเปิด http://127.0.0.1)
- เขียนโปรแกรมแรกด้วย notepad ชื่อ x.php เก็บใน c:\thaiabc\apache\apache2\htdocs ตามตัวอย่าง ex.101
- เปิด Internet Explorer เปิด URL ชื่อ http://127.0.0.1/x.php เพื่อเริ่มต้นเรียน (ระยะทางหมื่นลี้ เริ่มที่ก้าวแรก)
ex.101

zz101.php
คำสั่ง echo และ print แบบธรรมดา
<?
echo "5";
echo "5" , 5 , 5;
print "5";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
55555
# echo และ print ส่ง String ออกเหมือนกัน
# echo ใช้แสดง String หลายตัว และแยกด้วย , ได้
# print ใช้แสดงหลาย String ที่แยกด้วย , ไม่ได้
ex.102

zz102.php
คำสั่ง echo และ print แบบคำนวณ
<?
echo "5 + 5";
echo '5 + 5';
echo 5 + 5;
echo "<br>";
print "5 + 5";
print '5 + 5';
print 5 + 5;
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
5 + 55 + 510
5 + 55 + 510
# ผลลัพธ์ของการใช้ + กับค่าคงที่ ให้ผลเหมือนกัน
# echo "5 + 5" จะไม่รวมค่าเป็น 10 เพราะผลลัพธ์เป็น String
# echo 5 + 5 ผลลัพธ์เป็นผลรวม
ex.103

zz103.php
คำสั่ง echo และ print แบบใช้ตัวแปร
<?
$a = 5;
echo '$a + $a';
echo "$a + $a";
echo "<br>";
print '$a + $a';
print "$a + $a";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
$a + $a5 + 5
$a + $a5 + 5
# ผลลัพธ์ของการใช้ + กับตัวแปร ให้ผลเหมือนกัน
ex.104

zz104.php
คำสั่ง echo และ print แบบใช้ตัวแปร และคำนวณ
<?
$a = 5;
echo '$a' + ($a + $a);
echo "$a" + ($a + $a);
echo "<br>";
print '$a' + ($a + $a);
print "$a" + ($a + $a);
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
1015
1015
# echo '1' + 2; มีการคำนวณแต่ '1' = 0 ผลลัพธ์จึงเป็น 2
ex.105

zz105.php
แสดงความแตกต่างของ . และ +
<?
echo "1" + 2 . 4 . "<br>";
echo "1" + 2 . 4 + 8 . 16 . "<br>";
echo "1" . 2 + 4 . 8 + 16 + "<br>";
print "1" + 2 . 4 . "<br>";
print "1" + 2 . 4 + 8 . 16 . "<br>";
print "1" . 2 + 4 . 8 + 16 + "<br>";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
34
4216
18434
4216
184
# echo "1" + 2; ให้ผลเป็นการคำนวณ คือ 3
# echo "1" + 2 . 4 + 8; ให้ผลเป็น 3 . 4 + 8 = 34 + 8 = 42
# echo 16 + "<br>"; ไม่ error ผลบวกเป็น 16
# "<br>" ในบรรทัดที่ 4 ไม่ Break เพราะทำหน้าที่เป็นตัวเลข
ex.106

zz106.php
เปรียบเทียบการจับคู่จากข้างหน้าไปข้างหลัง
<?
$a = 5;
echo '$a' . "$a" + 5 . "<br>";
echo ('$a' . "$a") + 5 . "<br>";
echo '$a' . ("$a" + 5) . "<br>";
echo 5 + '$a' . "$a" .  "<br>";
echo (5 + '$a') . "$a" .  "<br>";
echo 5 + ('$a' . "$a") .  "<br>";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
5
5
$a10
55
55
5
# การประมวลผลทำทีละคู่จากข้างหน้าไปข้างหลัง
ex.107

zz107.php
แสดงการใช้คำสั่ง pre ร่วมกับ \n
<?
$a = 5;
echo "<pre>";
echo $a . $a , $a , $a + $a . "\n";
echo '$a' . "$a" + $a . '$a' . "\n";
echo '$a'  , $a + "$a";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
55510
5$a
$a10
ex.108

zz108.php
การใช้ html ร่วมกับ php แบบธรรมดา
<body bgcolor=#ffffdd>
abc
<?
echo "def";
?>
ghi
ตัวอย่างผลลัพธ์ หรืออธิบาย
abc defghi
ex.109

zz109.php
การใช้ html ร่วมกับ php แบบประกาศ แล้วเรียกใช้
<body bgcolor=#ffffdd>
<? $a = "def"; ?>
abc
<?
echo $a;
?>
ghi
ตัวอย่างผลลัพธ์ หรืออธิบาย
abc defghi
# ประกาศตัวแปรแต่ไม่แสดงผล เช่น <? $a = "def" ?>
# เรียกใช้ตัวแปรแยกกับการประกาศอย่างชัดเจน
ex.110

zz110.php
การใช้ html ร่วมกับ php แบบแทรกค่า
<body bgcolor=#ffffdd>
<? $a = "jkl" ?>
abc
<?="def"?>
ghi
<?=$a?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
abc defghi jkl
# ประกาศตัวแปรแต่ไม่แสดงผล เช่น <? $a = "jkl" ?>
# พิมพ์ค่าคงที่ เช่น <?="def"?>
# พิมพ์ตัวแปร หรือค่าคงที่ เช่น <?=$a?>
ex.111

zz111.php
เครื่องหมายสำหรับกำหนดหมายเหตุ
<?
# wow
// wow
/*
wow
*/
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
ไม่แสดงผลใด ๆ
# เครื่องหมาย # นำหน้าบรรทัดที่ไม่ต้องการให้มีการประมวลผล
# เครื่องหมาย // นำหน้าบรรทัดที่ไม่ต้องการให้มีการประมวลผล
# เครื่องหมาย /* สำหรับจุดเริ่มกำหนดหมายเหตุ และปิดด้วย */
2. การเลือกตามเงื่อนไข (Decision)
- นำเสนอ 2 คำสั่ง คือ if และ switch
ex.201

zz201.php
ทดสอบเงื่อนไข
<?
$a = "pass";
if ($a == "pass") {
  echo "ok";
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
ok
# กำหนดค่าให้กับตัวแปร แล้วนำไปเปรียบเทียบ
# การทดสอบให้ใช้เครื่องหมาย ==
ex.202

zz202.php
ทดสอบเงื่อนไข 3 แบบ
<?
$b = 10;
if ($b > 2) {
  echo "ok 1<br>";
}
if ($b < 100) { echo "ok 2<br>"; }
if ($b <> 5) echo "ok 3<br>";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
ok 1
ok 2
ok 3
# ทดสอบเงื่อนไข 3 ครั้ง แต่ละครั้งมีผลการทำงานบรรทัดเดียว
# ทั้ง 3 แบบให้ผลลัพธ์คล้ายกัน และเป็นจริงทุกเงื่อนไข
# > หมายถึง มากกว่า
# < หมายถึง น้อยกว่า
# <> หมายถึง ไม่เท่ากับ
ex.203

zz203.php
ทดสอบเงื่อนไข และใช้ else แบบที่ 1
<?
$a = "neo";
if ($a == "neo") {
  echo "pass";
} else {
  echo "fail";
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
pass
# ถ้าตัวแปร a ไม่ใช่ neo ผลที่ได้จะเป็น fail
ex.204

zz204.php
ทดสอบเงื่อนไข และใช้ else แบบที่ 2
<?
$a = "wow";
if ($a == "neo")
  echo "pass";
else
  echo "fail";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
fail
# ไม่ใช้ { } ก็ได้ ถ้าในเงื่อนไขมีคำสั่งเดียว
ex.205

zz205.php
ทดสอบหลายเงื่อนไข แบบไม่ใช้ else
<?
$a = "th";
if ($a == "us") echo "United State";
if ($a == "th") echo "Thailand";
if ($a == "jp") echo "Japan";
if ($a != "us" && $a != "th"
  && $a != "jp")
  echo "Korea";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
Thailand
# ถ้าไม่เข้า 3 เงื่อนไขแรก จึงจะพิมพ์คำว่า Korea
# != หมายถึง ไม่เท่ากับ
# && หมายถึง และ
# || หมายถึง หรือ
ex.206

zz206.php
ทดสอบหลายเงื่อนไข แบบใช้ if หลัง else
<?
$a = "th";
if($a == "us"){echo "United State";}
else if ($a == "th") echo "Thailand";
  else if ($a == "jp") echo "Japan";
    else if ($a != "us" && $a != "th"
         && $a != "jp")
         echo "Korea";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
Thailand : ok
# if แบบหลายชั้น ที่ซับซ้อน
ex.207

zz207.php
ทดสอบหลายเงื่อนไข แบบใช้ elseif
<?
$a = "th";
if ($a == "us") {
  echo "United State";
} elseif ($a == "th") {
  echo "Thailand";
} elseif ($a == "jp") {
  echo "Japan";
} else { echo "Korea"; }
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
Thailand
# เมื่อเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง จะไม่ตรวจเงื่อนไขต่อไป
# ถ้าไม่เข้า 3 เงื่อนไขแรก ก็จะแสดงคำว่า Korea
ex.208

zz208.php
เลือกเงื่อนไขด้วย switch และ case
<?
$a = "th";
switch($a) {
  case "us";
    echo "United State : ok";
    break;
  case "th";
    echo "Thailand : ok";
    break;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
Thailand : ok
# แต่ละกรณีต้องปิดด้วย break;
ex.209

zz209.php
เลือกเงื่อนไขด้วย switch และ default
<?
$a = "cc";
switch($a) {
  case "aa";
    echo "aa : ok";
    break;
  case "bb";
    echo "bb : ok";
    break;
  default;
    echo "default : ok";
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
default : ok
# default ถูกใช้สำหรับกรณี ไม่เข้าเงื่อนไขใดเลย
3. การทำซ้ำ (Loop หรือ Repeation)
- นำเสนอ 3 คำสั่ง คือ for, while และ foreach
- foreach ใช้อ่าน array หรือ hash array มาทีละค่า
ex.301

zz301.php
ทำซ้ำด้วย for พิมพ์ 1 ถึง 5
<?
for($i=1;$i<=5;$i++){
  echo $i;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
12345
# เริ่มต้นที่ 1 และทำในขณะที่น้อยกว่าหรือเท่ากับ 5
# กิจกรรมใน Block ของ for คือพิมพ์ตัวแปร i
ex.302

zz302.php
ทำซ้ำด้วย for พิมพ์ 1 ถึง 5 แบบแทรกใน HTML file
<body bgcolor=yellow>
<? for($i=1;$i<=5;$i++){ ?>
<?=$i?>
<br>
<?}?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
1
2
3
4
5
# แทรก code เข้าไปใน HTML file
ex.303

zz303.php
ทำซ้ำด้วย while พิมพ์ 1 ถึง 5 แบบกำหนดค่าเริ่มที่ 1
<?
$i = 1;
while($i <= 5) {
  echo $i;
  $i++;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
12345
# $i++ มีความหมายเท่ากับ $i = $i + 1;
# $i++ หมายถึงเพิ่มค่าให้กับ $i อีก 1
ex.304

zz304.php
ทำซ้ำด้วย while พิมพ์ 1 ถึง 5 แบบกำหนดค่าเริ่มที่ 0
<?
$i = 0;
while($i < 5) {
  $i++;
  echo $i;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
12345
# ใน Block มี 2 คำสั่ง เริ่มต้นด้วยการเพิ่มค่า แล้วพิมพ์ 5 ครั้ง
ex.305

zz305.php
การอ่าน array ด้วย foreach
<?
$ar = array("200","900");
foreach ($ar as $key => $value) {
  echo $key,$value,"<br>";
}
foreach ($ar as $value) {
  echo $value,"<br>";
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
0200
1900
200
900
# ใช้ foreach อ่าน array ค่าของ key เริ่มจาก 0
# array คือตัวแปร ที่มี key เป็นเลขลำดับเริ่มต้นจาก 0
ex.306

zz306.php
การอ่าน hash array ด้วย foreach
<?
$ar['tom'] = 200;
$ar['boy'] = 900;
foreach ($ar as $key => $value) {
  echo $key,$value,"<br>";
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
tom200
boy900
# ใช้ foreach อ่าน hash array
# hash array คือ array ที่มี key เป็น String
ex.307

zz307.php
พิมพ์ตัวเลขแยกสี แบบใช้ตัวแปร 2 ตัว
<?
echo "<font color=red>";
$c=1;
for($i=1;$i<=5;$i++) {
 if ($c == 1) {
  $c = 0;
  echo "$i<br>";
 } else {
  $c = 1;
  echo "<font color=blue>$i</font><br>";
 }
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ใช้ if เลือกพิมพ์ตัวเลขแยกสีแต่ละบรรทัด
ex.308

zz308.php
พิมพ์ตัวเลขแยกสี แบบใช้ตัวแปรเดียว
<?
echo "<font color=green>";
for($i=1;$i<=5;$i++) {
 if ($i % 2 == 0) {
  echo "$i<br>";
 } else {
  echo "<font color=blue>$i</font><br>";
 }
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ใช้ %(mod) ร่วมกับ if เลือกพิมพ์ตัวเลขแยกสี
# mod คือ การหารเพื่อหาเศษจากการหาร
4. การส่ง และรับค่าแบบ Get และ Post
- Get มักใช้กับข้อมูลที่ไม่เป็นความลับ หรือต้องการตรวจสอบ
- Post มักใช้กับข้อมูลที่เป็นความลับ
ex.401

zz401.htm
ฟอร์มส่งค่าแบบ get
<form action=zz402.php method=get>
<input name=a value=5><br>
<input name=b value=6><br>
<input type=submit>
</form>
ตัวอย่างผลลัพธ์ หรืออธิบาย

# default method คือ get
# ถ้าไม่กำหนด method ค่าที่กำหนดให้ก็คือ get
# โปรแกรมนี้ชื่อ zz401.htm ส่งข้อมูลให้ zz402.php ไปใช้
# ไม่กำหนด value ค่าเริ่มต้นก็จะไม่มี
# <! ... > คือ Tag สำหรับหมายเหตุ หรือ Comment ของ HTML
ex.402

zz402.php
รับค่าจากฟอร์มมาประมวลผล
<?
echo $_GET["a"];
echo $_GET["b"];
echo $_GET["a"] + $_GET["b"];
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
5611
# รับค่าจาก zz401.htm มาแสดงผล และคำนวณ
# URL ที่แสดงในช่อง Address จะพบ zz402.php?a=5&b=6
ex.403

zz403.htm
ฟอร์มส่งค่าแบบ post
<form action=zz404.php method=post>
<input name=c value=7><br>
<input name=d value=8><br>
<input type=submit>
</form>
ตัวอย่างผลลัพธ์ หรืออธิบาย

# post ทำให้ค่าที่ส่งไป ไม่แสดงค่าใน URL
# โปรแกรมนี้ชื่อ zz403.htm เพราะไม่มี php จึงมีสกุล .htm ได้
ex.404

zz404.php
รับค่าจากฟอร์มมาประมวลผล
<?
echo $_POST["c"];
echo $_POST["d"];
echo $_POST["c"] * $_POST["d"];
echo $_REQUEST["c"] , $_REQUEST["d"];
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
785678
# รับค่าจาก zz403.htm มาแสดงผล และคำนวณ
# URL ที่แสดงในช่อง Address จะพบเฉพาะ zz404.php
# REQUEST ถูกใช้แทน POST หรือ GET ได้
ex.405

zz405.htm
ฟอร์มส่งค่าแบบ post
<form action=zz405.htm method=post>
<input type=text name=a value="boy"><br>
<input type=checkbox name=b checked><br>
<input type=radio name=c value="A"><br>
<input type=radio name=c value="B"><br>
<input type=radio name=c value="C"
checked><br>
<select name=d size=4>
<option value=th>Thailand
<option value=us selected>United State
<option value=jp>Japan
</select><br>
<textarea name=e rows=4 cols=20>
hello
</textarea>
<input type=submit name=f value=click>
</form>
ตัวอย่างผลลัพธ์ หรืออธิบาย








# ฟอร์มส่งค่า กำหนดได้หลายแบบ ตัวอย่างนี้มี 6 แบบ
# ได้แก่ text, checkbox, radio, select, textarea, submit
ex.406

zz406.php
รับค่าจากฟอร์ม ที่ส่งมาในรูปแบบต่าง ๆ
<?
echo $_POST["a"]."<br>";
echo $_POST["b"]."<br>";
echo $_POST["c"]."<br>";
echo $_POST["d"]."<br>";
echo $_POST["e"]."<br>";
echo $_POST["f"]."<br>";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
boy
on
C
us
hello
click
# ทั้ง 6 ค่าเปลี่ยนได้ ถ้าเปลี่ยนใน zz405.htm หรือ zz406.php
ex.407

zz407.php
รวมฟอร์มส่งค่า และรับมาประมวลผล
<form action=zz407.php>
<input name=n value=3>
<input type=submit>
</form>
<?
if (isset($_GET["n"])) {
  for ($i=1;$i<=$_GET["n"];$i++){
    echo $i."<br>";
  }
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย


1
2
3
# isset คือ ตรวจสอบว่ามีตัวแปร $_GET["n"] หรือไม่
# ตัวอย่างนี้รวมทั้งส่วนส่งค่า และรับค่าเข้าด้วยกัน
# ประหยัดจำนวนแฟ้ม จาก 2 แฟ้ม เหลือ 1 แฟ้ม
ex.408

zz408.php
ฟอร์มส่ง และรับที่ใช้ while และ request
<form action=zz408.php method=post>
<input name=n1 value=15>
<input name=n2 value=18>
<input type=submit>
</form><pre>
<?
if (isset($_REQUEST["n1"])) {
  $n = $_REQUEST["n1"];
  while ($n <= $_REQUEST["n2"]) {
    echo $n."\n";
    $n++;
  }
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย



15
16
17
18
# isset คือ ตรวจสอบว่ามีตัวแปร $_REQUEST["n1"] หรือไม่
# รับค่ามาใช้ใน while แล้วพิมพ์ตั้งแต่ n1 ถึง n2
5. ฟังก์ชัน (Functions)
- มีหลักพัน รู้จักแค่หลักร้อย แต่ใช้แค่หลักสิบ
- ไม่จำเป็นจำได้ทุกตัว แต่รู้ว่ามีให้ใช้ และเลือกใช้ได้อย่างเหมาะสม .. ก็พอ
- Function แบบสร้างขึ้นใช้เอง แบ่งเป็น internal และ external มีความสำคัญมาก
ex.501

zz501.php
แสดงค่า Configuration
<?
phpinfo();
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
ตาราง แสดงข้อมูลมากมาย
# ดูว่าสนับสนุน GD เพื่อเขียนภาพ Graphic หรือไม่
# ดู DOCUMENT_ROOT ใน Environment เป็นต้น
ex.502

zz502.php
คำสั่งตัดคำด้วยคำสั่ง substr
<?
$a = "abcde";
echo substr($a,0,2) , "<br>";
echo substr($a,2,2) , "<br>";
echo substr($a,2) , "<br>";
echo substr($a,-2) , "<br>";
echo strlen("abc") , "<br>";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
ab
cd
cde
de
3
# ควรหาคำตอบ ว่าคำสั่ง และผลลัพธ์ เป็นเช่นนั้น เพราะอะไร
ex.503

zz503.php
ฟังก์ชันเกี่ยวกับเวลา และการสุ่ม
<?
srand(microtime()*1000000);
echo rand(1,10)."<br>";
echo microtime()."<br>";
echo microtime() + microtime()."<br>";
echo time()."<br>";
echo date("d/m/Y H:i:s")."<br>";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
2
0.04055200 1146796189
0.081168
1146796189
05/05/2006 09:29:49
# แสดงฟังก์ชันเกี่ยวกับเวลา และค่าที่ได้จากการสุ่ม
# rand มาจากคำว่า random แปลว่าสุ่ม ได้ค่าระหว่าง 1 ถึง 10
ex.504

zz504.php
ฟังก์ชัน require และ include แบบ html
<body>
<? require("zz502.php"); ?>
<hr>
<? include("zz503.php"); ?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ถ้าพบ error ในแฟ้ม x.php จะเป็น Fatal Error
# ถ้าพบ error ในแฟ้ม y.php จะเป็น Warning
# ตามทฤษฎี เขาว่าอย่างนั้น
ex.505

zz505.php
zz505a.php
zz505b.php
ฟังก์ชัน require และ include แบบเต็ม
<?
$a=1;
$b="one";
?>
<?
# zz505a.php
require("zz505.php");
echo $a,$b;
?>
<?
# zz505b.php
include("zz505.php");
echo $a,$b;
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
1one
# ตัวอย่างนี้มี 3 แฟ้ม คือ setvar.php use1.php use2.php
# โปรแกรมกำหนดค่าให้โปรแกรมอื่นเรียกใช้ คือ setvar.php
# โปรแกรมเรียกใช้แฟ้มกำหนดค่าคือ use1.php และ use2.php
ex.506

zz506.php
ฟังก์ชันตรวจสอบตัวแปร
<form action=zz506.php method=post>
<input name=pass>
<input type=submit>
</form>
<? if (!isset($_POST["pass"])) exit; ?>
Test Test Test
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ถ้ามีตัวแปร pass ส่งเข้ามา ก็จะพิมพ์ Test 3 คำ
ex.507

zz507.php
สร้างฟังก์ชันแบบ internal แบบธรรมดา
<?
a();
echo "b";
a();
?>
bb
<?
function a() {
  echo "a";
  echo "x";
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
axbaxbb
# แสดงการประกาศฟังก์ชันครั้งเดียว แต่เรียกใช้ 2 ครั้ง
ex.508

zz508.php
สร้างฟังก์ชันแบบ internal แบบรับค่า
<?
a(5,6);
function a($b1,$b2) {
  echo "$b1 + $b2 = ", $b1 + $b2;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
5 + 6 = 11
# ส่งค่าให้กับฟังก์ชันใช้งาน
ex.509

zz509.php
สร้างฟังก์ชันแบบ internal แบบรับ และคืนค่า
<?
echo a(5,6);
echo a(5,6);
function a($b1,$b2) {
  $t = $b1 + $b2;
  return $t;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
1111
# แสดงการรับปกติ
# คืนค่าให้ฟังก์ชันด้วย return
ex.510

zz510.php
สร้างฟังก์ชันแบบ internal แบบคืนค่า
<?
$b1 = 5;
$b2 = 6;
echo a(),b();
function a() {
  global $b1,$b2;
  $t = $b1 + $b2;
  return $t;
}
function b() {
  global $b1,$b2;
  $t = $b1 + $b2;
  return $t;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
1111
# ส่งผ่านตัวแปรแบบ global เข้าไปในฟังก์ชัน
# ต้องประกาศแบบ global ในทุกฟังก์ชัน
# ประกาศข้างนอก ก็ยังไม่สามารถใช้ใน function
6. คำสั่งเอสคิวแอล (SQL Command)
- ระเบียน (Records) มักหลายถึงบรรทัด เช่นตารางพนักงาน 100 คน มักหมายถึง 100 ระเบียน
- เขตข้อมูล (Fields) มักหมายถึงหลัก เช่นตารางพนักงาน เก็บรหัส ชื่อ และเงินเดือน จะหมายถึง 3 เขตข้อมูล
- กดปุ่ม ลูกศรขึ้น สามารถเรียกคำสั่งเก่ามาทำงาน เหมือน Doskey ใน DOS
ex.601
เข้าสู่ MySQL Command Line
C:\>cd c:\thaiabc\mysql\bin
C:\thaiabc\mysql\bin> mysql -u root -p
enter 
mysql> help;
mysql> \s
mysql> quit;
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ตัวอย่างนี้ มี user คือ root และรหัสผ่านว่างไว้
# แสดงส่วนช่วยเหลือ
# แสดงสถานะ เช่นรุ่นของ MySQL หรือเวลาที่เปิดบริการ MySQL
# เลิกการทำงาน
# ตัวอย่างนี้จะใช้ได้ ถ้า Start MySQL ไว้แล้ว
# ตัวอย่างนี้ใช้โปรแกรม thaiabc4b จาก thaiabc.com
ex.602
สร้าง แสดง และเข้าฐานข้อมูล
mysql> create database oho;
mysql> show databases;
mysql> use oho;
ตัวอย่างผลลัพธ์ หรืออธิบาย
| Database |
+----------+
| mysql    |
| oho      |
| test     |
# สร้างฐานข้อมูลใหม่ชื่อ oho
# แสดงรายชื่อฐานข้อมูล
# ถ้าไม่เข้าฐานข้อมูล จะใช้คำสั่งจัดการตารางไม่ได้
ex.603
สร้างตารางไว้เก็บข้อมูล
mysql> create table wow1(
    ->xid int ,
    ->xname  varchar(50),
    ->xsalary  double
    ->);
mysql> create table w(w1 int, w2 int);
mysql> show tables;
ตัวอย่างผลลัพธ์ หรืออธิบาย
# แบบของ Field หรือ Data Type ของ mysql
ที่พบใน phpmyadmin มี 27 แบบ ได้แก่ VARCHAR TINYINT TEXT DATE SMALLINT MEDIUMINT INT BIGINT FLOAT DOUBLE DECIMAL DATETIME TIMESTAMP TIME YEAR CHAR TINYBLOB TINYTEXT BLOB MEDIUMBLOB MEDIUMTEXT LONGBLOB LONGTEXT ENUM SET BINARY VARBINARY
# อาจพิมพ์หลายบรรทัด หรือบรรทัดเดียวก็ได้
# แสดงรายชื่อตาราง เพื่อดูว่าสร้างสำเร็จหรือไม่
ex.604
เพิ่มหลายระเบียน และอ่านมาแสดง
mysql> insert into w values(1,10);
mysql> insert into w values(1,10);
mysql> insert into w values(1,10);
mysql> select * from w;
ตัวอย่างผลลัพธ์ หรืออธิบาย
# เพิ่มข้อมูลเหมือนกันได้ เพราะไม่ใช่ primary key
# ถ้าไม่ต้องการให้รับข้อมูลซ้ำกันต้องกำหนดเป็น primary key
# สามารถกำหนดต่อท้าย Data type ได้หลายแบบ
# 1. primary key not null auto_increment
# 2. primary key auto_increment
# 3. primary key
# auto_increment ใช้ mysql> insert into w values('',10);
ex.605
เพิ่มหนึ่งระเบียนหลายเขตข้อมูล
mysql> insert into wow1 values(
    ->1,
    ->"boy",
    ->5000);
mysql> select xid,xname from wow1;
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ตัวอย่างมี 4 บรรทัด แต่สามารถพิมพ์ให้จบใน 1 บรรทัดได้
# เลือกข้อมูลมาแสดงเพียง 2 เขตข้อมูล
ex.606
เลือกข้อมูลได้หลายแบบ
mysql> select count(xid) from wow1;
mysql> select sum(xsalary) from wow1;
mysql> select max(xid) from wow1;
mysql> select min(xid) from wow1;
mysql> select avg(xid) from wow1;
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ใช้ฟังก์ชัน หาจำนวนระเบียน
# ใช้ฟังก์ชัน หาผลรวมเงินเดือน
# ใช้ฟังก์ชัน หาเงินเดือนสูงสุด
# ใช้ฟังก์ชัน หาเงินเดือนต่ำสุด
# ใช้ฟังก์ชัน หาค่าเฉลี่ยเงินเดือน
ex.607
เลือกแบบมีเงือนไข
mysql> select * from wow1 where xid=1;
mysql> select * from w order by w2 desc;
mysql> show columns from wow1;
ตัวอย่างผลลัพธ์ หรืออธิบาย
# เลือกเฉพาะที่ xid = 1
# อ่านมาแสดงทั้งหมด แต่เรียงตาม w2 จากมากไปน้อย
# แสดงรายชื่อ Column หรือเขตข้อมูลในตาราง wow1
ex.608
การลบระเบียน ลบตาราง หรือลบฐานข้อมูล
mysql> delete from wow1 where xid=1;
mysql> delete from wow1;
mysql> drop table wow1;
mysql> drop database oho;
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ลบระเบียนที่ xid = 1
# ลบทุกระเบียนในตาราง ชื่อ wow1
# ลบตาราง ชื่อ wow1
# ลบฐานข้อมูล ชื่อ oho
ex.609
ปรับปรุงข้อมูล
mysql> update wow1 set xname="tom"
    ->where xid=1;
mysql> update wow1 set
    ->xname="tom",
    ->xsalary=3000
    ->where xid=2;
mysql> update w set w2=5;
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ปรับปรุงตามเงื่อนไข เพียง 1 เขตข้อมูล
# ปรับปรุงตามเงื่อนไข จำนวน 2 เขตข้อมูล
# ปรับปรุงทุกระเบียน
7. พีเอชพี และมายเอสคิวแอล (PHP & MySQL)
- รวมตัวอย่างที่ทำงานร่วมกับ MySQL
- ให้คัดลอก และทดสอบว่ามีผลการทำงาน ตามคาดหวังหรือไม่
- หลายโปรแกรมใช้งานแล้ว ให้กลับไปเลือก s3select เพื่อดูผลลัพธ์
ex.701

s1.php
เมนูเรียกใช้โปรแกรม
<body><ol>
<li>s1connect.php
<li><a href=s2crtdb.php>s2crtdb.php</a>
<li><a href=s3select.php>s3select.php</a>
<li><a href=s4insert.php>s4insert.php</a>
<li><a href=s5delete.php>s5delete.php</a>
<li><a href=s6update.php>s6update.php</a>
<li><a href=s7drop.php>s7drop.php</a>
</ol><hr color=red>
<? require("s3select.php"); ?>
</body>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# เชื่อมต่อไปยังโปรแกรมต่าง ๆ
ex.702

s1connect.php
เชื่อมต่อฐานข้อมูล
<?
$db = "perlphpasp";
$host = "127.0.0.1:3306";
$uname = "root";
$passwd = "";
if (!$connect=mysql_connect($host,$uname,$passwd)){
 echo 'Could not connect to mysql';
 exit;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ติดต่อฐานข้อมูล เพื่อใช้ในโปรแกรมต่าง ๆ
# เปลี่ยนโปรแกรมนี้ให้มีบรรทัดเดียวได้
ex.703

s2crtdb.php
สร้างฐานข้อมูล ตาราง และ 3 ระเบียน
<?
require("s1connect.php");
$tb="worker";
$sql = "create database $db";
  if (!$result=mysql_query($sql,$connect))
    echo "$sql : error<br>";
  else echo "$sql : ok<br>";
$sql="create table $tb (eid char(4),ename char(40))";
  if (!$result=mysql_db_query($db,$sql))
    echo "$sql : error<br>";
  else echo "$sql : ok<br>";
$sql="insert into $tb values('1001','Tom')";
  if (!$result=mysql_db_query($db,$sql))
    echo "$sql : error<br>";
  else echo "$sql : ok<br>";
$sql="insert into $tb values('1002','Dang')";
  if (!$result=mysql_db_query($db,$sql))
    echo "$sql : error<br>";
  else echo "$sql : ok<br>";
$sql="insert into $tb values('1003','Pom')";
  if (!$result=mysql_db_query($db,$sql))
    echo "$sql : error<br>";
  else echo "$sql : ok<br>";
mysql_close($connect);
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# สร้างฐานข้อมูล
# สร้างตาราง
# สร้างระเบียน 3 ระเบียน
ex.704

s3select.php
อ่านข้อมูลมาแสดง
<?
include("s1connect.php");
$tb="worker";
echo "Display records : ";
$query="select * from $tb";
$result = mysql_db_query($db,$query);
if ($result) { echo "OK<br>"; } else { exit; }
while ($object = mysql_fetch_object($result)) {
  echo $object->eid . "  " . $object->ename . "<br>";
}
echo "Total records : ".mysql_num_rows($result);
mysql_close($connect);
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# วนลูปอ่านข้อมูลมาแสดง
ex.705

s4insert.php
เพิ่มข้อมูลใหม่
<body>
<form action=s4insert.php>
<input name=nid value=1004>
<input name=nname value=kmit>
<input type=submit value=s4insert.php>
</form>
<?
require("s1connect.php");
if (!isset($_GET['nid']) || !isset($_GET['nname']))
  exit;
$sql="insert into worker values('$nid','$nname')";
if(!$result=mysql_db_query($db,$sql))
echo "$sql : not found";
else echo "$sql : ok";
mysql_close($connect);
?>
</body>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ฟอร์มส่งข้อมูล
# รับข้อมูล แล้วเพิ่มใน MySQL
ex.706

s5delete.php
ลบข้อมูล
<body>
<form action=s5delete.php>
<input name=delid value=1001>
<input type=submit value=s5delete.php>
</form>
<?
require("s1connect.php");
if (!isset($_GET['delid'])) { exit; }
$sql="delete from worker ";
$sql.="where eid ='".$_GET['delid']."'";
if(!$result=mysql_db_query($db,$sql))
echo "$sql : not found";
else echo "$sql : ok";
mysql_close($connect);
?>
</body>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ฟอร์มส่งข้อมูล
# รับข้อมูล แล้วเลือกลบใน MySQL
ex.707

s6update.php
ปรับปรุงข้อมูล
<body>
<form action=s6update.php>
<input name=updid value=1003>
<input name=updename value=chula>
<input type=submit value=s6update.php>
</form>
<?
require("s1connect.php");
if (!isset($_GET['updid'])) { exit; }
$sql="update worker set ";
$sql.="eid='". $_GET['updid'] ."', ";
$sql.="ename='". $_GET['updename'] ."' ";
$sql.="where eid='". $_GET['updid'] ."'";
if(!$result=mysql_db_query($db,$sql))
echo "$sql : not found";
else echo "$sql : ok";
mysql_close($connect);
?>
</body>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ฟอร์มส่งข้อมูล
# รับข้อมูล แล้วปรับปรุงใน MySQL
ex.708

s7drop.php
ลบฐานข้อมูล
<?
require("s1connect.php");
$sql="drop database $db";
if (!$result=mysql_db_query($db,$sql))
  echo "Database : not found";
else
  echo "Database : droped";
mysql_close($connect);
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ลบฐานข้อมูล
# ทำให้ตาราง และข้อมูลหายทันที
8. กรณีศึกษาระบบสมาชิก (Member System)
- วางแผน และจัดทำระบบ Admin Log In และ Log Out
- สร้างฐานข้อมูล และตาราง ที่ออกแบบมาสำหรับเก็บข้อมูลสมาชิก
- เขียนฟอร์มรับข้อมูล และโปรแกรมนำข้อมูลไปเก็บในฐานข้อมูล
- เขียนโปรแกรมแสดงข้อมูล
- เขียนฟอร์มรับคำสั่งลบ และโปรแกรมสำหรับ ลบข้อมูล
- การเขียนโปรแกรมคือ การทำงานตามที่ผู้ออกแบบระบบออกแบบไว้
ex.801

apply.htm
ฟอร์มสมัครของผู้ใช้ และเข้าระบบ Administrator
<body>
<form action=apply.php method=post>
Name : <input name=mname><br>
Surname : <input name=msurn><br>
Address : <input name=maddr><br>
<input type=submit>
</form>
<form action=session.php method=post>
Admin Password :
<input name=admin type=password><br>
<input type=submit value='Log in'>
</form>
<form action=session.php method=post>
<input type=submit value='Log Out'>
</form>
ตัวอย่างผลลัพธ์ หรืออธิบาย
Name : 
Surname : 
Address : 

Admin Password : 


ex.802

session.php
ตรวจรหัส Admin และเก็บสถานะ Admin
<?
session_start();
$_SESSION['admin'] = "";
if (isset($_POST['admin'])) {
  if ($_POST['admin'] == "p")
    $_SESSION['admin'] = "ok";
}
echo $_SESSION['admin']."<br>";
echo date("d/m/Y H:i:s")."<br>";
?>
<a href=crtdbm.php>crtdbm.php</a>
<a href=display.php>display.php</a>
<a href=apply.php>apply.php</a>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# สำหรับผู้ดูแลระบบ ส่งรหัสผ่านเข้ามาตรวจ
# รหัสที่ถูกต้องตามตัวอย่างคือ p
ex.803

crtdbm.php
สร้างฐานข้อมูล ถ้าเป็น Admin
<?
session_start();
if ($_SESSION['admin'] != "ok") exit;
$db = "mem";
$tb = "member";
$host = "127.0.0.1:3306";
$uname = "admin"; // root
$passwd = "p";
if (!$connect=mysql_connect($host,$uname,$passwd)){
 echo 'Could not connect to mysql';
 exit;
}
$s = "create database $db";
if (!$result=mysql_query($s,$connect))
  echo "$s : error<br>";
else {
  echo "$s : ok<br>";
  $s="create table $tb (";
  $s.="mid int primary key not null auto_increment,";
  $s.="mname char(40),msurn char(40),maddr char(40))";
  if (!$result=mysql_db_query($db,$s))
    echo "$s : error<br>";
  else
    echo "$s : ok<br>";
}
mysql_close($connect);
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# สร้างฐานข้อมูลชื่อ mem
# สร้างฐานข้อมูลชื่อ member
# ไม่จำเป็นต้องใช้ตัวแปรชื่อ $sql จะใช้ $s ก็ได้
ex.804

apply.php
ผู้ใช้สมัครสมาชิก
<?
$db = "mem";
$tb = "member";
$host = "127.0.0.1:3306";
$uname = "admin"; // root
$passwd = "p";
if (!$connect=mysql_connect($host,$uname,$passwd)){
 echo 'Could not connect to mysql';
 exit;
}
if (isset($_POST["mname"]) && isset($_POST["mname"])){
  $sql="insert into $tb values('',";
  $sql.="'".$_POST["mname"]."',";
  $sql.="'".$_POST["msurn"]."',";
  $sql.="'".$_POST["maddr"]."')";
  if (!$result=mysql_db_query($db,$sql))
    echo "$sql : error<br>";
  else {
    echo "$sql : ok<br>";
  }
}
mysql_close($connect);
?>
<br><a href=apply.htm>apply.htm</a>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# รับข้อมูลจากฟอร์มใน apply.htm
# เพิ่มข้อมูลสมาชิกในตาราง
ex.805

display.php
แสดงข้อมูล ถ้าเป็น Admin
<?
session_start();
if ($_SESSION['admin'] != "ok") exit;
$db = "mem";
$tb = "member";
$host = "127.0.0.1:3306";
$uname = "admin"; // root
$passwd = "p";
if (!$connect=mysql_connect($host,$uname,$passwd)){
 echo 'Could not connect to mysql';
 exit;
}
echo "Display Members : <ol>";
$query="select * from $tb order by mid";
if($result = mysql_db_query($db,$query)) {
  while ($object = mysql_fetch_object($result)) {
    echo "<li>" . $object->mid . "<br>";
    echo $object->mname . "<br>";
    echo $object->msurn . "<br>";
    echo $object->maddr . "<br>";
    echo"<a href=del.php?mid=".$object->mid.">x</a>";
  }
  echo "</ol>Total records:".mysql_num_rows($result);
}
mysql_close($connect);
?>
<br><a href=apply.htm>apply.htm</a>
ตัวอย่างผลลัพธ์ หรืออธิบาย
Display Members : 
  1. 3
    tom
    jojo
    thailand
    x
  2. 5
    บุรินทร์
    รุจจนพันธุ์
    ลำปาง
    x
Total records : 2
ex.806

del.php
ลบข้อมูลตาม mid ถ้าเป็น Admin
<?
session_start();
if ($_SESSION['admin'] != "ok") exit;
$db = "mem";
$tb = "member";
$host = "127.0.0.1:3306";
$uname = "admin"; // root
$passwd = "p";
if (!$connect=mysql_connect($host,$uname,$passwd)){
 echo 'Could not connect to mysql';
 exit;
}
if (isset($_GET["mid"])) {
  $sql="delete from $tb where mid =".$_GET["mid"];
  if (!$result=mysql_db_query($db,$sql))
    echo "$sql : error<br>";
  else {
    echo "$sql : ok<br>";
  }
}
mysql_close($connect);
?>
<br><a href=apply.htm>apply.htm</a>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# รับข้อมูลจากฟอร์มใน apply.htm
# ลบข้อมูลสมาชิกในตาราง ตาม mid
9. กรณีศึกษาระบบเว็บบอร์ด (WebBoard System)
- วางแผน แบบไม่มีระบบ Admin
- สร้างฐานข้อมูล และตาราง ที่ออกแบบมาสำหรับเก็บข้อมูล
- เขียนฟอร์มรับข้อมูล และโปรแกรมนำข้อมูลไปเก็บในฐานข้อมูล
- โปรแกรมนี้ยังไม่ยอมให้ผู้ใช้เข้ามาแสดงความคิดเห็น
ex.901

boardf.htm
ฟอร์มรับความคิดเห็น
<body>
<form action=boardi.php method=post>
Subject : <input name=subj><br>
Writer : <input name=writer><br>
Message : <textarea cols=20 rows=5 name=msg>
</textarea><br>
<input type=submit>
</form>
<br><a href=boards.php>boards.php</a>
ตัวอย่างผลลัพธ์ หรืออธิบาย
Subject : 
Writer : 
Message :


ex.902

connect.php
ส่วนเชื่อมต่อฐานข้อมูล
<?
$db = "wboard";
$tb = "webboard";
$host = "127.0.0.1:3306";
$uname = "admin"; // root
$passwd = "p";
if (!$connect=mysql_connect($host,$uname,$passwd)){
 echo 'Could not connect to mysql';
 exit;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# เชื่อมต่อฐานข้อมูล
# ช่วยให้โปรแกรมอื่นมีขนาดสั้นลง
ex.903

crtdb.php
สร้างฐานข้อมูล
<?
require("connect.php");
$s = "create database $db";
if (!$result=mysql_query($s,$connect))
  echo "$s : error<br>";
else {
  echo "$s : ok<br>";
  $s="create table $tb (";
  $s.="wid int primary key not null auto_increment,";
  $s.="subj char(40),writer char(40),";
  $s.="msg char(100))";
  if (!$result=mysql_db_query($db,$s))
    echo "$s : error<br>";
  else
    echo "$s : ok<br>";
}
mysql_close($connect);
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# สร้างฐานข้อมูลชื่อ wboard
# สร้างฐานข้อมูลชื่อ webboard
ex.904

boardi.php
เพิ่มความคิดเห็นใหม่
<?
require("connect.php");
if (isset($_POST["subj"]) && isset($_POST["writer"])){
  $sql="insert into $tb values('',";
  $sql.="'".$_POST["subj"]."',";
  $sql.="'".$_POST["writer"]."',";
  $sql.="'".$_POST["msg"]."')";
  if (!$result=mysql_db_query($db,$sql))
    echo "$sql : error<br>";
  else {
    echo "$sql : ok<br>";
  }
}
mysql_close($connect);
?>
<br><a href=boardf.htm>boardf.htm </a>
<br><a href=boards.php>boards.php</a>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# รับข้อมูลจากฟอร์มใน boardf.htm
# เพิ่มข้อมูลสมาชิกในตาราง
ex.905

boards.php
แสดงข้อมูล
<?
require("connect.php");
echo "<ul>Webboard : <ol>";
$query="select * from $tb order by wid desc";
if($result = mysql_db_query($db,$query)) {
  while ($object = mysql_fetch_object($result)) {
    echo "<li>" . $object->wid . " : ";
    echo $object->subj . " : " . $object->writer;
    echo "<pre>" . $object->msg . "</pre>";
  }
  echo "</ol>Total records:".mysql_num_rows($result);
  echo "</ul>";
}
mysql_close($connect);
?>
<br><a href=boardf.htm>boardf.htm </a>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# แสดงข้อมูลใน Webboard
99. ตัวอย่างรหัสต้นฉบับ (Source Code Sample)
- มีตัวอย่างสั้น ๆ ที่ http://www.thaiall.com/source หรือ http://www.thaiall.com/webserver
webboard.php
- ไม่ใช้ MySQL
- แยกฟังก์ชันภายใน
    ตอนที่ 1 : ระบบเว็บบอร์ด
  1. สร้างห้องชื่อ wb ใน c:\thaiabc\apache\apache2\htdocs
  2. Copy Script จาก http://www.thaiall.com/perlphpasp/source.pl?9119
  3. Ctrl+A ในส่วน Textarea แล้ว copy ไปใส่ใน Notepad เพื่อสร้างแฟ้มชื่อ "webboard.php" ในห้อง wb
  4. เปิด http://127.0.0.1/wb/webboard.php ครั้งแรกจะสร้างแฟ้ม wdata ในห้อง wb สำหรับเก็บข้อมูล
  5. Click ตั้งกระทู้ หรือเปิดประเด็นใหม่ เพื่อตั้งกระทู้ และทดสอบ upload ภาพ
  6. เปลี่ยนค่าของ $webmaster_password เป็น "oho"; // รหัสนี้ใช้ลบกระทู้
  7. เปลี่ยนค่าของ $edit_topic_password เป็น "wow"; // รหัสนี้ใช้แก้ไขกระทู้
  8. มี 2 จุดหลัง เลขเขียน/อ่าน ในหน้ากระทู้ จุดซ้ายสำหรับลบ จุดขวาสำหรับแก้
  9. ฝึกแก้กระทู้ ฝึกลบกระทู้ และฝึกตอบกระทู้
    ตอนที่ 2 : ระบบข่าว
  1. คัดลอกแฟ้ม webboard.php เป็น news.php ไปไว้ในห้อง wb
  2. เปิด news.php ด้วย Notepad แล้วแก้ค่าของ $program_type เป็น "news";
  3. เปิด http://127.0.0.1/wb/webboard.php ครั้งแรกจะสร้างแฟ้ม wdata ในห้อง wb สำหรับเก็บข้อมูล
  4. เพิ่มกระทู้โดยผู้ดูแลด้วย http://127.0.0.1/wb/news.php?action=add_topic
  5. ฝึกเปลี่ยนค่าของ $canreply เป็น "0"; ทำให้ผู้อ่านตอบไม่ได้
  6. ฝึกเปลี่ยนค่าของ $show_header และ $show_footer เป็น "no"
filemanager.php
- ไม่ใช้ MySQL
- แยกฟังก์ชันภายใน
    ตอนที่ 1 : เริ่มใช้งานปกติ
  1. สร้างห้องชื่อ hp ใน c:\thaiabc\apache\apache2\htdocs
  2. Copy Script จาก http://www.thaiall.com/perlphpasp/source.pl?9108
  3. Ctrl+A ในส่วน Textarea แล้ว copy ไปใส่ใน Notepad เพื่อสร้างแฟ้มชื่อ "index.php" ในห้อง hp
  4. เปลี่ยนค่า $web_url เป็น "";
  5. เปิด http://127.0.0.1/hp/index.php เพื่อใช้งาน
  6. Click คำว่า สมัครสมาชิกใหม่ 2 ครั้ง (ถ้าครั้งแรก จะสร้าง user.php ให้)
  7. ฝึกขอพื้นที่โฮมเพจใหม่ เข้าจัดการ เพิ่มแฟ้ม สร้างห้อง ลบแฟ้ม และแก้ไข
  8. จะลบ Folder ได้ต้อง ลบแฟ้มทั้งหมดใน Folder นั้นก่อน
  9. ถ้ามี username ว่า yourname ก็เปิด http://127.0.0.1/hp/yourname
    ตอนที่ 2 : ดูแลระบบ
  1. ถ้าเปลี่ยนค่า $create_user เป็น "0" จะปิดการรับสมาชิกใหม่
  2. ใน คำถาม & คำตอบ ข้อที่ 99 ให้กรอกคำว่า wow แล้ว Click admin_password
  3. ให้ copy thTH6MzTL.xyw ไปแทนค่าในตัวแปร $admin_password
  4. ใน คำถาม & คำตอบ ข้อที่ 98 กรอก รหัสลับ wow และ yourname เพื่อทดสอบลบ
  5. แสดงรายชื่อแฟ้มด้วย http://127.0.0.1/hp/index.php?action=folder_listing
memmysql.php
- ต้องใช้ MySQL
- ไม่สร้างฟังก์ชัน
    ตอนที่ 1 : ฝึกใช้งาน
  1. สร้างห้องชื่อ hp ใน c:\thaiabc\apache\apache2\htdocs
  2. Copy Script จาก http://www.thaiall.com/perlphpasp/source.pl?9121
  3. Ctrl+A ในส่วน Textarea แล้ว copy ไปใส่ใน Notepad เพื่อสร้างแฟ้มชื่อ "memmysql.php" ในห้อง hp
  4. เปิดบริการ MySQL และเปิด http://127.0.0.1/phpmyadmin (User:admin Password:p)
  5. เปิด http://127.0.0.1/hp/memmysql.php?action=admin เพื่อเข้าบริหาร และใช้รหัสผ่าน abc
  6. คัดลอก adMQYOXwuL4hk ไปแทนค่าของ $admin_password แล้วเข้า admin ใหม่
  7. เข้าใช้ครั้งแรกจะสร้างตารางเก็บข้อมูลในฐานข้อมูล Test ให้อัตโนมัติ
  8. เปิด http://127.0.0.1/hp/memmysql.php?action=show เพื่อดูรายชื่อสมาชิก
  9. ฝึกลบข้อมูล หรือเปลี่ยนสถานะของสมาชิก หลังเข้าในฐานะ admin
ผู้สนับสนุน + ผู้สนับสนุน
+ รับผู้สนับสนุน

แนะนำเว็บใหม่ : ผลการจัดอันดับ
รักลำปาง : thcity.com : korattown.com : topsiam.com : มหาวิทยาลัยโยนก
ศูนย์สอบ : รวมบทความ : ไอทีในชีวิตประจำวัน : ดาวน์โหลด : yourname@thaiall.com
ติดต่อ ทีมงาน ชาวลำปาง มีฝันเพื่อการศึกษา Tel.08-1992-7223