วันเสาร์ที่ 22 พฤศจิกายน พ.ศ. 2557

ฟังก์ชันใน PHP

ฟังก์ชันใน 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) การส่งผ่านโดยการอ้างอิง (By Reference)

การส่งผ่านโดยค่า(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

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 สามารถเข้าถึงได้ทุกส่วนในสคริปต์

ตัวแปรระดับฟังก์ชัน ตัวแปรระดับ global ตัวแปรสถิตย์

ตัวแปรระดับฟังก์ชัน

ตัวแปรระดับฟังก์ชันหรือ 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

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 ไปถึงตัวอักษรสุดท้าย

การเรียกฟังก์ชันแต่ละครั้งจะทำสำเนาใหม่ของคำสั่งในหน่วยความจำของแม่ข่าย แต่ด้วยพารามิเตอร์ต่างกัน ดังนั้นจึงเหมือนกับการเรียกคนละฟังก์ชัน

วันพฤหัสบดีที่ 6 พฤศจิกายน พ.ศ. 2557

ประโยชน์ของฐานข้อมูล

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

หน้าที่ของระบบการจัดการฐานข้อมูล

หน้าที่ของระบบการจัดการฐานข้อมูล
     ซอฟต์แวร์ระบบฐานการจัดการฐานข้อมูลที่ดีจะต้องทำหน้าที่แก้ปัญหาความไม่สมบูรณ์ ไม่คงเส้นคงวาของข้อมูลและทำให้ข้อมูลมีความถูกต้องไม่ขัดแย้งกันได้ จึงต้องมีหน้าที่ให้ครอบคลุมหลาย ๆ ด้าน ดังนี้
1.หน้าที่จัดการพจนานุกรมข้อมูล
  ในการออกแบบฐานข้อมูลโดยปกติ ผู้ออกแบบได้เขียนพจนานุกรมข้อมูลในรูปของเอกสารให้กับโปรแกรมเมอร์ โปรแกรมเมอร์จะใช้ซอฟต์แวร์ระบบการจัดการฐานข้อมูลสร้างพจนานุกรมข้อมูลต่อไป และสามารถกำหนดความสัมพันธ์ระหว่างตาราง  เมื่อมีการเปลี่ยนแปลงโครงสร้างข้อมูล จำเป็นต้องเปลี่ยนที่พจนานุกรมข้อมูลด้วย โปรแกรมเมอร์สามารถเปลี่ยนแปลงโครงสร้างข้อมูลได้ทันที ต่อจากนั้นจึงให้พจนานุกรมข้อมูลพิมพ์รายงาน พจนานุกรมข้อมูลที่เปลี่ยนแปลงไปแล้วเป็นเอกสารได้เลยทันที่ โดยไม่ต้องแก้ไขที่เอกสาร
2.หน้าที่จัดการแหล่งจัดเก็บข้อมูล
  ระบบการจัดการฐานข้อมูลที่ทันสมัยจะไม่ทำหน้าที่เพียงจัดการแหล่งจัดเก็บข้อมูลเท่านั้น แต่ยังเพิ่มหน้าที่ที่เกี่ยวกับการสร้างฟอร์มป้อนข้อมูลเข้าหรือกำหนดแบบจอภาพ แบบรายงาน หรือแม้แต่การตรวจสอบข้อมูลนำเข้าว่าถูกต้องหรือไม่ และจัดการเรื่องอื่น ๆ อีกหลายอย่าง
3.การเปลี่ยนรูปแบบและการแสดงผลข้อมูล
  การเปลี่ยนรูปแบบและการแสดงผลข้อมูล เป็นหน้าที่สำหรับเปลี่ยนข้อมูลที่ถูกป้อนเข้าไปเป็นโครงสร้างข้อมูลจะจัดเก็บ ซึ่งอยู่ในมุมมองทางกายภาพ หรืออาจจะกล่าวได้ว่า ระบบจัดการฐานข้อมูลทำข้อมูลให้เป็นอิสระจากโปรแกรมประยุกต์ได้
 4.จัดการด้านความปลอดภัยของข้อมูล
  ระบบจัดการฐานข้อมูลทำหน้าที่รักษาความมั่นคง ความปลอดภัยของข้อมูล การไม่ยินยอมเข้าถึงข้อมูลจากผู้ใช้ที่ไม่มีสิทธิ์เข้าไปใช้ฐานข้อมูล โดยเฉพาะอย่างยิ่งฐานข้อมูลประเภทผู้ใช้หลายคน นอกจากนี้ยังสามารถกำหนดสิทธิ์ให้ผู้ใช้แต่ละคนใช้คำสั่ง เพิ่ม หรือลบ ปรับปรุงข้อมูลได้เป็นรายคนหรือรายกลุ่ม
5.ควบคุมการเข้าถึงข้อมูลของผู้ใช้ 
  การควบคุมการเข้าถึงข้อมูล เป็นการทำหน้าที่ให้ผู้ใช้เข้าใช้ได้หลาย ๆ คนในเวลาเดียวกันโดยไม่ทำให้เกิดขัดข้องของข้อมูล ซึ่งจะเน้นกฎความสมบูรณ์ของข้อมูลและการใช้ข้อมูลพร้อมกัน


 6.สำรองข้อมูลและการกู้คืนข้อมูล
 การสำรองข้อมูลและการกู้คืนข้อมูล เป็นหน้าที่ที่จำเป็นอย่างยิ่งเพื่อให้ผู้ใช้ระบบฐานข้อมูลมั่นใจว่าข้อมูลที่จัดเก็บอยู่ในเครื่องคอมพิวเตอร์ไม่ได้เสียหาย ยังมีความสมบูรณ์อยู่ตลอดเวลา ผู้ใช้ที่เป็นผู้บริหารฐานข้อมูลสามารถใช้คำสั่งสำรองข้อมูลและคำสั่งกู้คืนข้อมูลได้
  7.จัดการด้านบูรณภาพของข้อมูล
 เป็นข้อกำหนดให้มีกฎความสมบูรณ์เป็นบูรณภาพ โดยจะให้มีข้อมูลที่ซ้ำซ้อนกันให้น้อยที่สุด แต่ให้มีความถูกต้องตรงกันให้มากที่สุด เพราะในระบบฐานข้อมูลเชิงสัมพันธ์จะมีหลาย ๆ ตารางที่สัมพันธ์กันตารางที่เกี่ยวข้องกันจะขัดแย้งกันไม่ได้
  8.เป็นภาษาสำหรับจัดการข้อมูลและจัดสร้างส่วนประสานกับผู้ใช้
 ระบบจัดการฐานข้อมูลจัดให้มีภาษาสำหรับสอบถาม  เป็นภาษาที่เขียนเข้าใจง่ายไม่เหมือนภาษาชั้นสูงประเภท Procedural ทั่วไป ทำให้ผู้เขียนโปรแกรมภาษาระดับสูงเขียนคำสั่งเข้าไปสอบถามข้อมูลหรือประมวลผลสารสนเทศได้ตามต้องการ
  9.เป็นส่วนประสานกับผู้ใช้ในด้านการสื่อสารฐานข้อมูล
   ระบบการจัดการฐานข้อมูลสมัยใหม่จะสนับสนุนการทำงานแบบเครือข่ายอินเทอร์เน็ต เพื่อให้ผู้ใช้สามารถเขียนคำสั่งด้วยโปรแกรมที่ทำงานบน www เช่น browser  ของ Internet Explorer หรือ Netscape เป็นต้น


เขตข้อมูล

เขตข้อมูล
       การประมวลผลข้อมูลเพื่อให้ได้สารสนเทศ จะมีองค์ประกอบที่สำคัญอย่างหนึ่งคือ แฟ้มข้อมูล ความหมายของแฟ้มข้อมูลหนึ่ง ๆ นั้น มักจะเป็นเอกสารที่เป็นเรื่องเดียวกันและจัดเก็บรวบรวมไว้เป็นแฟ้มข้อมูลเพื่อสะดวกในการค้นหาข้อมูล เช่น แฟ้มข้อมูลประวัติพนักงาน การเก็บรวบรวมข้อมูลในรูปของเอกสารเพื่อประโยชน์ในการใช้งาน ถ้าข้อมูลที่เก็บรวบรวมไว้มีจำนวนน้อยความยุ่งยากในการค้นหาหรือในการจัดเก็บก็จะไม่เกิดขึ้น แต่ถ้าข้อมูลที่เก็บรวบรวมไว้มีจำนวนมากจะมีปัญหาเกิดขึ้นในเรื่องของการค้นหาข้อมูลนั้นและสิ้นเปลืองพื้นที่ในการจัดเก็บข้อมูลนั้น ๆ วิธีการแก้ปัญหาการจัดเก็บแฟ้มข้อมูลที่อยู่ในรูปของเอกสารเมื่อข้อมูลมีจำนวนมากขึ้นก็คือการนำข้อมูลเหล่านั้นเก็บไว้ในระบบคอมพิวเตอร์ ข้อมูลทั้งหมดจะถูกเก็บรวบรวมไว้เป็นแฟ้มข้อมูล เช่นเดียวกับการจัดเก็บเป็นเอกสารแต่จะเป็นแฟ้มข้อมูลที่ถูกจัดเก็บไว้ในอุปกรณ์ของคอมพิวเตอร์ เช่น แผ่นจานบันทึกแม่เหล็กหรือเทปแม่เหล็ก
       ข้อมูล หมายถึง กลุ่มของสารสนเทศที่สัมพันธ์กัน ความสัมพันธ์ของกลุ่มสารสนเทศหรือข้อมูลนั้นถูกกำหนดโดยผู้ใช้แฟ้มข้อมูล ข้อมูลเป็นส่วนประกอบสำคัญในการทำงานของคอมพิวเตอร์ เพราะข้อมูลเป็นวัตถุดิบในการประมวลผลข้อมูลทั้งหมดที่จัดการโดยคอมพิวเตอร์ประกอบด้วยบิต (bit) ซึ่งเป็นโครงสร้างที่เล็กที่สุดในแต่ละบิตจะเป็นตัวเลขในระบบเลขฐานสอง ประกอบด้วย 0 และ 1 ซึ่งนำมาใช้แทน ระหว่างสองสถานะ เช่น จริง-เท็จ เปิด-ปิด เป็นต้น เพื่อให้สามารถแสดงสารสนเทศได้มากขึ้น บิตจึงถูกรวมต่อกันเข้าเป็นสายเพื่อแสดงสารสนเทศ โดยนำบิตเหล่านั้นมาทำให้เป็นหน่วยที่ใหญ่ขึ้นเรียกว่าไบต์ (byte)
       ไบต์ ประกอบขึ้นมาจากบิตหลาย ๆ บิตมาเรียงต่อกัน แต่เนื่องจากคอมพิวเตอร์เข้าใจเพียงเลข 0 และเลข 1 เท่านั้นถ้าต้องการให้คอมพิวเตอร์รูปจักอักขระตัวอักษร A,B….,Z จะต้องมีการเอาเลข 0 และเลข 1 มาเรียงต่อกันเป็นรหัสแทนอักขระ โดยปกติ 1 ตัวอักขระจะมีความยาว 8 บิต ซึ่งเท่ากับ 1 ไบต์ จำนวนบิตที่นำมาเรียงต่อกันเป็นไบต์นี้แตกต่างกันไปตามรหัสแทนข้อมูล รหัสแทนข้อมูลที่ใช้กันแพร่หลายมี 2 ระบบคือ รหัสเอบซีดิก (EBCDIC) และรหัสแอสกี (ASCII) ใช้ 8 บิต รวมกันเป็น 1 ไบต์ โดย 1 ไบต์ จะใช้แทนอักขระ 1 ตัว
       เมื่อเรานำอักขระหลายๆตัวรวมกันโดยมีความหมายอย่างใดอย่างหนึ่งเราจะเรียกว่า เขตข้อมูลหรือฟิลด์ (filed) เช่น การรวมของตัวอักษรและตัวเลขเพื่อใช้แทนรหัสลูกค้า เช่น ‘C0100001’ เป็นต้น ฟิลด์คือกลุ่มของอักขระที่สัมพันธ์กันตั้งแต่ 1 ตัวขึ้นไปที่นำมารวมกันแล้วแสดงลักษณะหรือความหมายอย่างใดอย่างหนึ่ง
       ฟิลด์ คือ กลุ่มของอักขระทีสัมพันธ์กัน ตั้งแต่ 1 ตัวขึ้นไปที่นำมารวมกันแล้วแสดงลักษณะหรือความหมายอย่างใดอย่างหนึ่ง ฟิลด์แต่ละฟิลด์ยังแยกออกเป็นประเภทข้อมูล ซึ่งจะบ่งบอกว่าในเขตฟิลด์นั้นบรรจุข้อมูลประเภทใดไว้ สามารถแยกประเภทของฟิลด์ได้เป็น 3 ประเภทคือ
          - ฟิลด์ตัวเลข (numeric field) ประกอบด้วย อักขระที่เป็นตัวเลข ซึ่งอาจเป็นเลขจำนวนเต็มหรือทศนิยมและอาจมีเครื่องหมายลบหรือบวก เช่น ยอดคงเหลือในบัญชีเป็นกลุ่มของตัวเลข
          - ฟิลด์ตัวอักษร (alphabetic field) ประกอบด้วย อักขระที่เป็นตัวอักษรหรือช่องว่าง (blank) เช่น ชื่อลูกค้าเป็นกลุ่มของตัวอักษร
          - ฟิลด์อักขระ (character field หรือ alphanumeric field) ประกอบด้วย อักขระซึ่งอาจจะเป็นตัวเลขหรือตัวอักษรก็ได้ เช่น ที่อยู่ของลูกค้า
       ข้อมูลที่ปรากฏอยู่ในฟิลด์ เป็นหน่วยย่อยของระเบียนที่บรรจุอยู่ในแฟ้มข้อมูล เช่น ฟิลด์เลขรหัสประจำตัวบุคลากร ฟิลด์เงินเดือนของลูกจ้าง หรือฟิลด์เลขหมายโทรศัพท์ของพนักงาน ตัวอย่าง เช็คของธนาคารแห่งหนึ่งประกอบด้วย ชื่อที่อยู่ธนาคาร เช็คเลขที่ จ่ายจำนวนเงินเป็นตัวเลข จำนวนเงินเป็นตัวอักษร สาขาเลขที่ เลขที่บัญชี และลายเซ็น

       ฟิลด์บางฟิลด์อาจจะประกอบด้วยข้อมูลหลาย ๆ ประเภทรวมกันในฟิลด์ เช่น ฟิลด์วันที่ประกอบด้วย 3 ฟิลด์ย่อย ๆ คือ วันที่ เดือน และปี หรือในฟิลด์ชื่อธนาคาร ยังประกอบด้วยหลายฟิลด์ย่อย ๆ คือ ชื่อธนาคาร ที่อยู่ เมือง ประเทศ และรหัสไปรษณีย์

วันอังคารที่ 4 พฤศจิกายน พ.ศ. 2557

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

วิธีการสร้างฐานข้อมูล
1.    เปิดเบราเซอร์เข้าลิ้งค์ http://localhost.
2.       คลิกที่ phpMyAdmin หรือเข้าที่ลิ้งค์ http://localhost/phpmyadmin

 3.    ชื่อผู้ใช้งาน ใส่ root
  - รหัสผ่าน อันเดียวกับตอนที่ติดตั้ง appserv
 4. ใส่ชื่อของฐานข้อมูลที่ต้องการ และคลิก สร้าง




5. ฐานข้อมูลถูกสร้างแล้ว