รูปแบบเว็บเพจต้นแบบ หรือ ร่างโฮมเพจ
บทเรียน
1. ความรู้เบื้องต้น
2. การเลือกตามเงื่อนไข
3. การทำซ้ำ
4. การส่ง และรับค่า
5. ฟังก์ชัน
6. คำสั่งเอสคิวแอล
7. พีเอชพี และมายเอสคิวแอล
8. กรณีศึกษาระบบสมาชิก
9. กรณีศึกษาระบบเว็บบอร์ด
99. ตัวอย่างรหัสต้นฉบับ
หัวข้อสำหรับ 3 วัน : 18 ชั่วโมง
เว็บเซิร์ฟเวอร์ (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
วันที่ 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 ..
แนะนำเว็บไซต์
- thaiall.com/sublime
- thaiall.com/webserver
- thaiall.com/html/html.htm
- thaiall.com/php
- thaiall.com/mysql
- thaiall.com/source
- thaiall.com/programming
- thaiabc.com

กลุ่มเฟส
- ไทย PHP
- Programmer Thai Blood
- สมาคมโปรแกรมเมอร์ไทย
- กลุ่มที่น่าสนใจสาย Developer
Free page : มาสร้างเพจใน github แบบชิลชิลกันดีกว่า
เดี๋ยวนี้นักศึกษามีเวทีไว้นำเสนอผลงานผ่านสื่อสังคมกันมาก ที่ github.com เปิดให้นักพัฒนาได้มี webpage ของตนเองสำหรับเผยแพร่ผลงาน มีขั้นตอนการสมัคร และใช้คอนฟิกง่ายแบบชิลชิล ดังนี้ 1) เข้าเว็บไซต์ github.com แล้ว Sign up ผมใช้อีเมลหลักในการสมัครจะได้ไม่ลืม และกำหนด account เป็น thaiall ทำให้ต่อไปเข้าดูผลงานได้ที่ https://github.com/thaiall/ [keon] 2) สมัครเสร็จก็เข้าระบบผ่าน Sign in 3) เลือก New repository คือ [n.] ที่เก็บ ที่รองรับ, ที่บรรจุ 4) ตั้งชื่อ Repository name เช่น Tech100 แล้วกดปุ่ม Create repository เลย 5) จะสร้าง page ก็เลือกคลิ๊ก Settings ใน Tab menu แล้วลงมาจะพบ Github Pages 6) พบหัวข้อ Theme Chooser กดปุ่ม Choose a Theme แล้วผมเลือก Modernist 7) เข้าสู่การสร้าง index.md ซึ่งเป็นหน้าแรกของ Page อยู่ใต้หัวข้อ code ซึ่งทำการเปลี่ยนแปลงตอนนี้ หรือกลับมาแก้ไขได้ เมื่อกดปุ่ม Commit Change จะพบแฟ้ม _config.yml และ index.md และค่าใน Source ใต้หัวข้อ Github Pages จะเป็น master branch โดยอัตโนมัติ 8) ต่อไปก็สามารถแก้ไข index.md ซึ่งเป็นหน้าแรก สร้าง folder ที่มีแฟ้ม index.md แล้วเรียกใช้ได้ อาทิ /css หรือ /php 9) สร้างแฟ้มใน Master branch อาทิ aboutme.htm 10) ปรับแก้แฟ้ม _config.yml แล้วกำหนดค่าให้ตัวแปร อาทิ theme, title, description, exclude และ include หากไม่ได้เข้าไปแก้ไขก็จะมีเพียง theme: jekyll-theme-modernist 11) เพจของ github ไม่ประมวลผลฝั่งเครื่องบริการ จึงไม่รองรับ php หรือ python แต่ใช้ javascript ได้ จึงสร้าง และดึงโค้ดจาก menu.js ให้แฟ้มอื่นเรียกไปใช้ และรองรับ module จากภายนอก เช่น การแสดงรหัสต้นฉบับให้สวยงาม (Source code) ก็ใช้ SyntaxHighlighter จาก CDN ซึ่งผมใช้กับ /css 12) แฟ้มที่อยู่ใน root directory หรือ sub directory หากไม่เรียกใช้ theme อันโนมัติ ผ่าน index.md ก็ต้อง copy source code ไปวาง เหมือนแฟ้ม aboutme.htm
1. ความรู้เบื้องต้น (Introduction) - ติดตั้งโปรแกรมจาก thaiabc.com หรือ xampp เพื่อทำให้คอมพิวเตอร์ของตนเองเป็น Web Server (ทดสอบเปิด http://127.0.0.1)
- เขียนโปรแกรมแรกด้วย notepad ชื่อ x.php เก็บใน c:\thaiabc\apache\apache2\htdocs ตามตัวอย่าง ex101.php
- เปิด Internet Explorer เปิด URL ชื่อ http://127.0.0.1/x.php เพื่อเริ่มต้นเรียน (ระยะทางหมื่นลี้ เริ่มที่ก้าวแรก)
ex101.php : คำสั่ง echo และ print แบบธรรมดา
<?php
echo "hello world";
echo "5" , 5 , 5;
print "5";
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
helloworld5555

# echo และ print ส่ง String ออกเหมือนกัน
# echo ใช้แสดง String หลายตัว และแยกด้วย , ได้
# print ใช้แสดงหลาย String ที่แยกด้วย , ไม่ได้
ex102.php : คำสั่ง echo และ print แบบคำนวณ
<?php
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 ผลลัพธ์เป็นผลรวม
ex103.php : คำสั่ง echo และ print แบบใช้ตัวแปร
<?php
$a = 5;
echo '$a + $a';
echo "$a + $a";
echo "<br/>";
print '$a + $a';
print "$a + $a";
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
$a + $a5 + 5
$a + $a5 + 5

# ผลลัพธ์ของการใช้ + กับตัวแปร ให้ผลเหมือนกัน
ex104.php : คำสั่ง echo และ print แบบใช้ตัวแปร และคำนวณ
<?php
$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
ex105.php : แสดงความแตกต่างของ . และ +
<?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 เพราะทำหน้าที่เป็นตัวเลข
ex106.php : เปรียบเทียบการจับคู่จากข้างหน้าไปข้างหลัง
<?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
# การประมวลผลทำทีละคู่จากข้างหน้าไปข้างหลัง
ex107.php : แสดงการใช้คำสั่ง pre ร่วมกับ \n
<?php
$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
# หากใช้ pre-format จะใช้ \n ตัดบรรทัดได้
ex108.php : การใช้ html ร่วมกับ php แบบธรรมดา
<body bgcolor=#ffffdd>
abc
<?php
echo "def";
?>
ghi
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
abc defghi
ex109.php : การใช้ html ร่วมกับ php แบบประกาศ แล้วเรียกใช้
<body bgcolor=#ffffdd>
<?php $a = "def"; ?>
abc
<?php
echo $a;
?>
ghi
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
abc defghi

# ประกาศตัวแปรแต่ไม่แสดงผล เช่น <?php $a = "def"; ?>
# เรียกใช้ตัวแปรแยกกับการประกาศอย่างชัดเจน
ex110.php : การใช้ html ร่วมกับ php แบบแทรก tag
<body bgcolor=#ffffdd>
<?php $a = "jkl"; ?>
abc
<?php echo "def"; ?>
ghi
<?php echo $a; ?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
abc defghi jkl

# ประกาศตัวแปรแต่ไม่แสดงผล เช่น <?php $a = "jkl"; ?>
# พิมพ์ค่าคงที่ เช่น <?php echo "def"; ?>
# พิมพ์ตัวแปร หรือค่าคงที่ เช่น <?php echo $a; ?>
ex111.php : เครื่องหมายสำหรับกำหนดหมายเหตุ
<?php
# wow
// wow
/*
wow
*/
?>
<!-- comment -->
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
ไม่แสดงผลใด ๆ

# เครื่องหมาย # นำหน้าบรรทัดที่ไม่ต้องการให้มีการประมวลผล
# เครื่องหมาย // นำหน้าบรรทัดที่ไม่ต้องการให้มีการประมวลผล
# เครื่องหมาย /* สำหรับจุดเริ่มกำหนดหมายเหตุ และปิดด้วย */
2. การเลือกตามเงื่อนไข (Decision) - นำเสนอ 2 คำสั่ง คือ if และ switch
ex201.php : ทดสอบเงื่อนไข
<?php
$a = "pass";
if ($a == "pass") {
  echo "ok";
}
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
ok

# กำหนดค่าให้กับตัวแปร แล้วนำไปเปรียบเทียบ
# การทดสอบให้ใช้เครื่องหมาย ==
อีลอน มัสก์ : การเรียนรู้
$a=1; 
$b=1.0;
$c=1 + 0; 
var_dump($a, $b, $c); // int(1) float(1) int(1)
if($a == $b) echo("<br/>== : เทียบค่า");
if($a === $b) echo("<br/>=== : เทียบค่า และรูปแบบ - false"); 
if($a === $c) echo("<br/>=== : เทียบค่า และรูปแบบ - true"); 	
if($a = $b) echo("<br/>= : ส่งค่าสำเร็จ<br/>");
var_dump($a, $b, $c); // float(1) float(1) int(1)
#ห้องเรียนในอนาคต กับความเหมือนที่แตกต่าง
มองการเรียนรู้เป็นกระบวนการ
แบบ input process output ที่แบ่งแยกมิได้
แต่เชื่อมโยงเป็นขั้นตอนที่เรียกว่าระบบ
การเรียนรู้ = กระบวนการ
การรู้เรื่อง = ผลผลิต
เรื่องที่เรียน = สิ่งนำเข้ากระบวนการ
และการศึกษาเป็นระบบเปิด
ex202.php : ทดสอบเงื่อนไข 3 แบบ
<?php
$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 แบบให้ผลลัพธ์คล้ายกัน และเป็นจริงทุกเงื่อนไข
# > หมายถึง มากกว่า
# < หมายถึง น้อยกว่า
# <> หมายถึง ไม่เท่ากับ
ex203.php : ทดสอบเงื่อนไข และใช้ else แบบที่ 1
<?php
$a = "neo";
if ($a == "neo") {
  echo "pass";
} else {
  echo "fail";
}
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
pass

# ถ้าตัวแปร a ไม่ใช่ neo ผลที่ได้จะเป็น fail
ex204.php :
<?php
$a = "wow";
if ($a == "neo")
  echo "pass";
else
  echo "fail";
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
fail

# ไม่ใช้ { } ก็ได้ ถ้าในเงื่อนไขมีคำสั่งเดียว
ex205.php : ทดสอบหลายเงื่อนไข แบบไม่ใช้ else
<?php
$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
# != หมายถึง ไม่เท่ากับ
# && หมายถึง และ
# || หมายถึง หรือ
ex206.php : ทดสอบหลายเงื่อนไข แบบใช้ if หลัง else
<?php
$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 แบบหลายชั้น ที่ซับซ้อน
ex207.php : ทดสอบหลายเงื่อนไข แบบใช้ elseif
<?php
$a = "th";
if ($a == "us") {
  echo "United State";
} elseif ($a == "th") {
  echo "Thailand";
} elseif ($a == "jp") {
  echo "Japan";
} else { echo "Korea"; }
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
Thailand

# เมื่อเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง จะไม่ตรวจเงื่อนไขต่อไป
# ถ้าไม่เข้า 3 เงื่อนไขแรก ก็จะแสดงคำว่า Korea
ex208.php : เลือกเงื่อนไขด้วย switch และ case
<?php
$a = "th";
switch($a) {
  case "us";
    echo "United State : ok";
    break;
  case "th";
    echo "Thailand : ok";
    break;
}
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
Thailand : ok

# แต่ละกรณีต้องปิดด้วย break;
ex209.php : เลือกเงื่อนไขด้วย switch และ default
<?php
$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 มาทีละค่า
ex301.php : ทำซ้ำด้วย for พิมพ์ 1 ถึง 5
<?php
for($i=1;$i<=5;$i++){
  echo $i;
}
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
12345

# เริ่มต้นที่ 1 และทำในขณะที่น้อยกว่าหรือเท่ากับ 5
# กิจกรรมใน Block ของ for คือพิมพ์ตัวแปร i
ex302.php : ทำซ้ำด้วย for พิมพ์ 1 ถึง 5 แบบแทรกใน HTML file
<body bgcolor=yellow>
<?php for($i=1;$i<=5;$i++){ ?>
<?php echo $i; ?>
<br/>
<?php } ?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
1
2
3
4
5
# แทรก code เข้าไปใน HTML file
ex303.php : ทำซ้ำด้วย while พิมพ์ 1 ถึง 5 แบบกำหนดค่าเริ่มที่ 1
<?php
$i = 1;
while($i <= 5) {
  echo $i;
  $i++;
}
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
12345

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

# ใน Block มี 2 คำสั่ง เริ่มต้นด้วยการเพิ่มค่า แล้วพิมพ์ 5 ครั้ง
ex305.php : การอ่าน array ด้วย foreach
<?php
$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
ex306.php : การอ่าน hash array ด้วย foreach
<?php
$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
ex307.php : พิมพ์ตัวเลขแยกสี แบบใช้ตัวแปร 2 ตัว
<?php
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 เลือกพิมพ์ตัวเลขแยกสีแต่ละบรรทัด
ex308.php : พิมพ์ตัวเลขแยกสี แบบใช้ตัวแปรเดียว
<?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 มักใช้กับข้อมูลที่เป็นความลับ
ex401.php : ฟอร์มส่งค่าแบบ 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
ex402.php : รับค่าจากฟอร์มมาประมวลผล
<?php
echo $_GET["a"];
echo $_GET["b"];
echo $_GET["a"] + $_GET["b"];
// $_REQUEST["a"]
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
5611

# รับค่าจาก zz401.htm มาแสดงผล และคำนวณ
# URL ที่แสดงในช่อง Address จะพบ zz402.php?a=5&b=6
ex403.htm : ฟอร์มส่งค่าแบบ post
<form action=ex404.php method=post>
<input name=c value=7><br/>
<input name=d value=8><br/>
<input type=submit>
</form>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ



# post ทำให้ค่าที่ส่งไป ไม่แสดงค่าใน URL
# โปรแกรมนี้ชื่อ ex403.htm เพราะไม่มี php จึงมีสกุล .htm ได้
ex404.php : รับค่าจากฟอร์มมาประมวลผล
<?php
echo $_POST["c"];
echo $_POST["d"];
echo $_POST["c"] * $_POST["d"];
echo $_REQUEST["c"] , $_REQUEST["d"];
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
785678

# รับค่าจาก ex403.htm มาแสดงผล และคำนวณ
# URL ที่แสดงในช่อง Address จะพบเฉพาะ zz404.php
# REQUEST ถูกใช้แทน POST หรือ GET ได้
ex405.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
ex406.php : รับค่าจากฟอร์ม ที่ส่งมาในรูปแบบต่าง ๆ
<?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 ค่าเปลี่ยนได้ ถ้าเปลี่ยนใน ex405.htm หรือ ex406.php
ex407.php : รวมฟอร์มส่งค่า และรับมาประมวลผล
<form action=zz407.php>
<input name=n value=3>
<input type=submit>
</form>
<?php
if (isset($_GET["n"])) {
  for ($i=1;$i<=$_GET["n"];$i++){
    echo $i."<br/>";
  }
}
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ


1
2
3
# isset คือ ตรวจสอบว่ามีตัวแปร $_GET["n"] หรือไม่
# ตัวอย่างนี้รวมทั้งส่วนส่งค่า และรับค่าเข้าด้วยกัน
# ประหยัดจำนวนแฟ้ม จาก 2 แฟ้ม เหลือ 1 แฟ้ม
ex408.php : ฟอร์มส่ง และรับที่ใช้ while และ request
<form action=zz408.php method=post>
<input name=n1 value=15>
<input name=n2 value=18>
<input type=submit>
</form><pre>
<?php
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 มีความสำคัญมาก
ex501.php : แสดงค่า Configuration
<?php
phpinfo();
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
ตาราง แสดงข้อมูลมากมาย
# ดูว่าสนับสนุน GD เพื่อเขียนภาพ Graphic หรือไม่
# ดู DOCUMENT_ROOT ใน Environment เป็นต้น
ex502.php : คำสั่งตัดคำด้วยคำสั่ง substr
<?php
$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
# ควรหาคำตอบ ว่าคำสั่ง และผลลัพธ์ เป็นเช่นนั้น เพราะอะไร
ex503.php : ฟังก์ชันเกี่ยวกับเวลา และการสุ่ม
<?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
ex504.php : ฟังก์ชัน require และ include แบบ html
<body>
<?php require("ex502.php"); ?>
<hr>
<?php include("ex503.php"); ?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# ถ้าพบ error ในแฟ้ม x.php จะเป็น Fatal Error
# ถ้าพบ error ในแฟ้ม y.php จะเป็น Warning
# ตามทฤษฎี เขาว่าอย่างนั้น
ex505.php : ฟังก์ชัน require และ include แบบเต็ม
<?php
#ex505.php หรือ setvar.php
$a=1;
$b="one";
?>

<?php
# ex505a.php หรือ use1.php
require("ex505.php");
echo $a,$b;
?>

<?php
# ex505b.php หรือ use2.php
include("ex505.php");
echo $a,$b;
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
1one
# ตัวอย่างนี้มี 3 แฟ้ม คือ setvar.php use1.php use2.php
# โปรแกรมกำหนดค่าให้โปรแกรมอื่นเรียกใช้ คือ setvar.php
# โปรแกรมเรียกใช้แฟ้มกำหนดค่าคือ use1.php และ use2.php
ex506.php : ฟังก์ชันตรวจสอบตัวแปร
<form action=zz506.php method=post>
<input name=pass>
<input type=submit>
</form>
<?php 
  if (!isset($_POST["pass"])) exit; 
?>
Test Test Test
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# ถ้ามีตัวแปร pass ส่งเข้ามา ก็จะพิมพ์ Test 3 คำ
ex507.php : สร้างฟังก์ชันแบบ internal แบบธรรมดา
<?php
a();
echo "b";
a();
?>
bb
<?php
function a() {
  echo "a";
  echo "x";
}
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
axbaxbb
# แสดงการประกาศฟังก์ชันครั้งเดียว แต่เรียกใช้ 2 ครั้ง
ex508.php : สร้างฟังก์ชันแบบ internal แบบรับค่า
<?php
a(5,6);
function a($b1,$b2) {
  echo "$b1 + $b2 = ", $b1 + $b2;
}
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
5 + 6 = 11
# ส่งค่าให้กับฟังก์ชันใช้งาน
ex509.php : สร้างฟังก์ชันแบบ internal แบบรับ และคืนค่า
<?php
echo a(5,6);
echo a(5,6);
function a($b1,$b2) {
  $t = $b1 + $b2;
  return $t;
}
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
1111
# แสดงการรับปกติ
# คืนค่าให้ฟังก์ชันด้วย return
ex510.php : สร้างฟังก์ชันแบบ internal แบบคืนค่า
<?php
$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
ex601.php : การเข้าสู่ 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
ex602.php : การสร้าง แสดง และเข้าฐานข้อมูล
mysql> create database oho;
mysql> show databases;
mysql> use oho;
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
| Database |
+----------+
| mysql    |
| oho      |
| test     |

# สร้างฐานข้อมูลใหม่ชื่อ oho
# แสดงรายชื่อฐานข้อมูล
# ถ้าไม่เข้าฐานข้อมูล จะใช้คำสั่งจัดการตารางไม่ได้
ex603.php : การสร้างตารางไว้เก็บข้อมูล
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
# อาจพิมพ์หลายบรรทัด หรือบรรทัดเดียวก็ได้
# แสดงรายชื่อตาราง เพื่อดูว่าสร้างสำเร็จหรือไม่
ex604.php : การเพิ่มหลายระเบียน และอ่านมาแสดง
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);
ex605.php : การเพิ่มหนึ่งระเบียนหลายเขตข้อมูล
mysql> insert into wow1 values(
    ->1,
    ->"boy",
    ->5000);
mysql> select xid,xname from wow1;
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# ตัวอย่างมี 4 บรรทัด แต่สามารถพิมพ์ให้จบใน 1 บรรทัดได้
# เลือกข้อมูลมาแสดงเพียง 2 เขตข้อมูล
ex606.php : การเลือกข้อมูลได้หลายแบบ
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;
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# ใช้ฟังก์ชัน หาจำนวนระเบียน
# ใช้ฟังก์ชัน หาผลรวมเงินเดือน
# ใช้ฟังก์ชัน หาเงินเดือนสูงสุด
# ใช้ฟังก์ชัน หาเงินเดือนต่ำสุด
# ใช้ฟังก์ชัน หาค่าเฉลี่ยเงินเดือน
ex607.php : การเลือกแบบมีเงือนไข
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
ex608.php : การลบระเบียน ลบตาราง หรือลบฐานข้อมูล
mysql> delete from wow1 where xid=1;
mysql> delete from wow1;
mysql> drop table wow1;
mysql> drop database oho;
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# ลบระเบียนที่ xid = 1
# ลบทุกระเบียนในตาราง ชื่อ wow1
# ลบตาราง ชื่อ wow1
# ลบฐานข้อมูล ชื่อ oho
ex609.php : การปรับปรุงข้อมูล
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 เพื่อดูผลลัพธ์
การใช้ mysqli กับการตรวนสอบด้วย if((int)phpversion() >= 7) { }
ลง xampp ทั้งที่รองรับ PHP 5 และ PHP 7 พร้อมกันได้ เลือก control panel ได้
+ รวม PHP Script ทั้ง 7 จัดการ MySQL v.1
+ รวม PHP Script ทั้ง 7 จัดการ MySQL v.2
+ รวม PHP Script ทั้ง 7 จัดการ MySQL v.3(php5 and php7)
ex701 : เมนูเรียกใช้โปรแกรม (s0index.php)
<html><head>
<meta http-equiv="content-type" content="text/html;charset=windows-874" />
</head><body><ol><b>Manage data in mysql</b>
<li>s1connect.php</li>
<li><a href="s2crtdb.php">s2crtdb.php</a></li>
<li><a href="s3select.php">s3select.php</a></li>
<li><a href="s4insert.php">s4insert.php</a></li>
<li><a href="s5delete.php">s5delete.php</a></li>
<li><a href="s6update.php">s6update.php</a></li>
<li><a href="s7drop.php">s7drop.php</a></li>
</ol>
<?php 
  if(file_exists("s3select.php")) include("s3select.php"); 
?>
</body></html>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# เชื่อมต่อไปยังโปรแกรมต่าง ๆ
ex702 : เชื่อมต่อฐานข้อมูล (s1connect.php)
<?php
ini_set('display_errors', 0); // 0 =  'Off'
$db 	= "perlphpasp"; // will be created in s2crtdb.php
$host 	= "localhost";
$uname 	= "root";
$upass 	= "";
$tb		= "worker";
if (!$connect = mysql_connect($host,$uname,$upass)){
 die('connect : failed');
}
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# ติดต่อฐานข้อมูล เพื่อใช้ในโปรแกรมต่าง ๆ
# เปลี่ยนโปรแกรมนี้ให้มีบรรทัดเดียวได้
ex703 : สร้างฐานข้อมูล ตาราง และ 3 ระเบียน (s2crtdb.php)
<?php
/* Section 1 : include */
if(file_exists("s1connect.php")) 
  require("s1connect.php"); 
else
  die("File not found");

/* Section 2 : main activity */
dbWork("create database $db");
qWork("create table $tb (eid char(4),ename char(40))");
qWork("insert into $tb values('1001','Tom')");
qWork("insert into $tb values('1002','Dang')");
qWork("insert into $tb values('1003','Pom')");
mysql_close($connect);
echo '<a href="s0index.php">back</a>';

/* Section 3 : function */
function dbWork($sql) {
  global $connect;
  if (!$result=mysql_query($sql,$connect))
    echo "$sql : failed<br/>"; 
  else 
    echo "$sql : succeeded<br/>";  
}	
function qWork($sql) {
  global $db;
  if (!$result=mysql_db_query($db,$sql))
    echo "$sql : failed<br/>"; 
  else 
    echo "$sql : succeeded<br/>";  
}	
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# สร้างฐานข้อมูล
# สร้างตาราง
# สร้างระเบียน 3 ระเบียน
ex704 : อ่านข้อมูลมาแสดง (s3select.php)
<?php
require("s1connect.php");
$sql="select * from $tb";
if (!$result=mysql_db_query($db,$sql)) die("Query : failed");
echo "Display all records : <br/>";
while ($object = mysql_fetch_object($result)) {
  echo $object->eid . "  " . $object->ename . "<br/>";
}
echo "Total " . mysql_num_rows($result) ." records";
mysql_close($connect);
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# วนลูปอ่านข้อมูลมาแสดง
ex705 : เพิ่มข้อมูลใหม่ (s4insert.php)
<body>
<form action="s4insert.php">
<input name="nid" value="1004">
<input name="nname" value="kmit">
<input type="submit" value="s4insert.php">
</form>
<?php
if (!isset($_GET['nid']) || !isset($_GET['nname'])) exit;
require("s1connect.php");
$sql="insert into $tb values('".$_GET['nid']."','".$_GET['nname']."')";
if(!$result=mysql_db_query($db,$sql)) 
  echo "$sql : failed";
else 
  echo "$sql : succeeded";
mysql_close($connect);
?>
</body>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# ฟอร์มส่งข้อมูล # รับข้อมูล แล้วเพิ่มใน MySQL
ex706 : ลบข้อมูล (s5delete.php)
<?php
$myForm = '<body>
<form action="s5delete.php">
<input name="delid" value="1001">
<input type="submit" value="s5delete.php">
</form>';
if (!isset($_GET['delid'])) { 
  echo $myForm;
  exit;
}
require("s1connect.php");
$sql="delete from $tb ";
$sql.="where eid ='".$_GET['delid']."'";
if(!$result=mysql_db_query($db,$sql))
  echo "$sql : failed";
else 
  header("location: s0index.php");
mysql_close($connect);
?>
</body>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# ฟอร์มส่งข้อมูล # รับข้อมูล แล้วเลือกลบใน MySQL
ex707 : ปรับปรุงข้อมูล (s6update.php)
<body>
<form action="s6update.php">
<input name="updid" value="1003">
<input name="updname" value="chula">
<input type="submit" value="s6update.php">
</form>
<?php
if (!isset($_GET['updid'])) { exit; }
require("s1connect.php");
$sql="update $tb set ";
$sql.="eid='". $_GET['updid'] ."', ";
$sql.="ename='". $_GET['updname'] ."' ";
$sql.="where eid='". $_GET['updid'] ."'";
if(!$result=mysql_db_query($db,$sql))
  echo "$sql : failed";
else 
  echo "<meta http-equiv='refresh' content='0; url=s0index.php'/>";
mysql_close($connect);
?>
</body>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# ฟอร์มส่งข้อมูล # รับข้อมูล แล้วปรับปรุงใน MySQL
ex708 : ลบฐานข้อมูล (s7drop.php)
<?php
require("s1connect.php");
if (!$result=mysql_query("drop database $db",$connect))
  echo "Drop database : failed";
else
  echo "Drop database : succeeded";
mysql_close($connect);
?>
<input type='button' onclick="location.href='s0index.php'" value='back'>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# ลบฐานข้อมูล
# ทำให้ตาราง และข้อมูลหายทันที
8. กรณีศึกษาระบบสมาชิก (Member System) - วางแผน และจัดทำระบบ Admin Log In และ Log Out
- สร้างฐานข้อมูล และตาราง ที่ออกแบบมาสำหรับเก็บข้อมูลสมาชิก
- เขียนฟอร์มรับข้อมูล และโปรแกรมนำข้อมูลไปเก็บในฐานข้อมูล
- เขียนโปรแกรมแสดงข้อมูล
- เขียนฟอร์มรับคำสั่งลบ และโปรแกรมสำหรับ ลบข้อมูล
- การเขียนโปรแกรมคือ การทำงานตามที่ผู้ออกแบบระบบออกแบบไว้
ex801.php : ฟอร์มสมัครของผู้ใช้ และเข้าระบบ Administrator (apply.htm)
<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 :

ex802.php : ตรวจรหัส Admin และเก็บสถานะ Admin (session.php)
<?php
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
ex803.php : สร้างฐานข้อมูล ถ้าเป็น Admin (crtdbm.php)
<?php
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 ก็ได้
ex804.php : ผู้ใช้สมัครสมาชิก (apply.php)
<?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
# เพิ่มข้อมูลสมาชิกในตาราง
ex805.php : แสดงข้อมูล ถ้าเป็น Admin (display.php)
<?php
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
ex806.php : ลบข้อมูลตาม mid ถ้าเป็น Admin (del.php)
<?php
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
- สร้างฐานข้อมูล และตาราง ที่ออกแบบมาสำหรับเก็บข้อมูล
- เขียนฟอร์มรับข้อมูล และโปรแกรมนำข้อมูลไปเก็บในฐานข้อมูล
- โปรแกรมนี้ยังไม่ยอมให้ผู้ใช้เข้ามาแสดงความคิดเห็น
ex901.php : ฟอร์มรับความคิดเห็น (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 :


ex902.php : ส่วนเชื่อมต่อฐานข้อมูล (connect.php)
<?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;
}
?>
ตัวอย่างผลลัพธ์ และข้อมูลประกอบ
# เชื่อมต่อฐานข้อมูล
# ช่วยให้โปรแกรมอื่นมีขนาดสั้นลง
ex903.php : สร้างฐานข้อมูล (crtdb.php)
<?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
ex904.php : เพิ่มความคิดเห็นใหม่ (boardi.php)
<?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
# เพิ่มข้อมูลสมาชิกในตาราง
ex905.php : แสดงข้อมูล (boards.php)
<?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
กรณีศึกษาผ่านรหัสต้นฉบับ (Source Code) - รวมตัวอย่างที่ http://www.thaiall.com/source
Case #1 : เว็บบอร์ดแบบไม่ใช้ MySQL และ แยกฟังก์ชันภายใน (webboard.php)
    ตอนที่ 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"
Case #2 : ระบบจัดการแฟ้มแบบ ไม่ใช้ MySQL และแยกฟังก์ชันภายใน (filemanager.php)
    ตอนที่ 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
ex993.php : จัดการสมาชิกต้องใช้ MySQL และไม่สร้างฟังก์ชัน (memmysql.php)
    ตอนที่ 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
php+mysql+insert Example in https://github.com/thaiall/programming-page/tree/master/training49 (error1 + error2)
Short code : php+mysql+insert (2560)
// use phpmyadmin in test database
create table mem(uid int not null auto_increment,u  varchar(50),p varchar(50), 
t varchar(1), primary key (uid));
insert into mem values (0,"admin","nation","a");
insert into mem values (0,"boy","girl","u");
// index.php
<a href="signin.php">signin.php</a>
<a href="signout.php">signout.php</a>
<a href="list.php">list.php</a>
<a href="insert.php">insert.php</a>
// signin.php
<form action="check.php">
<input name=u><input name=p>
<input type=submit></form>
// signout.php
<?php session_start();
$_SESSION["t"] = "";
echo '<a href=index.php>back</a>'; ?>
// check.php
<?php session_start();
$connect = new mysqli("127.0.0.1", "root", "", "test");
$result = $connect->query("select * from mem");
$_SESSION["t"] = "";
if ($result->num_rows > 0) 
  while($row = $result->fetch_assoc()) {
    if($row["u"] == $_REQUEST["u"] && $row["p"] == $_REQUEST["p"]) $_SESSION["t"] = $row["t"];
  }
echo '<a href=index.php>back</a><br/>' . $_SESSION["t"];
$connect->close(); ?>
// list.php
<?php session_start();
if(!isset($_SESSION["t"]) || strlen($_SESSION["t"]) == 0) {
echo '<a href=index.php>back</a>'; exit();
}
$connect = new mysqli("127.0.0.1", "root", "", "test");
$result = $connect->query("select * from mem");
echo $result->num_rows . "<br/>";
if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    echo  $row['u'] .  $row['p'] .  $row['t'] . "<br/>";
  } }
echo '<a href=index.php>back</a>' ;
$connect->close(); ?>
// insert.php
<form action="addrec.php" method="post">
<input name=u><input name=p><input name=t><input type=submit>
</form>
// addrec.php
<?php session_start();
if(!isset($_SESSION["t"]) || strlen($_SESSION["t"]) == 0) {
die ('<a href=index.php>back</a>');
}
$connect = new mysqli("127.0.0.1", "root", "", "test");
$sql = "insert into mem values (0,'". $_POST["u"] ."','" . $_POST["p"] ."','". $_POST["t"] ."')";
$result = $connect->query($sql);
if($result === FALSE)  echo "$sql : failed"; else echo "$sql : succeeded";
echo '<br/><a href=index.php>back</a>' ;
$connect->close(); ?>
// update mem set t="a";
// update mem set t="u",p="nation" where u = "burin";
// delete from $tb  where u ='" . $_GET['u'] ."'";
// delete from $tb  where uid =" . $_GET['uid'] ;
mysql_update7.php

+ mysql_update7.docx
จงเขียนโปรแกรมปรับปรุงข้อมูลอย่างง่าย
1. เพื่อแสดงรายการข้อมูล 3 เขตข้อมูล ใน Textbox ที่อยู่ในกรอบตาราง มีปุ่มลบ แก้ไข ด้านขวาของแต่ละระเบียน
2. เพื่อสั่งเพิ่ม มี Textbox ในบรรทัดสุดท้ายเตรียมนำข้อมูลไปเพิ่มในฐาน และมีปุ่มกดเพิ่ม
3. เพื่อให้แน่ใจที่จะ ลบ หรือแก้ไข เมื่อกดปุ่มลบ ให้ถามกดยืนยันอีกครั้ง เมื่อกดปุ่มแก้ไข ให้ถามกดยืนยันอีกครั้ง ในการแสดงผลจะกำหนดเป็น Readonly เมื่อเลือกรายการ จึงจะไม่มี Readonly
4. สรุปแล้วโปรแกรมนี้ เพื่อปรับปรุงข้อมูลแบบมีปุ่มเพิ่ม ลบ แก้ไข และมี Textbox บรรจุข้อมูลพร้อมถูกแก้ไข และเห็นผลในเพจเดียวตลอดเวลา โดยถามยืนยันการลบ และแก้ไขก่อนดำเนินการ
rspsocial
Thaiall.com