การเขียนเว็บเพจ ด้วยพีเอชพี (PHP) ติดต่อฐานข้อมูลมายเอสคิวแอล (MySQL) เบื้องต้น | ||
ปรับปรุง : 2550-02-23 (ปรับก่อนเมษายน)
บทเรียน 1. ความรู้เบื้องต้น 2. การเลือกตามเงื่อนไข 3. การทำซ้ำ 4. การส่ง และรับค่า 5. ฟังก์ชัน 6. คำสั่งเอสคิวแอล 7. พีเอชพี และมายเอสคิวแอล 8. กรณีศึกษาระบบสมาชิก 9. กรณีศึกษาระบบเว็บบอร์ด 99. ตัวอย่างรหัสต้นฉบับ | เว็บเซิร์ฟเวอร์ (Web Server) พีเอชพี (PHP) [wikipedia.org] มายเอสคิวแอล (MySQL) [wikipedia.org] เอสคิวแอล (SQL) แนะนำเว็บ (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) |
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) |
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) |
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 |
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) |
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) |
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) |
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) |
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 : 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) |
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) | |
webboard.php - ไม่ใช้ MySQL - แยกฟังก์ชันภายใน |
|
filemanager.php - ไม่ใช้ MySQL - แยกฟังก์ชันภายใน |
|
memmysql.php - ต้องใช้ MySQL - ไม่สร้างฟังก์ชัน |
|
+ ผู้สนับสนุน + รับผู้สนับสนุน |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น