-->

วันพุธที่ 26 พฤศจิกายน พ.ศ. 2557

ฟังก์ชันใน PHP

           ฟังก์ชันในโปรแกรมส่วนใหญ่ได้รับการเรียกคำสั่งเพื่อทำงานอย่างเดียว สิ่งนี้ทำให้คำสั่งอ่านได้ง่ายและยอมให้ใช้คำสั่งใหม่แต่ละครั้งเมื่อต้องการทำงานเดียวกัน
ฟังก์ชันเป็นโมดูลเก็บคำสั่งที่กำหนดการเรียกอินเตอร์เฟซ ทำงานเดียวกัน และตัวเลือกส่งออกค่าจากการเรียกฟังก์ชัน คำสั่งต่อไปเป็นการเรียกฟังก์ชันอย่างง่าย
my_function ();
คำสั่งเรียกฟังก์ชันชื่อ my_function ที่ไม่ต้องการพารามิเตอร์ และไม่สนใจค่าที่อาจจะส่งออกโดยฟังก์ชันนี้
ฟังก์ชันจำนวนมากได้รับการเรียกด้วยวิธีนี้ เช่น ฟังก์ชัน phpinfo () สำหรับแสดงเวอร์ชันติดตั้งของ PHP สารสนเทศเกี่ยวกับ PHP การตั้งค่าแม่ข่ายเว็บ ค่าต่างๆ ของ PHP และตัวแปร ฟังก์ชันนี้ไม่ใช้พารามิเตอร์และโดยทั่วไปไม่สนใจค่าส่งออก ดังนั้นการเรียก phpinfo () จะประกอบขึ้นดังนี้

phpinfo ();

การกำหนดฟังก์ชันและการเรียกฟังก์ชัน

          การประกาศฟังก์ชันเริ่มต้นด้วยคีย์เวิร์ด function กำหนดชื่อฟังก์ชัน พารามิเตอร์ที่ต้องการ และเก็บคำสั่งที่จะประมวลผลแต่ละครั้งเมื่อเรียกฟังก์ชันนี้
<?php
function function_name(parameter1,…)
{
ชุดคำสั่ง
}
?>
ชุดคำสั่งต้องเริ่มต้นและสิ้นสุดในวงเล็บปีกกา ({ }) ตัวอย่างฟังก์ชัน my_function
<?php
function my_function()
{
$mystring =<<<BODYSTRING
my function ได้รับการเรียก
BODYSTRING;
echo $mystring;
}
?>
การประกาศฟังก์ชันนี้ เริ่มต้นด้วย function ดังนั้นผู้อ่านและตัวกระจาย PHP ทราบว่าต่อไปเป็นฟังก์ชันกำหนดเอง ชื่อฟังก์ชันคือ my_function การเรียกฟังก์ชันนี้ใช้ประโยคคำสั่งนี้
my_function ();

การเรียกฟังก์ชันนี้จะให้ผลลัพธ์เป็นข้อความ "my function ได้รับการเรียก " บน browser

การตั้งชื่อฟังก์ชัน

       สิ่งสำคัญมากในการพิจารณาเมื่อตั้งชื่อฟังก์ชันคือชื่อต้องสั้นแต่มีความหมาย ถ้าฟังก์ชันสร้างส่วนตัวของเพจควรตั้งชื่อเป็น pageheader () หรือ page_header ()
ข้อจำกัดในการตั้งชื่อคือ
-ฟังก์ชันไม่สามารถมีชื่อเดียวกับฟังก์ชันที่มีอยู่
-ชื่อฟังก์ชันสามารถมีได้เพียงตัวอักษรตัวเลข และ underscore
-ชื่อฟังก์ชันไม่สามารถเริ่มต้นด้วยตัวเลข
หลายภาษายอมให้ใช้ชื่อฟังก์ชันได้อีก ส่วนการทำงานนี้เรียกว่า function overload อย่างไรก็ตาม PHP ไม่สนับสนุน function overload ดังนั้นฟังก์ชันไม่สามารถมีชื่อเดียวกันกับฟังก์ชันภายใน หรือฟังก์ชันกำหนดเองที่มีอยู่
หมายเหตุ ถึงแม้ว่าทุกสคริปต์ PHP รู้จักฟังก์ชันภายในทั้งหมด ฟังก์ชันกำหนดเองอยู่เฉพาะในสคริปต์ที่ประกาศสิ่งนี้หมายความว่า ชื่อฟังก์ชันสามารถใช้ในคนละไฟล์แต่อาจจะไปสู่ความสับสน และควรหลีกเลียง
ชื่อฟังก์ชันต่อไปนี้ถูกต้อง
name ()
name2 ()
name_three ()
_namefour ()
ชื่อไม่ถูกต้อง
5name ()
Name-six ()
fopen ()
การเรียกฟังก์ชันไม่มีผลจากชนิดตัวพิมพ์ ดังนั้นการเรียก function_name (), Function_Name() หรือ FUNCTION_NAME() สามารถทำได้และมีผลลัพธ์เหมือนกัน แต่แบบแผนการกำหนดชื่อฟังก์ชันใน PHP ให้ใช้ตัวพิมพ์เล็ก

ชื่อฟังก์ชันแตกต่างจากชื่อตัวแปร โดยชื่อตัวแปรเป็นชนิดตัวพิมพ์มีผล ดังนั้น $Name และ $name เป็น 2 ตัวแปร แต่ Name () และ name () เป็นฟังก์ชันเดียวกัน

การหยุดประมวลผลภายในฟังก์ชัน

           คีย์เวิร์ด return หยุดการประมวลผลฟังก์ชัน ฟังก์ชันสิ้นสุดได้เพราะประโยคคำสั่งทั้งหมดได้รับการประมวลผล หรือ ใช้คีย์เวิร์ด return การประมวลผลกลับไปยังประโยคคำสั่งต่อจากการเรียกฟังก์ชัน
<?php
function division($x, $y)
{
if ($y == 0 || !isset($y))
{
echo " ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า" ;
return;
}
$result = $x / $y;
echo $result;
}
?>
ถ้าประโยคคำสั่ง return ได้รับการประมวลผล บรรทัดคำสั่งต่อไปในฟังก์ชันจะถูกข้ามไป และกลับไปยังผู้เรียกฟังก์ชันนี้ ในฟังก์ชันนี้ ถ้า y เป็น 0 จะหยุดการประมวลผล ถ้า y ไม่เท่ากับ 0 จะคำนวณผลหาร
สมมติป้อนค่าเป็น
x = 4, y = 0
x = 4
x = 4, y = 2

ผลลัพธ์ของคำสั่ง คือ
x = 4, y = 0 ผลลัพธ์ ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า
x = 4, y = ผลลัพธ์ ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า
x = 4, y = 2 ผลลัพธ์ 2

การเรียกฟังก์ชัน

      เมื่อฟังก์ชันได้รับการประกาศหรือสร้างขึ้นแล้ว การเรียกฟังก์ชันสามารถเรียกมาจากที่ใดๆ ภายในสคริปต์ หรือ จากไฟล์ที่มีการรวมด้วยประโยคคำสั่ง include() หรือ require()
ตัวอย่าง ฟังก์ชัน show_message() เก็บอยู่ในไฟล์ fn_ 03 _keeper.php ส่วนผู้เรียกอยู่ในสคริปต์ fn_ 03 _caller.php
<?php
include("fn_ 03 _keeper.php");
show_message();

?>

พารามิเตอร์

          พารามิเตอร์ ตามปกติฟังก์ชันส่วนใหญ่ต้องการรับสารสนเทศจากผู้เรียกสำหรับการประมวลผล โดยทั่วไปเรียกว่า พารามิเตอร์
ไวยากรณ์พื้นฐาน
การกำหนดฟังก์ให้รับพารามิเตอร์ส่งผ่านโดยการวางข้อมูล ชื่อตัวแปรที่เก็บข้อมูลภายในวงเล็บหลังชื่อฟังก์ชัน การเรียกฟังก์ชันที่ประกอบด้วยพารามิเตอร์เขียนดังนี้
<?php
function show_parameter($param1, $param2, $param3)
{
echo <<<PARAM
รายการพารามิเตอร์ <br/>
param1: $param1 <br/>
param2: $param2 <br/>
param3: $param3 <br/>
PARAM;
}
?>
พารามิเตอร์ที่ส่งไปยังฟังก์ชันแยกกันเครื่องหมายจุลภาคภายในวงเล็บ โดยสามารถส่งเป็นนิพจน์สำหรับแต่ละพารามิเตอร์ด้วย ตัวแปร ค่าคงที่ ผลลัพธ์จากการคำนวณ รวมถึงการเรียกฟังก์ชัน

scope ของพารามิเตอร์จำกัดภายในฟังก์ชัน ถ้าชื่อตัวแปรเหมือนกับตัวแปรใน scope ระดับอื่น พารามิเตอร์นี้ "ระบุ" เป็นตัวแปรภายในที่ไม่มีผลกับตัวแปรภายนอกฟังก์ชัน

การส่งผ่านโดยค่า(By Value)

         ตามปกติการส่งผ่านพารามิเตอร์ไปยังฟังก์ชันเป็นการส่งผ่านค่า การเปลี่ยนแปลงจะจำกัดภายในเฉพาะภายในฟังก์ชัน
ตัวอย่างฟังก์ชัน new_value () ที่ยอมให้เพิ่มค่า อาจจะเขียนคำสั่งดังนี้
<?php
function new_value($value, $increment= 1)
{
$value = $value + $increment;
}
$value = 10 ;
new_value($value);
echo "$value<br/>\n";
?>
คำสั่งนี้ใช้ไม่ได้ ผลลัพธ์จะเป็น "10" ค่าใหม่ของ $value ไม่มีการเปลี่ยนแปลง

สิ่งนี้เป็นเพราะกฎ scope คำสั่งนี้สร้างตัวแปรเรียกว่า $value เป็น 10 เมื่อเรียกฟังก์ชัน new_value () ตัวแปร $value ในฟังก์ชันได้รับการสร้างเมื่อเรียกฟังก์ชัน ค่า 1 ได้รับการเพิ่มให้กับตัวแปร ดังนั้นค่าของ $value คือ 11 ภายในฟังก์ชัน จนกระทั่งสิ้นสุดฟังก์ชัน แล้วกลับไปยังคำสั่งที่เรียกภายในคำสั่งนี้ ตัวแปร $value เป็นอีกตัวแปร global scope และไม่มีการเปลี่ยนแปลง

การส่งผ่านโดยการอ้างอิง (By Reference)

     ตามตัวอย่างฟังก์ชัน new_value ถ้าต้องการให้ฟังก์ชันเปลี่ยนแปลงค่าได้ มีวิธีหนึ่งในการแก้ไขคือ ประกาศ $value ในฟังก์ชันเป็น global แต่หมายความว่าในการใช้ฟังก์ชันนี้ ตัวแปรที่ต้องการเพิ่มค่าต้องตั้งชื่อเป็น $value แต่มีวิธีดีกว่าคือ ใช้การส่งผ่านโดยการอ้างอิง
การอ้างอิงไปตัวแปรต้นทางแทนที่มีค่าของตัวเอง การปรับปรุงไปยังการอ้างอิงจะมีผลกับตัวแปรต้นทางด้วย
การระบุพารามิเตอร์ที่ใช้การส่งผ่านโดยการอ้างอิงให้วาง ampersand (&) หน้าชื่อพารามิเตอร์ในข้อกำหนดฟังก์ชัน
ตัวอย่าง new_value () ได้รับปรับปรุงให้มี 1 พารามิเตอร์ส่งผ่านโดยการอ้างอิงและทำงานได้อย่างถูกต้อง
<?php
function new_value(&$value, $increment=1)
{
$value = $value + $increment;
}
?>
คำสั่งทดสอบฟังก์ชัน ให้พิมพ์ 10 ก่อนการเรียก increment () และ 11 ภายหลัง
ในการส่งค่าโดยการอ้างอิงต้องส่งเป็นตัวแปรไม่สามารถกำหนดค่าคงที่โดยตรง



จำนวนตัวแปรของพารามิเตอร์

    การส่งผ่านพารามิเตอร์ไปยังฟังก์ชันนั้น การควบคุมของ PHP ได้กำหนดฟังก์ชันจำนวนหนึ่งให้ยอมรับจำนวนตัวแปรของพารามิเตอร์ ได้แก่ func_num_args, func_get_arg และ func_get_args
func_num_args() บอกจำนวนพารามิเตอร์ไปยังฟังก์ชันที่เรียก func_get_arg() แสดงค่าของพารามิเตอร์ตามดัชนี และ func_get_args() ส่งออก array ของพารามิเตอร์
<?php
function show_pass_value()
{
$idx = count(func_get_args());
echo " จำนวนพารามิเตอร์ $idx <br/>\n";
if ($idx > 0)
    echo ">> ใช้ฟังก์ชัน func_get_arg<br/>\n";
for ($i = 0 ; $i < $idx; $i++)
{
echo " พารามิเตอร์ที่ $i ค่า: ". func_get_arg($i)."<br/>\n";
}
if ($idx > 0)
    echo ">> ใช้ฟังก์ชัน func_get_args<br/>\n";
$params = func_get_args();
foreach ($params as $index => $val)
{
echo " พารามิเตอร์ที่ $index ค่า: $val<br/>\n";
}
echo " *********<br/>\n";
}
$x = 4 ;
show_pass_value("one", "two", 3 , $x, " ห้า" , " หก") ;
show_pass_value();
?>
ผลลัพธ์
จำนวนพารามิเตอร์ 6
>> ใช้ฟังก์ชัน func_get_arg
พารามิเตอร์ที่ 0 ค่า: one
พารามิเตอร์ที่ 1 ค่า: two
พารามิเตอร์ที่ 2 ค่า: 3
พารามิเตอร์ที่ 3 ค่า: 4
พารามิเตอร์ที่ 4 ค่า: ห้า
พารามิเตอร์ที่ 5 ค่า: หก
>> ใช้ฟังก์ชัน func_get_args
พารามิเตอร์ที่ 0 ค่า: one
พารามิเตอร์ที่ 1 ค่า: two
พารามิเตอร์ที่ 2 ค่า: 3
พารามิเตอร์ที่ 3 ค่า: 4
พารามิเตอร์ที่ 4 ค่า: ห้า
พารามิเตอร์ที่ 5 ค่า: หก
*********
จำนวนพารามิเตอร์ 0

*********

Scope

        เมื่อต้องการใช้ตัวแปรภายในไฟล์ที่รวม ต้องมีการประกาศตัวแปรเหล่านั้นก่อนประโยคคำสั่ง require () หรือ include () แต่เมื่อใช้ฟังก์ชันจะเป็นการส่งผ่านตัวแปรเชิงประจักษ์เหล่านั้นไปยังฟังก์ชัน บางส่วนเป็นเพราะไม่มีกลไกส่งผ่านตัวแปรเชิงประจักษ์ไปยังไฟล์ที่รวม และบางส่วนเป็นเพราะ scope ของตัวแปรของฟังก์ชันแตกต่างกัน
         การควบคุม scope ของตัวแปรเป็นการทำให้ตัวแปรมองเห็นได้ ใน PHP มีกฎตั้งค่า scope ดังนี้
การประกาศตัวแปรภายในฟังก์ชันอยู่ใน scope จากประโยคคำสั่งซึ่งตัวแปรให้รับการประกาศภายในวงเล็บปีกกา สิ่งนี้เรียกว่า function scope ตัวแปรเรียกว่า local variable
การประกาศตัวแปรภายนอกฟังก์ชันอยู่ใน scope จากประโยคคำสั่งซึ่งตัวแปรได้รับการประกาศที่สิ้นสุดแต่ไม่ใช้ภายในฟังก์ชัน สิ่งนี้เรียกว่า global scope ตัวแปรเรียกว่า global variable
การใช้ประโยคคำสั่ง require () และ include () ไม่มีผลกับ scope ถ้าประโยคคำสั่งได้รับการใช้ภายในฟังก์ชัน ประยุกต์ด้วย function scope ถ้าไม่ได้อยู่ภายในฟังก์ชัน ประยุกต์ด้วย global scope
คีย์เวิร์ด global สามารถระบุได้เองเพื่อกำหนดหรือใช้ตัวแปรภายในฟังก์ชันให้มี scope เป็น global
ตัวแปร สามารถลบโดยการเรียก unset ($variable_name) และตัวแปรที่ unset จะไม่มี scope
ตัวแปรระดับ superglobal สามารถเข้าถึงได้ทุกส่วนในสคริปต์
ตัวแปรระดับฟังก์ชัน
ตัวแปรระดับฟังก์ชันหรือ local variable เป็นการประกาศเพื่อใช้เฉพาะภายในฟังก์ชัน ไม่สามารถเรียกจากภายนอกฟังก์ชันได้
<?php
$newline = <<<NLSTRING
<br/>\n
NLSTRING;
$var_global = 10 ;
function show_value()
{
global $newline;
$var_local= 75 ;
echo "\$var_local 1: $var_local";
echo $newline;
}
show_value();
echo "\$var_global : $var_global";
echo $newline;
echo "\$var_local 2: $var_local";
echo $newline;
?>
ผลลัพธ์
$var_global 1 :
$var_local 1: 75
$var_global 2: 10
$var_local 2:
ตามตัวอย่างนี้ ตัวแปรระดับฟังก์ชัน $var_local ไม่สามารถแสดงผลในการพิมพ์ภายนอกฟังก์ชัน show_value() และ $var_global ที่เป็นตัวแปรระดับ global ไม่สามารถแสดงผลภายใน show_value() เพราะมี scope ต่างกัน
ตัวแปรระดับ global
ถ้าต้องการนำตัวแปรระดับ global มาใช้ภายในฟังก์ชันต้องประกาศด้วยคีย์เวิร์ด global ก่อนประโยคคำสั่งที่ใช้ตัวแปรนั้น ตัวอย่าง ฟังก์ชัน show_value() ใช้ $newline จากภายนอกฟังก์ชัน
global $newline;
ตัวแปรสถิตย์
การประกาศตัวแปรสถิตย์ใช้ คีย์เวิร์ด static เมื่อมีการเรียกใช้ฟังก์ชัน โปรแกรมจะกำหนดค่าตัวแปรตามที่ระบุเพียงครั้งเดียว ถ้าเรียกซ้ำอย่างต่อเนื่องค่านี้จะเปลี่ยนแปลงตามการคำนวณ
<?php
function increment()
{
static $increase = 5 ;
$increase++;
echo $increase."<br/>\n";
}
$end = 5 ;
for ($i = 1 ; $i < $end; $i++)
    increment();
?>
ผลลัพธ์
6
7
8
9

ค่าของตัวแปรสถิตย์ได้รับการตั้งทุกครั้งเมื่อเรียกใช้ในครั้งต่อไป

การส่งออกค่าจากฟังก์ชัน

        การส่งค่าออกจากฟังก์ชันใช้คีย์เวิร์ด return เช่นเดียวกับการออกจากฟังก์ชันได้ ถ้าไม่มีการระบุส่งออกฟังก์ชันจะส่งค่า NULL
ตัวอย่าง ฟังก์ชัน get_larger () สาธิตการส่งออกค่า
<?
function get_larger($x=NULL, $y=NULL)
{
if (!isset($x) || !isset($y))
    return " ไม่มีการส่งค่า" ;
if ($x > $y)
    return $x;
else if ($x < $y)
    return $y;
else
    return " ค่าเท่ากัน" ;
}
$sends = array();
$sends[0] = array('x' =>5);
$sends[1] = array('x' =>9, 'y'=>3);
$sends[2] = array('x' =>5, 'y'=>8);
$sends[3] = array('x' =>4, 'y'=>4);
foreach ($sends as $send)
{
echo "x = ".$send['x']." y = ".$send['y']." : ค่า - > "
.get_larger($send['x'], $send['y']);
echo "<br/>\n";
}
?>
ผลลัพธ์
x = 5 y = : ค่า - > ไม่มีการส่งค่า
x = 9 y = 3 : ค่า - > 9
x = 5 y = 8 : ค่า - > 8
x = 4 y = 4 : ค่า - > ค่าเท่ากัน

    ฟังก์ชันที่ทำงานอาจเดียว แต่ไม่จำเป็นต้องส่งออกค่า มักจะส่งออก TRUE หรือ FALSE เพื่อระบุความสำเร็จหรือล้มเหลว ค่า TRUE หรือ FALSE สามารถได้รับการแสดงแทนด้วย 1 หรือ 0

Recursion

             recursion ได้รับการสนับสนุนใน PHP ฟังก์ชันชนิดนี้เป็นการเรียกตัวเองและเป็นประโยชน์กับการบังคับโครงสร้างข้อมูลไดนามิคส์ เช่น รายการเชื่อมโยงและโครงสร้างต้นไม้ (tree) โปรแกรมประยุกต์เว็บจำนวนไม่มากต้องการโครงสร้างข้อมูลซับซ้อนมากและจำกัดการใช้ เนื่องจาก recursion ช้ากว่าและใช้หน่วยความจำมากกว่าการทำงานวนรอบ ดังนั้นควรเลือกการทำงานแบบวนรอบปกติ ถ้าเป็นไปได้
ตัวอย่างการประยุกต์แบบย้อนกลับตัวอักษร
<?php
function word_reverse_r($str)
{
if (strlen($str)>0)
    word_reverse_r(substr($str, 1));
echo substr($str, 0, 1);
return;
}
function word_reverse_i($str)
{
for ($i=1; $i<=strlen($str); $i++)
{
echo substr($str, -$i, 1);
}
return;
}
?>
       รายการคำสั่งของ 2 ฟังก์ชันนี้จะพิมพ์ข้อความย้อนกลับ ฟังก์ชัน word_reverse_r เป็น recursion ฟังก์ชัน word_reverse_i เป็นการวนรอบ
       ฟังก์ชัน word_reverse_r ใช้ข้อความเป็นพารามิเตอร์ เมื่อมีการเรียกฟังก์ชันนี้ จะเกิดการเรียกตัวเองแต่ละครั้งส่งผ่านตัวอักษรที่ 2 ไปถึงตัวอักษรสุดท้าย
         การเรียกฟังก์ชันแต่ละครั้งจะทำสำเนาใหม่ของคำสั่งในหน่วยความจำของแม่ข่าย แต่ด้วยพารามิเตอร์ต่างกัน ดังนั้นจึงเหมือนกับการเรียกคนละฟังก์ชัน


วันพุธที่ 5 พฤศจิกายน พ.ศ. 2557

ความหมายของฐานข้อมูล

    ฐานข้อมูล (Database) หมายถึง กลุ่มของข้อมูลที่มีความสัมพันธ์กัน นำมาเก็บรวบรวมเข้าไว้ด้วยกันอย่างมีระบบและข้อมูลที่ประกอบกันเป็นฐานข้อมูลนั้น ต้องตรงตามวัตถุประสงค์การใช้งานขององค์กรด้วยเช่นกัน เช่น ในสำนักงานก็รวบรวมข้อมูล ตั้งแต่หมายเลขโทรศัพท์ของผู้ที่มาติดต่อจนถึงการเก็บเอกสารทุกอย่างของสำนักงาน ซึ่งข้อมูลส่วนนี้จะมีส่วนที่สัมพันธ์กันและเป็นที่ต้องการนำออกมาใช้ประโยชน์ต่อไปภายหลัง ข้อมูลนั้นอาจจะเกี่ยวกับบุคคล สิ่งของสถานที่ หรือเหตุการณ์ใด ๆ ก็ได้ที่เราสนใจศึกษา  หรืออาจได้มาจากการสังเกต การนับหรือการวัดก็เป็นได้ รวมทั้งข้อมูลที่เป็นตัวเลข  ข้อความ  และรูปภาพต่าง ๆ ก็สามารถนำมาจัดเก็บเป็นฐานข้อมูลได้ และที่สำคัญข้อมูลทุกอย่างต้องมีความสัมพันธ์กัน เพราะเราต้องการนำมาใช้ประโยชน์ต่อไปในอนาคต

ชนิดของข้อมูลที่สนับสนุน

ชนิดข้อมูลที่ MySQL สนับสนุนแบ่งเป็นสามประเภทหลักใหญ่ๆ
ชนิดข้อมูลที่เป็นตัวเลข
-BIT (มีใช้ได้กับ MyISAM, InnoDB, Memory)
-TINYINT
-SMALLINT
-MEDIUMINT
-INT
-BIGINT
ชนิดข้อมูลที่เกี่ยวกับวันที่และเวลา
-DATETIME
-DATE
-TIMESTAMP
-TIME
-YEAR
ชนิดข้อมูลที่เกี่ยวกับตัวอักษร
-CHAR
-VARCHAR
-BINARY
-VARBINARY
-BLOB
-TEXT
-ENUM
-SET
                             ภาพแสดงการกำหนด fields และคุณสมบัติต่างๆของฐานข้อมูล ตาราง customer
กำหนด ให้ รหัส (id) เป็น primary key และกำหนดให้เป็น auto_increment (สร้างรหัสอัตโนมัติ)โดยการคลิกเลือก ตามตัวอย่าง 

 กำหนด primary key และกำหนดให้เป็น auto_increment

           เมื่อกำหนดค่าต่างๆของฐานข้อมูลตาราง customer กดปุ่ม "บันทึก" หรือ ถ้าหากต้องการเพิ่ม field ก็สามารถ กดที่ "ลงมือ" ดังภาพ

 บันทึกหรือเพิ่ม field ใหม่

เราก็จะได้ฐานข้อมูล ที่ชื่อ test_create_database และมีตารางชื่อ customer พร้อมใช้งานแล้ว

โปรแกรมที่ใช้ในการออกแบบฐานข้อมูล

                          Microsoft Access เป็นโปรแกรมที่นิยมใช้กันมากในขณะนี้โดยเฉพาะในระบบฐานข้อมูลขนาดใหญ่ สามารถสร้างแบบฟอร์มที่ต้องการจะเรียกดูข้อมูลในฐานข้อมูลหลังจากบันทึกข้อมูลในฐานข้อมูลเรียบร้อยแล้วจะสามารถค้นหาหรือเรียกดูข้อมูลจากเขตข้อมูลใดก็ได้ นอกจากนี้ Access ยังมีระบบรักษาความปลอดภัยของข้อมูลโดยการกำหนดรหัสผ่านเพื่อป้องกันความปลอดภัยของข้อมูลในระบบได้ด้วย


ส่วนประกอบของของโปรแกรม Access แบ่งออกเป็น 7 ชนิดคือ

 Table :
  เป็นตารางที่ใช้เก็บข้อมูลจริง เช่น ฐานข้อมูลของบริษัท รายชื่อ และที่อยู่ของลูกค้า ฯลฯ
  Queries :
  เรียกอีกอย่างว่า ตารางเสมือน ที่เกิดจากการตรึงข้อมูลตารางเดิมออกมาเป็นเสมือนกับตารางใหม่อีกอันหนึ่ง
  Form :
  เป็นแบบฟอร์มที่ใช้สำหรับแสดงและให้กรอกหรือแก้ไขข้อมูลบนจอภาพ
 Reports :
  เป็นรายงานที่ใช้แสดงข้อมูลต่าง ๆ ออกมาให้ดูได้ทั้งบนจอภาพและพิมพ์ออกบนกระดาษ  แต่ไม่สามารถแก้ไข
  ข้อมูลใด ๆ เข้าไปได้
  Pages:
  เป็นการดึงข้อมูล เป็นเครื่องมือที่ใช้สร้างเว็บเพจเพื่อแสดงข้อมูลบนอินเตอร์เน็ตหรืออินทราเน็ตหรือทำงานกับ 
  ฐานข้อมูล Accessผ่านทางเวปโดยจะทำการเชื่อมโยงกับฐานข้อมูลไว้ตลอดไปเมื่อมีการเปลี่ยนแปลงข้อมูลใน
  ฐานข้อมูลจะทำให้ข้อมูลที่แสดงบนเพจเปลี่ยนแปลงตามไปด้วย
   Macro:
  คือชุดคำสั่งย่อย ที่ใช้เสริมการทำงานภายใน Access โดยใช้คำสั่งภายใน Access นั่นเองมาเก็บเป็นชุด 
  และสั่งให้ทำงานโดยอัตโนมัติคล้าย ๆ กับ Macro ของ Excel หรือ Word นั่นเอง  เพียงแต่เป็นการนำ Macro 
  ไว้ให้เรียกใช้ได้ในที่สร้างขึ้นมาแสดง Database โดยตรง
   Module:
  เป็นโปรแกรมย่อย ที่เขียนขึ้นเป็นภาษา Visual Basic for Application (VBA) ซึ่งจะเป็นมาตรฐานเดียว
  กันกับภาษาที่ใช้เสริมการทำงานของโปรแกรมในชุด Microsoft Office

หลักการออกแบบฐานข้อมูลด้วย ACCESS

 - ควรทราบว่ามีข้อมูลอะไรบ้างที่เกี่ยวกับตารางนั้นๆเช่น ตารางนักเรียน จะต้องมีข้อมูลเกี่ยวกับ ชื่อ-สกุล วัน-เดือน-ปี เกิด
    ที่อยู่ฯลฯ
 - จะต้องลดความซ้ำซ้อนที่จะเกิดขึ้นในฐานข้อมูล โดยกำหนดฟิลด์ต่าง ๆ ให้มีความถูกต้องและเหมาะสม ซึ่งในส่วนตาราง
    จะมีฟิลด์ข้อมูลอยู่หลายฟิลด์ด้วยกัน
 - กำหนดความสัมพันธ์ระหว่างตารางโดยการสร้างคีย์หลัก(PK) ขึ้นในตารางที่เกี่ยวข้องกัน
 - กำหนดประเภทของข้อมูลให้เหมาะสมกับแต่ละฟิลด์เช่นฟิลด์ Name ควรจะเป็น Text , ฟิลด์ Birthday ควรจะเป็น Date/time สิ่งเหล่านี้คงต้องปรับปรุง-แก้ไขเพื่อให้เหมาะสมกับหน่วยงาน

วิธีสร้างฐานข้อมูลด้วย phpMyAdmin

             phpMyAdmin เป็นเครื่องมือสำหรับใช้จัดการฐานข้อมูล MySQL ซึ่งฐานข้อมูลหากเราพูดให้เข้าใจง่ายๆ ก็คือ ระบบที่ถูกสร้างขึ้นเพื่อใช้จัดเก็บข้อมูลด้วยคอมพิวเตอร์ เพื่อให้ข้อมูลของเรามีความพร้อมสามารถนำมาใช้งานได้ทันที  สำหรับความรู้เรื่องฐานข้อมูลนั้น ครูกนนจะได้นำเสนอในความรู้เรื่อง  "ความรู้ความเข้าใจเกี่ยวกับระบบการจัดการฐานข้อมูล"  ซึ่งจะได้นำเสนอในโอกาสต่อไป
          จากที่ได้กล่าวไปแล้วว่าเป็นเครื่องมือที่ใช้จัดการฐานข้อมูล MySQL ที่ต้องใช้ phpMyAdmin ก็เพราะว่าในการจัดการกับฐานข้อมูล MySQL นั้นหากเราไม่มีเครื่องมือจัดการแล้วเราต้องใช้วิธีพิมพ์คำสั่ง MySQL เองตั้งแต่การสร้างตารางข้อมูล  การเพิ่ม  การลบ  การอัพเดท  ข้อมูลต่างๆ  ซึ่งคงเป็นเรื่องยากที่เราจะมานั่งจำคำสั่งต่างๆของ MySQL
         phpMyAdmin มีวิธีการใช้งานที่ง่ายๆ และได้ถูกติดตั้งพร้อมกับ Appserv แล้วเราเพียงแค่คลิกเข้าไปใช้งานก็เท่านั้นเอง ในบทความนี้จะนำเสนอวิธีสร้างฐานข้อมูลด้วย phpMyAdmin ซึ่งมีขั้นตอนดังนี้

1. ให้เเปิด Browser เช่น IE  Chrome  Firefox  ขึ้นมาแล้วพิมพ์ 127.0.0.1 ที่ช่อง URL 
    จากนั้นให้เคลิกที่ข้อความ  phpMyAdmin  Database Manager... ตามภาพด้านล่าง
    ที่มีลูกศรชี้อยู่ 
2. ก็จะมีหน้าต่างให้ใส่ ชื่อผู้ใช้ และ รหัสผ่าน ปรากฏขึ้นมา
    ในช่อง ชื่อผู้ใช้ ให้ใส่คำว่า root
    ในช่อง รหัสผ่าน ให้ใส่รหัสผ่านที่เราสร้างไว้เมื่อตอนติดตั้ง Appserv 

4. ถ้าใส่ ชื่อผู้ใช้ หรือ รหัสผ่าน ไม่ถูกต้องก็จะปรากฏหน้าต่างคล้ายภาพด้านล่าง
5. หากภาพในข้อ 4 ปรากฏขึ้นมาก็ไม่ต้องตกใจครับให้คลิกปุ่ม back เพื่อย้อนกลับไปเริ่มต้นทำข้อ 1 ใหม่ได้อีกครั้ง

6. หากเข้าสู่ระบบได้ก็จะมีหน้าต่างคล้ายภาพด้านล่างปรากฏขึ้นมา
7. ให้เรู้จักปุ่ม
    หมายเลข 1 คือ ปุ่ม Home มีไว้สำหรับคลิกกลับมาที่หน้าแรกของ phpMyAdmin
    หมายเลข 2 คือ ปุ่ม Exit มีไว้สำหรับคลิกออกจาก phpMyAdmin
8. ในช่องฐานข้อมูลหากคลิกเข้าไปดูก็จะเห็นฐานข้อมูลที่ phpMyAdmin สร้างไว้ให้บ้างแล้ว
    สำหรับท่านที่ติดตั้ง Appserv ครั้งแรก อาจจะมีชื่อฐานข้อมูลไม่เหมือนตัวอย่างก็ไม่ต้องกังวล
    เพราะภาพตัวอย่าง ได้สร้างฐานข้อมูลไว้บ้างแล้ว
9. ให้ดูที่ด้านขวาของ phpMyAdmin ท่านจะเห็นคล้ายภาพตัวอย่างมีสิ่งที่เราต้องทำความรู้จัก
    สำหรับการสร้างฐานข้อมูลใหม่ดังนี้
    หมายเลข 1 คือ ช่องสำหรับใส่ชื่อฐานข้อมูลที่เราจะสร้าง ในที่นี้จะสร้างฐานข้อมูลชื่อ myDataBase
                            ก็พิมพ์ชื่อฐานข้อมูลลงไปในช่องที่ 1
    หมายเลข 2 คือ ช่องสำหรับเปลี่ยนรหัสอักขระ ให้คลิกเลือกเป็น utf8_unicode_ci ครับ
    หมายเลข 3 คือ ปุ่ม สร้าง เมื่อเราทำข้อ 1,2 เสร็จแล้วก็คลิกปุ่ม สร้าง
10. ก็จะเห็นชื่อฐานข้อมูลที่สร้างปรากฏด้านซ้ายมือ
       myDataBase(0)  หมายความว่า  ฐานข้อมูลชื่อ myDataBase มีตารางข้อมูลอยู่ 0 ตาราง
11. ให้ดูตรงบรรทัด คำค้น SQL จะเห็นว่าด้านล่างมีคำสั่ง MySQL สำหรับใช้สร้างฐานข้อมูล                    เราสามารถมาเรียนรู้คำสั่ง MySQL แบบที่เรียกว่า Command Line ได้จาก phpMyAdmin
      นั่นคือทำอะไรก็ให้เราจำคำสั่ง MySQL ที่ทำลงไปให้ดีๆ แล้วสามารถนำไปใช้ในการ
      เขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ต่างๆ ที่มีการติดต่อกับฐานข้อมูล MySQL
              นี่ก็เป็นขั้นตอนง่ายๆในการใช้ phpMyAdmin สร้างฐานข้อมูล ในบทความต่อไปจะนำเสนอวิธีใช้ phpMyAdmin จัดการกับฐานข้อมูลในรูปแบบอื่นๆเช่น การสร้างตารางข้อมูล  การกำหนดโครงสร้างตารางข้อมูล  การเพิ่มข้อมูล  การลบข้อมูล  การอัพเดทข้อมูล เป็นต้น