14 ธ.ค. 2557

คำสั่ง SQL

1.คำสั่ง CREATE TABLE
CREATE TABLE phonebook (id INT (4) NOT NULL
AUTO_INCREMENT, fname VARCHAR (35) , lname VARCHAR (35) ,
email VARCHAR (50) , office VARCHAR (200) , province CHAR (2) ,
PRIMARY KEY(id), UNIQUE(id), INDEX(id)) 
               โดยทั่วไปขนาดของตารางข้อมูลหนึ่งๆ จะมีขนาดไม่เกิน 2G หรือ 4G ขึ้นอยู่กับระบบปฏิบัติการ เราสามารถทำให้ประหยัดเนื้อที่ได้อีกโดยการบีบอัด (PACK) ข้อมูลดัชนี ซึ่งสามารถให้บีบอัดโดยกำหนดค่าPACK_KEYS=1 การบีบอัดนี้จะทำให้การทำงานช้าลง แต่ก็ประหยัดเนื้อที่ขึ้น และตามปกติถ้าผู้ใช้ไม่ได้กำหนดให้บีบอัด ข้อมูลที่เป็นสตริงหรือตัวอักษรก็จะได้รับการบีบอัดข้อมูลอยู่แล้ว สำหรับข้อมูลตัวเลข ค่าการทำงานปกติจะไม่รับการบีบอัด เว้นแต่กำหนดการบีบอัดด้วยการใช้ UNION จะใช้กรณีที่ต้องการรวมตารางข้อมูลหลายๆ ตารางเข้าด้วยกันเป็นอันเดียว ซึ่งจะทำงานกับตารางประเภท MERGE เท่านั้น

2.คำสั่ง DROP TABLE
DROP TABLE phonebook
             เป็นคำสั่งเพื่อให้ลบตารางข้อมูลออกจากระบบ สำหรับออปชัน RESTRICT และ CASCADE ยังไม่สามารถงานได้ในปัจจุบัน เนื่องจากเป็นความสามารถที่มีแผนจะรองรับในอนาคต สำหรับการใช้คำสั่ง DROP  TABLE จะต้องให้ความระมัดระวังในการใช้งานเป็นอย่างยิ่ง โดยเฉพาะการทำงานกับตารางข้อมูลประเภทnontransaction  เพราะจะทำการ commit การทำงานโดยอัตโนมัติ

3.คำสั่ง DELETE
DELETE FROM phonebook WHERE id=4
               เป็นคำสั่งสำหรับลบข้อมูลจากตาราง โดยสามารถกำหนดเงื่อนไขสำหรับการลบได้ ซึ่งถ้าไม่ได้ระบุเงื่อนไข จะเป็นการลบข้อมูลทั้งหมดออกจากตาราง และถ้าอยู่ใน AUTOCOMMIT mode (กรณีปกติทั่วไป) จะไม่สามารถทำการยกเลิกการลบครั้งนี้ได้
4.คำสั่ง TRUNCATE
TRUNCATE phonebook
เป็นคำสั่งที่ให้ผลเช่นเดียวกับ DELETE FROM table_name แต่มีข้อแตกต่างดังนี้
- จะทำการดรอปตารางข้อมูลก่อน แล้วทำการสร้างใหม่ ซึ่งจะให้ผลที่เร็วกว่าการลบตารางทั้งหมด
- การทำงานเป็น non-transaction ไม่สามารถทำการยกเลิกได้

5.คำสั่ง SELECT
SELECT id, fname FROM phonebook ORDER BY fname DESC
           เป็นคำสั่งสำหรับการแสดงผล หรือการดึงข้อมูลจากตาราง โดยสามารถกำหนดเงื่อนไข รูปแบบและวิธีการได้อย่างหลากหลาย การดึงข้อมูลสามารถระบุว่าจะเลือกจากตารางเดียว หรือหลายตารางก็ได้
           การใช้ LIMIT rows ก็จะช่วยกำหนดให้ทำการดึงข้อมูลจากตาราง ได้ไม่เกินจำนวนแถว rows ที่ระบุ
การใช้คำสั่งคีย์เวิร์ดตามหลัง SELECT จะต้องใช้ให้ถูกต้อง มีบางคีย์เวิร์ดที่ต้องใช้เรียงลำดับกัน เช่น
HAVING clause ต้องใช้ตามหลัง GROUP BY clause และใช้ก่อน ORDER BY clause  เป็นต้น

            ตามปกติหากไม่ได้ระบุวิธีการจัดเรียงข้อมูล ก็จะเป็นการเรียงจากน้อยไปมาก (Ascending) หรือ คีย์เวิร์ด  ASC แต่ถ้าต้องการเรียงจากมากไปน้อย (Descending) ให้ใช้คีย์เวิร์ด DESC
การใช้คีย์เวิร์ด HAVING จะใช้ในกรณีร่วมกับ GROUP BY ซึ่งก็เป็นการกำหนดเงื่อนไขในการดึงข้อมูล ด้วยคำสั่ง SELECT
SELECT id,fname FROM phonebook GROUP BY fname HAVING id>2

6.คำสั่ง FLUSH
FLUSH TABLES phonebook
             เป็นคำสั่งที่ใช้สำหรับการลบหน่วยความจำภายใน (Internal Cache) ที่ใช้งาน ทั้งนี้การใช้คำสั่ง FLUSH  จะอนุญาตเฉพาะ user ที่มีสิทธิ์ (Privilege) เท่านั้น  Flush_option สามารถระบุได้ดังนี้
           -HOSTS ทำการล้าง hose cache table เพื่อปรับปรุงข้อมูลของ host หรือ client ที่คอนเน็กเข้าใช้งาน ซึ่งอาจมีการเปลี่ยนแปลง IP address หรืออื่นๆ โดยเมื่อทำการ flush เรียบร้อยแล้ว ก็จะอนุญาตให้ host นั้นๆ ทำการคอนเน็กเข้ามาใหม่อีกครั้งหนึ่ง
           -LOGS ปิดและเปิด log files ใหม่
           -PRIVILEGES ทำการ reload สิทธิ์ต่างๆ ของ user จาก grant tables ของ MySQL Server
           -TABLES ปิด tables ทั้งหมด หากตารางใดยังถูกเปิดอยู่ ก็จะถูก force ให้ปิดลง

7.คำสั่ง SHOW
SHOW DATABASES
           เป็นคำสั่งสำหรับแสดงรายละเอียด (Information) ของ databases, tables, columns หรือ สถานะต่างๆของServer แสดงรายละเอียดของ Databases, Tables, Columns และ Indexes
SHOW DATABASES แสดงรายชื่อ databases ทั้งหมดในระบบฐานข้อมูล
SHOW TABLES แสดงรายชื่อ tables ทั้งหมดของ current database
SHOW OPEN TABLES แสดงรายชื่อ tables ที่ถูกเปิดอยู่ในปัจจุบัน
SHOW COLUMNS แสดงรายละเอียดฟิลด์ทั้งหมดใน table นั้น (ให้ผลลัพธ์เช่นเดียวกับคำสั่ง DESCRIBE)
SHOW FIELDS ให้ผลลัพธ์เช่นเดียวกับ SHOW COLUMNS
SHOW INDEX แสดงรายละเอียดว่ามีดัชนีอะไรบ้างสำหรับ table นั้นๆ
SHOW KEYS ให้ผลลัพธ์เช่นเดียวกับ SHOW INDEX

8.คำสั่ง GRANT และ REVOKE
GRANT ALL PRIVILEGES ON demo TO user1@localhost WITH GRANT OPTION
REVOKE ALL PRIVILEGES ON demo FROM user1@localhost
- คำสั่ง GRANT เป็นคำสั่งสำหรับการกำหนดสิทธิ์หรือความสามารถใดๆ ให้กับ user
- คำสั่ง REVOKE หรือคำสั่งที่ตรงกันข้ามกับ GRANT คือเป็นการถอนหรือยกเลิกสิทธิ์ใดๆ จาก user
การใช้คำสั่ง GRANT หรือ REVOKE จะอนุญาตเฉพาะผู้บริหารระบบในการกำหนดสิทธิ์ต่างๆ สำหรับผู้ใช้    

MySQL จะแบ่งสิทธิ์ (Privilege) เป็น 4 ระดับ คือ
     1. Global level
    ระดับบนสุด ครอบคลุมทุก database รายละเอียดสำหรับสิทธิ์ของระดับนี้จะถูกเก็บไว้ในตาราง
mysql.user
     2. Database level
    ระดับ database ครอบคลุมเฉพาะใน database อันใดอันหนึ่ง เช่น ความสามารถในการกระทำใดๆ
ภายใน database นั้นๆ รายละเอียดสำหรับสิทธิ์ของระดับนี้ จะถูกเก็บไว้ในตาราง mysql.db และ mysql.host
     3. Table level
    ระดับ table ครอบคลุมเฉพาะภายในตารางนั้นๆ เช่น ความสามารถในการกระทำกับ table นั้นๆ
สามารถทำการ select, insert, delete, update ได้หรือไม่ เป็นต้น รายละเอียดสำหรับสิทธิ์ของระดับนี้ จะถูกเก็บอยู่ในตาราง mysql.tables_priv
      4. Column level
     ระดับ column ครอบคลุมเฉพาะฟิลด์ใดฟิลด์หนึ่งภายในตารางข้อมูล รายละเอียดสำหรับสิทธิ์ของระดับนี้ จะถูกเก็บอยู่ในตาราง mysql.columns_priv

9.คำสั่ง INSERT
INSERT INTO phonebook (id, fname, lname, email, office, province)
VALUES (6, 'sineenat', 'phradmali', 'sineenat@health.moph.go.th', 'ศทส.', '12')
       เป็นคำสั่งสำหรับการเพิ่มแถวข้อมูล หรือระเบียนใหม่เข้าตารางข้อมูล

10.คำสั่ง ALTER TABLE
ALTER TABLE phonebook ADD tel VARCHAR(30)
       ALTER TABLE เป็นคำสั่งสำหรับการปรับเปลี่ยนแก้ไขโครงสร้างของตารางข้อมูล เช่น การเพิ่ม-ลบฟิลด์, การสร้าง-ลบดัชนี, การเปลี่ยนประเภทข้อมูลของฟิลด์, การเปลี่ยนชื่อฟิลด์ เป็นต้น

30 พ.ย. 2557

ข้อสอบโอเน็ตการงานอาชีพ(คอมพิวเตอร์) O-NET

1.ข้อใด ไม่มี ระบบการทำงานพื้นฐานแบบคอมพิวเตอร์
ก.เครื่องคิดเลข
ข.นาฬิการะบบดิจิทัล
ค.เครื่องฝาก - ถอนเงินอัตโนมัติ
ง.เครื่องคำนวณร้านสะดวกซื้อ

2.อุปกรณ์ชนิดใดใช้เทคโนโลยีจานแสง (Optical Technology)
ก.เครื่องเล่นเทป
ข.หน่วยขับซีดีรอม
ค.หน่วยความจำแบบแฟลช
ง.อุปกรณ์รับเข้าแบบจอสัมผัส

3.ปัจจุบันเครื่องรับโทรทัศน์ที่ใช้เทคโนโลยีใหม่โดยมีขนาดบางและความคมชัดสูง ซึ่งเลือกใช้จอแสดงภาพชนิดใด
ก.CRT
ข.LCD
ค.LED
ง.PLASMA

4.ผู้ประกอบอาชีพ เป็นผู้พัฒนาเว็บไซต์ต้องเชี่ยวชาญความรู้ด้านใดบ้าง จากตัวเลือกต่อไปนี้
ก. ฮาร์ดแวร์คอมพิวเตอร์ ง. HTML ข. ระบบปฏิบัติการ จ. ระบบฐานข้อมูล ค. เว็บเซิร์ฟเวอร์ ฉ. ภาษาจาวา (Java)
ก.ข้อ ก. และ ค.
ข.ข้อ ข. และ จ.
ค.ข้อ ค. และ ง.
ง.ข้อ ค. และ จ.

5.ห้องสมุดแห่งหนึ่งต้องการพัฒนาระบบการยืมหนังสือโดยสามารถบันทึกข้อมูลการยืมหนังสือลงบนบัตรอิเล็กทรอนิกส์โดยไม่ต้องเขียนด้วยมือ ระบบนี้ควรใช้เทคโนโลยีในข้อใด
ก.Smart Card
ข.Fingerprint
ค.Barcode
ง.Wi-Fi
  
6.ข้อใดต่อไปนี้ถูกต้องที่สุด
ก.การบันทึกข้อมูลลงแผ่นดีวีดีใช้เทคโนโลยีแบบแม่เหล็ก
ข.หมายเลขไอพีเป็นหมายเลขที่ใช้กำกับ Network Interface Card
ค.หน่วยความจำสำรองเป็นหน่วยความจำที่มีคุณลักษณะแบบ Valatile
ง.รหัส ASCII และ EBCIDIC เป็นการวางรหัสตัวอักษรที่ใช้ขนาด 8 บิต


7.ระบบปฏิบัติการ Unix สามารถใช้งานไฟล์ ร่วมกับระบบปฏิบัติการใดได้
ก.ระบบปฏิบัติการ Mac OS
ข.ระบบปฏิบัติการ System V
ค.ระบบปฏิบัติการ Palm OS
ง.ระบบปฏิบัติการ Pocket PC OS

8.ข้อใดเป็นลักษณะของระบบปฏิบัติการ Linux
ก.ใช้เป็นระบบปฏิบัติการในโทรศัพท์มือถือ
ข.มีการติดต่อกับผู้ใช้งานรูปแบบบรรทัดคำสั่ง
ค.เป็นระบบปฏิบัติการที่มีการเปิดเผยโค้ดให้ดาวน์โหลดได้
ง.รูปแบบหน้าต่างคล้ายระบบปฏิบัติการ MS-DOS

9.ขณะใช้งานอินเทอร์เน็ต ปรากฎหน้าต่างที่ไม่ต้องการ ออกมารบกวนอยู่เสมอ และทำให้เครื่องคอมพิวเตอร์ทำงานช้าลง เหตุการณ์นี้เกิดจากโปรแกรมใด
ก.เวิร์ม
ข.ไวรัส
ค.สปายแวร์
ง.ม้าโทรจัน

10.ระบบปฏิบัติการแมคอินทอช เหมาะกับผู้ที่ทำงานในอาชีพใดต่อไปนี้มากที่สุด
ก.นักบัญชี
ข.ผู้สื่อข่าว
ค.นักตัดต่อภาพยนตร์
ง.ผู้ประกอบธุรกิจขายปลีก

 ที่มา http://www.trueplookpanya.com/examination/answer/10209/2809557
http://www.trueplookpanya.com/examination/answer/10210/2810366

23 พ.ย. 2557

PHP FUNCTION: ฟังก์ชันเกี่ยวกับข้อมูล Array

ฟังก์ชันเกี่ยวกับข้อมูล Array
         ภาษา PHP ได้เตรียมฟังก์ชันเกี่ยวกับการเก็บข้อมูลและการประมวลผลใน array ไว้เป็นจำนวน
มากสามารถทำการประมวลผลได้อย่างครบถ้วนทั้งการค้นหา การจัดเรียง การคัดแยก การนำข้อมูลเข้าใน array การคำนวณใน array การใช้ array เป็นโครงสร้างข้อมูล stack ฯลฯ เป็นต้น  รายชื่อของฟังก์ชันที่เกี่ยวข้องกับ array แบ่งเป็นกลุ่มต่างๆ แสดงได้ดังนี้
2 1) ฟังก์ชันเกี่ยวกับการกำหนด การเปลี่ยนแปลงข้อมูลใน array
            • array array ( )
สร้างข้อมูล array ใหม่กำหนดให้ตัวแปร ตัวอย่างการใช้อยู่ในหัวข้อ 2.8 ในบทที่ 2

             • array array_rand (array input [, int num_req])
ทำการสุ่มเลือกค่า key (index) จาก array เป็นจำนวนที่ต้องการ ให้ผลลัพธ์เป็น array
ของ key/index ที่สุ่มได้มีจำนวน element ตามที่ระบุใน argument num_req หากไม่
ระบุnum_req จะสุ่มค่า index/key มาให้เพียง 1 ตัว
เช่น
<?
$input = array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun");
echo $input[array_rand($input)],"<br>\n";
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] ,"<br>\n";
echo $input[$rand_keys[1]] ,"<br>\n";
print_r ($rand_keys);
?>
            • array array_fill ( int start_index, int num, mixed value)
ให้ผลเป็น array ที่มี index เริ่มตั้งแต่ start_index มีจำนวน element เท่ากับจำนวนที่
ระบุใน num ให้ทุกๆ element มีข้อมูลเป็นค่าที่ระบุใน value ตัวอย่างเช่น
$a = array_fill (3, 5, "None");
จะได้ตัวแปร array $a ที่มี element ได้แก่
Array ( [3]=>"None", [4]=>"None", [5]=>"None", [6]=>"None", [7]=>"None" )
            • int extract ( array var_array [, int extract_type [, string prefix]])
สร้างตัวแปรจาก associative array โดยใช้ key ของ element เป็นชื่อตัวแปรและค่าใน
element เป็นค่าของตัวแปรที่สร้างขึ้น สามารถกำหนดทางเลือกของการสร้างตัวแปรโดยระบุ
extract_type และกำหนดคำนำหน้าชื่อตัวแปรด้วย prefix ได้ตัวอย่างเช่น
$ar = array('a'=>100,'b'=>34,'c'=>69,'d'=>35,'e'=>20);
extract ($ar); จะสร้างตัวแปรขึ้น 5 ตัวได้แก่ $a, $b, $c, $d, $e มีข้อมูลเป็น 100,
34, 69, 35, 20 ตามลำดับ
         ทางเลือกของการสร้างตัวแปรในฟังก์ชัน extract (extract_type) สามารถใช้ชื่อ
constant ได้ดังนี้
o EXTR_OVERWRITE หากมีตัวแปรชื่อที่ซ้ำอยู่แล้วให้ทับตัวแปรนั้นด้วยข้อมูลที่ extract
จาก array
o EXTR_SKIP หากมีตัวแปรชื่อที่ซ้ำอยู่แล้วให้ข้ามตัวแปรนั้นไม่ต้องเปลี่ยนแปลงค่า
WEB PROGRAMMING
Using PHP. and MySQL.98 98
o EXTR_PREFIX_SAME หากมีตัวแปรชื่อที่ซ้ำอยู่แล้วให้นำหน้าชื่อตัวแปรใหม่ที่ซ้ำด้วย
prefix
o EXTR_PREFIX_ALL ให้สร้างตัวแปรทั้งหมดจาก array โดยใส่ prefix นำหน้าชื่อตัวแปร
ทุกตัว
o EXTR_PREFIX_INVALID ให้สร้างตัวแปรโดยใช้ prefix นำหน้าชื่อเฉพาะชื่อที่ผิดวิธีการ
ตั้งชื่อเท่านั้น ส่วนตัวแปรที่ key ตรงตามวิธีตั้งชื่ออยู่แล้วไม่ต้องนำหน้าชื่อตัวแปรใหม่ด้วย
prefix
o EXTR_IF_EXISTS ให้ทับตัวแปรที่มีอยู่แล้วเฉพาะตัวแปรที่อยู่ใน symbol table แล้ว
เท่านั้น
o EXTR_PREFIX_IF_EXISTS ให้สร้างตัวแปรนำหน้าชื่อด้วย prefix หากชื่อตัวแปรนั้นมีอยู่
แล้วใน symbol table
o EXTR_REFS ทำการ extracts ตัวแปรแบบ references คืออ้างอิงไปยังข้อมูลใน array
ดังนั้นตัวแปรที่เกิดขึ้นใหม่จะชี้ไปยังข้อมูลเดียวกับ element ใน array สามารถใช้ type นี้
ร่วมกับวิธีอื่นได้โดยการ OR เช่น EXTR_SKIP OR EXTR_REFSค่า default ของ
extract_type คือ EXTR_OVERWRITE
ผลลัพธ์จากฟังก์ชันนี้จะให้ตัวเลขจำนวนเต็มแสดงจำนวนตัวแปรที่สร้างขึ้นได้สำเร็จ

        • array compact ( mixed varname [, mixed varname[,...]])
เป็นฟังก์ชันที่ทำงานตรงข้ามกับ extract คือจะรวมเอาตัวแปรต่างๆ เข้ามาเป็น array และ
ให้ผลลัพธ์เป็น array ที่รวมตัวแปรต่างๆ เข้ามา โดย key ของ array ได้มาจากชื่อตัวแปร และค่าที่เก็บใน array element คือค่าข้อมูลที่มาจากตัวแปร การส่งชื่อตัวแปรสามารถใช้เป็น string แสดงชื่อตัวแปร หรือส่งเป็น array ที่บรรจุ string ชื่อของตัวแปรก็ได้เช่น
$uName = "James Bond";
$uFavColor = "red";
$lastAccess = date( "r");
$my_env = compact ('uName','uFavColor','lastAccess');
or
$env_vars = array('uName','uFavColor','lastAccess');
$my_env = compace($env_vars);
จากตัวอย่างข้างต้นไม่ว่าจะใช้ฟังก์ชัน compact ส่งชื่อตัวแปรแต่ละตัวใน argument
หรือส่ง array ที่บรรจุชื่อตัวแปร ก็จะได้รับผลเหมือนกัน คือได้ array ที่มี 3 elements ได้แก่
$my_env ['uName'] => "James Bond"
$my_env['uFavColor'] => "red" และ
$my_env['lastAccess'] => ข้อความวันที่และเวลาที่ได้จากตัวแปร $lastAccess

2 2) ฟังก์ชันเกี่ยวกับ index, internal pointer ของ array
      • array array_keys ( array ary [, mixed search_value])
ให้ผลลัพธ์เป็น array ของ key ที่มาจาก ary หากมีการระบุ search_value จะให้ผลเฉพาะ
key ของ element ที่มีค่าข้อมูล (value) ตรงกับ search_value เท่านั้น เช่น
$a1 = array(0 => 100, "color" => "red");
$a2 = array_keys($a1); //
$b1 = array("blue", "red", "green", "blue", "blue");
$b2 = array_keys($b1, "blue");
$c1 = array("color" => array("blue", "red", "green"),
 "size" => array("small", "medium", "large"));
$c2 = array_keys($c1);
ในตัวอย่างข้างต้นนี้จะได้ผลลัพธ์ได้แก่
$a2 = Array([0] => 0, [1] => color)

บทที่ 3
ฟังก์ชันมาตรฐานของภาษา PHP.99
$b2 = Array([0] => 0, [1] => 3, [2] => 4)
$c2 = Array([0] => color, [1] => size)
ตัวแปร array ในภาษา PHP แต่ละตัวจะมี internal pointer เพื่อใช้ชี้ตำแหน่ง element โดย
อัตโนมัติเมื่อไม่มีการระบุค่า key หรือ index (เช่น $a[ ] = 20) เมื่อมีการใช้งาน internal pointerเพื่ออ้างถึง element แล้ว internal pointer จะเลื่อนไปชี้ element ถัดไปโดยอัตโนมัติในการเขียนโปรแกรมสามารถใช้ฟังก์ชันเพื่อควบคุมหรือใช้งาน internal pointer ของตัวแปร array แต่ละตัวได้โดยมีฟังก์ชันที่เกี่ยวข้องดังนี้
      • mixed key(array ary)
ให้ค่า key ของตัวชี้ภายใน array ที่ชี้อยู่ปัจจุบัน
      • mixed next(array ary)
เลื่อนตำแหน่งตัวชี้ภายในของ array $ary (internal pointer )ไปยัง element ถัดไป
และให้ผลลัพธ์เป็นค่าที่เก็บใน element ที่ถูกชี้ใหม่
      • mixed prev(array ary)
เลื่อนตำแหน่งตัวชี้ภายในของ array $ary (internal pointer ) กลับไปยัง element ก่อน
หน้า และให้ผลลัพธ์เป็นค่าที่เก็บใน element ที่ถูกชี้
      • mixed end (array ary)
ตั้งตำแหน่งตัวชี้ภายในของ array $ary (internal pointer )ไปยัง element สุดท้าย และ
ให้ผลลัพธ์เป็นค่าที่เก็บใน element สุดท้ายนั้น
      • mixed reset (array ary)
ตั้งตำแหน่งตัวชี้ภายในของ array (internal pointer )ไปยัง element แรกสุด และให้
ผลลัพธ์เป็นค่าที่เก็บใน element แรกนั้น
       • array each (array ary)
      ให้ผลลัพธ์เป็น array 4 elements ที่ให้ข้อมูลเกี่ยวกับ element ปัจจุบันที่ถูกชี้ด้วย
pointer ของ array ary ซึ่ง element ทั้งสี่ของผลลัพธ์ได้แก่ [0][1]['key'] และ ['value'] โดย
element [0] และ ['key'] จะมีข้อมูลจาก index/key ของ array ary ส่วน element [1] และ
['value'] จะมีข้อมูลที่มาจากข้อมูลใน array ary ตัวอย่างเช่น
<?
$prod = array('10023''=>'Cracker', '56712'=>'Apple',
'84678'=>'Scooby');
$elem = each($prod);
?>
จะได้ตัวแปร $elem เป็น array ที่มีข้อมูลได้แก่ (ตัวชี้ใน array จะเริ่มชี้ที่ element แรก)
[0] => '10023', [1] =>'Cracker', [key]=>'10023', [value] =>'Cracker'
WEB PROGRAMMING
Using PHP. and MySQL.100 100
ฟังก์ชันนี้สามารถใช้แทน foreach เพื่อเข้าถึงแต่ละ element ใน array ได้โดยใช้กับ
while เช่น
<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
reset($fruit);
while (list($key, $val) = each($fruit)) {
 echo "$key => $val\n";
}
?>

2 3) การค้นหาและเลือกข้อมูลใน array
      • array array_filter ( array input [, callback callback])
ฟังก์ชัน array_filter จะให้ผลเป็น array ที่กรองเอาเฉพาะข้อมูลใน element ที่ตรงตาม
เงื่อนไขที่กำหนดโดยการใช้ฟังก์ชันที่สร้างขึ้น (callback function) ซึ่งจะยังคง key เดิมไว้ด้วย การสร้าง callback function จะต้องรับค่าจาก value ของแต่ละ element ใน array เข้าใน argumentเพื่อนำไปตรวจสอบและให้ผลเป็น boolean โดย element ที่จะถูกเลือกไปเป็นผลลัพธ์เป็น element ที่ให้ผลลัพธ์เป็น true เท่านั้น ตัวอย่างเช่น หากต้องการให้กรองเอาเฉพาะ element ที่มีข้อความที่มี
ความยาว 3 อักขระ เท่านั้น สามารถสร้างฟังก์ชันตรวจสอบและใช้ฟังก์ชัน array_filter ( ) ได้ดังนี้
<?
function acpt_str($str) {
$len = strlen($str);
return ($len==3);
}
$a = array("somsri","eak","surapont","meta","jim","nut");
$b = array_filter($a,"acpt_str");
print_r($b);
?>
ผลลัพธ์จะได้ array $b ที่มีข้อมูลดังนี้
Array ( [1] => eak [4] => jim [5] => nut )

        • bool in_array ( mixed needle, array haystack [, bool strict])
ฟังก์ชัน in_array( ) ใช้ตรวจสอบว่ามีข้อมูลที่ระบุตรงกับข้อมูลใน element ใดของ array
หรือไม่ โดยจะให้ผลเป็น Boolean แสดงว่าพบหรือไม่ argument ของฟังก์ชันนี้ได้แก่
o needle คือข้อมูลที่ต้องการค้นหาเป็นข้อมูลชนิดใดๆ
o haystack คือ array ที่ทำการค้นหาข้อมูล
o stict เป็น Boolean ระบุว่าต้องการตรวจสอบข้อมูลที่ตรงชนิดกันด้วยหรือไม่ (เนื่องจาก
ปกติ PHP จะแปลงชนิดข้อมูลให้เอง) หากเป็น true คือชนิดต้องตรงกันด้วย
ตัวอย่างเช่น
in_array(30,array('abc','30years','beatle'))
ให้ผล true เนื่องจาก 30 เมื่อเปรียบเทียบกับข้อมูล '30years' PHP จะแปลงให้เป็นชนิด
integer ซึ่งได้ 30 เช่นกันแต่หากกำหนด strict เป็น true เช่น
in_array(30,array('abc','30years','beatle'),true)
จะให้ผล false เนื่องจาก 30 และ '30years' มีชนิดข้อมูลต่างกัน
หากข้อมูลที่ต้องการค้นหาเป็นข้อความจะเปรียบเทียบแบบ case sensitive คือถืออักษรตัว
ใหญ่เล็กมีความต่างกัน เช่น
in_array ('Abc', array('abc','30years','beatle'))
จะให้ผล false เนื่องจาก 'Abc' และ 'abc' มีตัว A และ a แตกต่างกัน

      • mixed array_search ( mixed needle, array haystack [, bool strict])
ฟังก์ชัน array_search ทำหน้าที่ตรวจสอบว่ามีข้อมูลตรงกับ element ใดๆ ใน array หรือไม่
เช่นเดียวกันกับฟังก์ชัน in_array( ) แต่จะให้ผลลัพธ์เป็นค่า key ของ element ที่พบ หรือให้ค่า false
หากไม่พบ (ดูรายละเอียดของ argument ต่างๆ ในฟังก์ชัน in_array( ) ที่ผ่านมาแล้ว)

       • bool array_key_exists ( mixed key, array ary)
เป็นฟังก์ชันที่ทำการตรวจสอบว่าใน array ary มี element ที่มีค่า key ตามที่ระบุใน
argument key หรือไม่ จะให้ผลเป็น Boolean แสดงว่าพบให้ค่า true หรือไม่พบให้ค่า false

2 4) การจัดเรียงข้อมูลใน array
การจัดเรียงลำดับข้อมูลใน array มีการจัดเรียงลำดับจากข้อมูล 2 ส่วนได้แก่ จากข้อมูลที่เก็บ
ในแต่ละ element หรือจาก value และการเรียงลำดับจาก key/index ที่เป็นตัวชี้ element ต่างๆ ซึ่งสามารถใช้เป็นข้อความได้ (คือ associative array) และการจัดเรียงลำดับยังอาจจะจัดเรียงจากข้อมูลน้อยไปหามาก (ascending) หรือมากไปหาน้อย (descending) หรือเรียกว่า reverse order หากเป็นข้อความภาษาอังกฤษยังอาจมีการเรียงโดยเป็นลักษณะ case sensitive หรือ case insensitive คือแยกความแตกต่างระหว่างอักษรตัวใหญ่ (A-Z) กับตัวเล็ก (a-z) หรือไม่ กรณี case sensitive ถือว่าอักษร a กับ A ต่างกัน แต่หากเป็น case insensitive ถือว่าอักษร a กับ A เหมือนกันฟังก์ชันการเรียงลำดับข้อมูลใน array ของภาษา PHP มีฟังก์ชันต่างๆ ได้แก่ sort ( ), rsort
( ), arsort( ), asort( )
       • bool sort ( array $ary [, int sort_flags])
ฟังก์ชัน sort( ) เรียงลำดับข้อมูลใน array จากน้อยไปมาก สามารถกำหนดให้เรียงลำดับแบบ
ตัวเลขหรือแบบข้อความได้ฟังก์ชันนี้จะจัด index ให้ใหม่โดยจะยกเลิก key/index เดิม มีลักษณะการจัดเรียงข้อความแบบ case sensitive คือถืออักษรตัวใหญ่และตัวเล็กแตกต่างกันผลลัพธ์จากฟังก์ชันนี้นอกจากจะจัดเรียงข้อมูลที่อยู่ใน array $ary แล้ว ยังให้ผลลัพธ์เป็น trueหากสามารถจัดเรียงได้สำเร็จ หากไม่สามารถจัดเรียงได้จะให้ผลเป็น false

      sort_flags เป็นการกำหนดวิธีการจัดเรียงมี 3 วิธีได้แก่
• SORT_REGULAR – เรียงตามชนิดข้อมูล (เป็นค่า default)
• SORT_NUMERIC – เรียงแบบตัวเลข
• SORT_STRING – เรียงแบบข้อความ
ตัวอย่างเช่น
$a = array('cameroon', 'bolivia', 'Norway', 'finland', 'finland/2',
'finland18');
sort($a);
ผลลัพธ์ตัวแปร $a หลังจากการจัดเรียงจะได้
Array([0]=>Norway, [1]=>bolivia, [2]=>cameroon, [3]=>finland, [4]
=>finland18, [5]=>finland2 )

ตัวอย่างการเรียงลำดับข้อมูลตัวเลข
$a = array(38,198,26,57,9,'');
sort($a);
sort($a, SORT_NUMERIC);
sort($a, SORT_STRING);
WEB PROGRAMMING
Using PHP. and MySQL.102 102
ผลลัพธ์ตัวแปร $a หลังจากการจัดเรียงโดยไม่กำหนด sort_flags หรือกำหนดเป็น
SORT_NUMERIC จะได้
Array ( [0]=>'', [1]=>9, [2]=>26, [3]=>38, [4]=>57, [5]=>198 )
แต่หากกำหนด sort_flags เป็น SORT_STRING จะได้ผลลัพธ์เป็น
Array ( [0]=>'', [1]=>198, [2]=>26, [3]=>38, [4]=>57, [5]=>9 )
     ฟังก์ชัน sort( ) จะทำการยกเลิกและกำหนดค่า key/index ใหม่ดังตัวอย่างนี้
$a = array
('ca'=>'cameroon','bo'=>'bolivia','no'=>'norway','fi'=>'finland');
sort($a);
ผลจากการจัดเรียงจะได้ array $a ใหม่เป็น
Array ([0]=>bolivia, [1]=>cameroon, [2]=>finland, [3]=>norway )

      • bool rsort ( array $ary [, int sort_flags])
ฟังก์ชัน rsort( ) เป็นฟังก์ชันเรียงลำดับเช่นเดียวกับ sort( ) คือจะเรียงลำดับข้อมูล (value) ใน
array โดยจะกำหนด key/index ให้แต่ละ element ใหม่ตามลำดับที่จัดเรียงข้อมูล ข้อมูลข้อความที่
จัดเรียงจะถือว่าอักษรใหญ่กับเล็กเป็นคนละตัว (case sensitive) สามารถกำหนดวิธีจัดเรียงแบบตัวเลข
หรือข้อความได้แต่แตกต่างกันคือจะจัดเรียงจากมากไปหาน้อย (reverse order)
ตัวอย่างการเรียงลำดับข้อมูลตัวเลข
$a = array(38,198,26,57,9,'');
rsort($a);
ผลจากการจัดเรียงด้วย rsort( ) จะได้ array $a ใหม่เป็น
Array ([0]=>198, [1]=>57, [2]=>38, [3]=>26, [4]=>9, [5] =>'')

     • bool asort ( array $ary [, int sort_flags])
ฟังก์ชัน asort( ) เป็นฟังก์ชันเรียงลำดับเช่นเดียวกับ sort( ) คือจะเรียงลำดับข้อมูล (value) ใน
array ข้อมูลข้อความที่จัดเรียงจะถือว่าอักษรใหญ่กับเล็กเป็นคนละตัว (case sensitive) สามารถ
กำหนดวิธีจัดเรียงแบบตัวเลขหรือข้อความได้จะจัดเรียงจากน้อยไปหามาก แต่มีความแตกต่างกันคือ
จะคงค่า key/index ที่สัมพันธ์กับแต่ละ element เดิมไว้
ตัวอย่างเช่น
$a = array
('ca'=>'cameroon','bo'=>'bolivia','no'=>'norway','fi'=>'finland');
asort($a);
ผลจากการจัดเรียงจะได้ array $a ใหม่ด้วย asort( ) จะได้เป็น
Array ( [bo] => bolivia [ca] => cameroon [fi] => finland [no] =>
norway )

      • bool arsort ( array $ary [, int sort_flags])
ฟังก์ชัน arsort( ) เป็นฟังก์ชันเรียงลำดับที่คงค่า key/index ที่สัมพันธ์กับแต่ละ element เดิม
ไว้เช่นเดียวกับ asort( ) แต่จะเรียงลำดับจากมากไปหาน้อย (reverse order)
การเรียงลำดับข้อมูลใน array โดยให้เรียงลำดับตามค่าของ key/index มี 2 ฟังก์ชัน ได้แก่
ksort( ) และ krsort( ) ทั้งสองฟังก์ชันจะจัดเรียงลำดับโดยใช้ key ทั้งที่เป็นตัวเลข (numeric key)
หรือข้อความ (associative array) โดยถือ case sensitive ซึ่ง ksort( ) จะจัดเรียงจากน้อยไปมาก
บทที่ 3
ฟังก์ชันมาตรฐานของภาษา PHP.103
ส่วน krsort( ) จะจัดเรียงจากค่า key มากไปน้อย และสามารถกำหนด sort_flags ได้เช่นเดียวกับ
ฟังก์ชัน sort( )

• bool ksort ( array $ary [, int sort_flags])

• bool krsort ( array $ary [, int sort_flags])
       การจัดเรียงโดยทั่วไปจะจัดเรียงลำดับตามรหัสของอักขระที่เป็น ASCII code แม้แต่ข้อความที่
มีลำดับตัวเลขต่อท้าย เช่น 'prod1', 'prod16', 'prod2', 'prod10'จะถูกเรียงลำดับเป็น 'prod1','prod10', 'prod16', 'prod2' เนื่องจากอักขระเลข 2 มีค่ารหัสมากกว่าเลข 1 แต่ในบางครั้งการเรียงลำดับลักษณะที่มีตัวเลขผสมอยู่เรามักต้องการเรียงลำดับโดยดูค่าของตัวเลขเป็นสำคัญด้วย เช่นตัวอย่างก่อนหน้าต้องการให้เรียงลำดับเป็น 'prod1', 'prod2', 'prod10', 'prod16' ตามลำดับเช่นนี้จะต้องใช้การเรียงลักษณะที่เรียกว่า natural order ซึ่งใน PHP มีฟังก์ชัน 2 ฟังก์ชันได้แก่
natcasesort( ) และ natsort( ) โดย natcasesort( ) จะเป็น case insensitive คือถือว่าตัวอักษร
ภาษาอังกฤษตัวใหญ่และตัวเล็กเหมือนกัน ฟังก์ชันทั้งสองจะคง key ที่สัมพันธ์กับค่าที่เก็บข้อมูลไว้

• void natcasesort (array $ary)

• void natsort (array $ary)
     วิธีการจัดเรียงข้อมูลมีส่วนสำคัญคือการเปรียบเทียบข้อมูลไม่ว่าจะเป็นข้อความหรือตัวเลข ซึ่ง
หากเป็นข้อความจะเปรียบเทียบรหัสของแต่ละอักขระ โดยเริ่มจากซ้ายไปขวาหากพบว่ามีความแตกต่าง
ที่ตำแหน่งใดก็จะให้ผลการเปรียบเทียบตำแหน่งแรกที่พบ ในข้อมูลบางประเภทที่กำหนดเองหรือแม้แต่
เป็นภาษาที่ไม่ใช่ภาษาอังกฤษหากต้องการเรียงลำดับข้อมูลตามความต้องการที่แตกต่างไปจากการ
เปรียบเทียบข้อความตามปกติหรือแม้แต่เป็นตัวเลขที่ไม่ได้เปรียบเทียบตามแบบปกติก็ตาม ก็สามารถ
กำหนดวิธีการเปรียบเทียบข้อมูลเพื่อใช้ในการจัดเรียงเองได้เป็นฟังก์ชันที่สร้างขึ้นเอง (user defined
function)ในภาษา PHP. มีฟังก์ชันการจัดเรียงลำดับข้อมูลใน array ที่สามารถกำหนดวิธีการจัดเรียงข้อมูลเองได้ 3 ฟังก์ชันได้แก่ usort( ) เพื่อจัดเรียงจากน้อยไปมากโดยจัดค่า index/key ให้ใหม่ตามผลการจัดเรียงข้อมูลที่ได้ uasort ( ) จัดเรียงโดยให้คง index/key คู่กับค่าข้อมูลเดิมไว้และ uksort( ) ให้จัดเรียงตาม key โดยใช้ user define function ในการจัดเรียงตาม keyการสร้างฟังก์ชันเปรียบเทียบเพื่อการจัดเรียงข้อมูลจะต้องเป็นฟังก์ชันที่รับ argument 2 ตัวเช่น mycompare($a, $b) เพื่อนำมาเปรียบเทียบกันและให้ผลลัพธ์เป็น integer เพื่อแสดงผลการเปรียบเทียบโดย ให้ผลเป็น 0 หากเปรียบเทียบได้เท่ากัน ให้ผลเป็น ค่าบวกที่มากกว่า 0 หากargument แรกคือ argument ตัวซ้ายมากกว่า argument ตัวที่สองหรือ argument ทางขวาและให้ผลเป็นค่าน้อยกว่า 0 (ค่าลบ) หาก argument ตัวแรกน้อยกว่าตัวอย่างการสร้างฟังก์ชันที่ใช้เปรียบเทียบหากต้องการเปรียบเทียบค่าตัวเลขโดยไม่คำนึงถึงเครื่องหมายบวกลบ (ใช้เฉพาะค่า) สามารถสร้างฟังก์ชันเพื่อเปรียบเทียบได้ดังนี้
function unum_cmp ($n1, $n2) {
$j1 = abs($n1);
$j2 = abs($n2);
$result = $j1 - $j2;
return $result;
}

รูปแบบการใช้ฟังก์ชันจัดเรียงที่กำหนดวิธีเปรียบเทียบเอง
• bool usort ( array $ary, callback cmp_function)
• bool uasort ( array $ary, callback cmp_function)
• bool uksort ( array $ary, callback cmp_function)

ตัวอย่างการใช้ฟังก์ชันเปรียบเทียบที่สร้างเองกับการจัดเรียงข้อมูล
$a = array(143,-50,30,80,20,-60);
usort($a, "unum_cmp");
WEB PROGRAMMING
Using PHP. and MySQL.104 104
จะได้ผลลัพธ์ตัวแปร $a ที่ถูกจัดเรียงแล้วเป็น
Array ([0]=>20, [1]=>30, [2]=>-50, [3]=>-60, [4]=>80, [5]=>143 )
ซึ่งหากใช้ฟังก์ชันการจัดเรียงธรรมดาคือ sort( ) จะได้ผลลัพธ์
Array ([0]=>-60, [1]=>-50, [2]=>20, [3]=>30, [4]=>80, [5]=>143 )

2 5) การคำนวณ ประมวลผล
     • array array_count_values (array ary)
ให้ผลลัพธ์เป็น array ที่แสดงผลการนับจำนวน (ความถี่) ของข้อมูลแต่ละค่าที่มีใน array ary
โดย key ของผลลัพธ์ได้จากค่าข้อมูล และ value ที่เก็บจะเป็นจำนวนครั้งที่ปรากฏใน ary เช่น
$a = array(1, "hello", 1, "world", "hello");
$b = array_count_values($a);
ผลลัพธ์ของตัวแปร $b จะได้ Array ( [1] => 2, [hello] => 2, [world] => 1)

     • mixed array_sum ( array ary)
ฟังก์ชัน array_sum ทำการคำนวณหาค่าผลรวมของข้อมูลที่เก็บใน array ary หากมี
element ใน array ที่มีข้อมูลชนิดอื่นที่ไม่ใช่ตัวเลข จะพยายามแปลงให้เป็นตัวเลขตามวิธีการ
มาตรฐานของ PHP. ผลลัพธ์จะได้เป็นข้อมูลตัวเลขจำนวนเต็มหรือจุดทศนิยมขึ้นกับข้อมูลใน array ary

2 6) การแยก-รวม array
• array array_merge ( array arry1, array arry2 [, array ...])
ฟังก์ชัน array_merge( ) ให้ผลลัพธ์เป็น array ที่ได้จากการรวม array ใน argument โดย
เริ่มจาก element ใน array แรกแล้วเรียงต่อด้วย array ต่อๆ ไป หากมี key/index เป็นข้อความที่ซ้ำ
กัน element ที่มาจาก array หลังจะทับข้อมูลของ element ที่มี string index ที่ตรงกัน

• array array_combine ( array keys, array values)
ให้ผลลัพธ์เป็น array ที่ได้จาก array ใน argument 2 ตัว โดยใช้ค่าข้อมูลใน argument
แรกเป็น (keys) เป็น key/index และใช้ข้อมูลจาก array values เป็นค่าข้อมูล หาก array ทั้งสองใน
argument มีจำนวน element ไม่เท่ากัน หรือเป็น empty array จะให้ผลเป็น false

• array array_slice ( array arry, int offset [, int length])
ฟังก์ชัน array_slice() ให้ผลเป็น array ที่มี element มาจาก array ใน argument เริ่ม
จากelement ลำดับที่ระบุใน offset เป็นจำนวน element ที่ระบุใน length
หากค่า offset เป็นลบจะเริ่มจาก element ลำดับที่ย้อนกลับมาจาก element สุดท้าย หากไม่
ระบุ length จะนำข้อมูลตั้งแต่ element ลำดับที่ตาม offset จนถึง element สุดท้าย ฟังก์ชันนี้จะไม่
สนใจ key ผลลัพธ์จะได้จากลำดับที่ element วางอยู่ใน array
ตัวอย่างเช่น

<?php
$a = array('apple','banana','coconut','grape','orange');
$b = array_slice($a,2,2);
$c = array_slice($a,-4,2);
$d = array_slice($a,2);
$e = array_slice($a,-2);
?>

ผลลัพธ์ตัวแปร array ต่างๆ ได้แก่
b = Array ( [0] => coconut [1] => grape )
c = Array ( [0] => banana [1] => coconut )
d = Array ( [0] => coconut [1] => grape [2] => orange )
e = Array ( [0] => grape [1] => orange )

2 7) การเข้าถึงข้อมูลใน array
• integer count (array ary[, int mode])
• integer sizeof(array ary[, int mode])
ฟังก์ชัน count( ) และ sizeof( ) เป็นฟังก์ชันที่ให้จำนวน element ที่มีใน array ary หากต้องการนับจำนวน element ใน array หลายมิติต้องกำหนด mode เป็น COUNT_RECURSIVE หรือ
1 หากไม่กำหนดหรือกำหนดเป็นค่า 0 จะนับ element ของ array ลำดับนอกสุด คือ index ซ้ายสุด
• mixed current ( array ary)
• mixed pos (array ary)
ฟังก์ชัน current ( ) และ pos( ) ให้ข้อมูลจาก array ary ณ ตำแหน่งที่ internal pointer
ของ array ary นั้นชี้อยู่ โดยไม่มีผลต่อ pointer (pointer จะไม่เลื่อนไปยัง element อื่นหลังจากใช้
ฟังก์ชันนี้)
• void list(mixed)
list( ) เป็น language construct ที่ใช้ดึงค่าจาก array นำมาใส่ในตัวแปรที่อยู่ใน
argument มีรูปแบบที่แปลกกว่าคำสั่งอื่นๆ เนื่องจากเป็นคำสั่งที่อยู่ทางด้านซ้ายของ expression
คือเขียนคำสั่งในรูปแบบ list(var1,var2,…) = array เช่น

<?php
$a = array('apple','banana','coconut','grape','orange');
list($x,$y,$z) = $a;
?>

จากตัวอย่างนี้ตัวแปร $x จะมีข้อมูล 'apple' ตัวแปร $y จะมีข้อมูล 'banana' และ $z จะมี
ข้อมูล 'coconut' เราอาจจะข้าม element บาง element ได้ด้วยการไม่ใส่ชื่อตัวแปร เช่น
list($x,,$y) = $a;
จะข้าม element ที่สองของ array $a ดังนั้นตัวแปร $x และ $y จะมีข้อมูล 'apple' และ
'coconut' ตามลำดับ
WEB PROGRAMMING
Using PHP. and MySQL.106 106

3 ฟังก์ชันเกี่ยวกับข้อมูล String
ฟังก์ชันเกี่ยวกับข้อมูลชนิด string ในภาษา PHP แบ่งออกเป็นกลุ่มต่างๆ และมีรายละเอียดของฟังก์ชันที่ใช้ประโยชน์กันโดยทั่วไปดังนี้

3 1) ฟังก์ชันที่ให้ข้อมูลจากข้อความ
• int strlen(string str)
ฟังก์ชันที่ให้ตัวเลขความยาวของข้อความที่อยู่ใน str เป็นจำนวนอักขระ เช่น strlen
("abcdef"); จะได้ค่า 6 คือมีอักขระจำนวน 6 ตัว การใช้งานอาจจะใช้เพื่อตรวจสอบความยาวของ
ข้อความที่ผู้ใช้ป้อน เช่น password หากมีจำนวนอักขระน้อยหรือมากกว่าที่กำหนดจะให้พิมพ์เข้า
ใหม่ เป็นต้น
ตัวอย่างการใช้งาน (การรับข้อมูลจากผู้ใช้และตัวแปร $_POST[ ] ดูรายละเอียดในบทที่ 4)

<?php
define('PWD_MIN',4);
define('PWD_MAX',8);
function isBetween ($val, $min, $max) {
return ($val>=$min && $val<=$max);
}
$pwlen = strlen($_POST['password']);
if (!isBetween($pwlen, PWD_MIN, PWD_MAX))
echo "Password length must be 4-8 characters";
else
echo "Password OK.";
?>

      • string substr(string str, int offset, int length)
      ฟังก์ชันนี้จะให้บางส่วนของข้อความจาก str โดยเริ่มตั้งแต่ตำแหน่งที่ระบุใน offset(ตำแหน่งของอักขระแรกสุดคือ 0) เป็นจำนวนความยาวตามที่ระบุใน length เช่น substr("abcdefghi",3,4) จะได้ข้อความ "defg" เป็นต้น หากค่า offset เป็นค่าลบ จะนับย้อนจากท้ายข้อความ เช่น substr("abcdefghi",-3,2) จะได้ "gh" เป็นต้น หากข้อความที่มีใน str น้อยกว่าที่ระบุใน offset และ length จะให้ข้อความเท่าที่มีใน str เท่านั้น เช่น substr("abcdefghi",6,4)จะได้ข้อความ "ghi" เป็นต้นหาก length เป็นค่าลบ หมายถึงจำนวนอักขระที่จะหยุดไม่นำมาเป็นผลลัพธ์นับจากท้ายข้อความ เช่น

<?php
$rest = substr("abcdef", 0, -1); // returns "abcde"
$rest = substr("abcdef", 2, -1); // returns "cde"
$rest = substr("abcdef", 4, -4); // returns ""
$rest = substr("abcdef", -3, -1); // returns "de"
?>

     • string trim (string str [, string charlist])
     ให้ผลลัพธ์เป็นข้อความจาก str ที่ตัด whitespace ที่อยู่ด้านหน้าและด้านหลังของ
ข้อความออกแล้ว เช่น trim(" vwxyz ") จะได้ "vwxyz" เป็นต้น อักขระที่ถือว่าเป็น whitespace
ได้แก่
o " " คือช่องว่าง
o "\t" เครื่องหมาย tab.
o "\n" เครื่องหมายขึ้นบรรทัดใหม่ new line (line feed).
o "\r" เครื่องหมาย carriage return.

บทที่ 3
     ฟังก์ชันมาตรฐานของภาษา PHP.107
o "\0" อักขระ NUL (ASCII 0)
o "\x0B" เครื่องหมาย vertical tab.
    นอกจากนี้ยังสามารถกำหนดรายการของอักขระที่จะตัดออกได้เองแทนอักขระwhitespace ที่กำหนดข้างต้นด้วยโดยกำหนดอักขระที่ต้องการให้ตัดทุกตัวใน charlist เช่น ".\t "เป็นการกำหนดว่าให้ตัดอักขระ . และ \t (tab) และ space ที่หัวและท้าย และสามารถใช้ .. เพื่อกำหนดช่วงของอักขระที่ต้องการตัดออกได้เช่น trim($st,"\x00..\x1F") กำหนดให้ตัดอักขระควบคุมที่มีรหัส ASCII ตั้งแต่ 00 ถึง 1F ออกทั้งหมด เป็นต้น

     • string ltrim (string str [, string charlist])
ให้ผลลัพธ์เป็นข้อความจาก str ที่ตัด whitespace หรืออักขระที่กำหนดใน charlist ที่อยู่ด้าน
หน้า (ทางซ้าย) ของข้อความออก เช่น ltrim(" vwxyz ") จะได้ "vwxyz " เป็นต้น (อักขระ
whitespace และการกำหนด charlist ทำได้เหมือนกับฟังก์ชัน trim( ))

    • string rtrim (string str [, string charlist])
    • string chop (string str [, string charlist])
     ให้ผลลัพธ์เป็นข้อความจาก str ที่ตัด whitespace หรืออักขระที่กำหนดใน charlist ที่อยู่ด้านหลังของข้อความออกแล้ว เช่น rtrim(" vwxyz ") จะได้ " vwxyz" เป็นต้น (อักขระ whitespaceและการกำหนด charlist ทำได้เหมือนกับฟังก์ชัน trim( ))กลุ่มฟังก์ชันที่ให้ข้อความที่เปลี่ยนอักษรตัวใหญ่-เล็ก (upper/lower case) ของภาษาอังกฤษในข้อความ มี 4 ฟังก์ชันได้แก่
     • string strtolower (string str) เปลี่ยนเป็นอักษรตัวเล็ก เช่น strtolower("ABc X2") จะได้
ข้อความ "abc x2" เป็นต้น
      • string strtoupper (string str) เปลี่ยนเป็นอักษรตัวใหญ่ เช่น strtoupper("xod2-je") จะ
ได้ข้อความ "XOD2-JE" เป็นต้น
      • string ucwords (string str) เปลี่ยนเป็นอักษรตัวใหญ่ที่ตัวอักษรแรกของคำ ฟังก์ชันนี้จะไม่
เปลี่ยนแปลงตัวอักษรตัวอื่นๆ หากตัวอื่นๆ เป็นตัวใหญ่ก็จะไม่เปลี่ยนให้เป็นตัวเล็ก หากต้องการ
ตัวใหญ่เฉพาะตัวแรกให้ใช้ฟังก์ชัน strtolower( ) ร่วมกับ ucwords( ) เช่น ucwords
(strtolower($str)) เพื่อแปลงข้อความทั้งหมดให้เป็นตัวเล็กก่อนแล้วจึงแปลงอักษรตัวแรกของ
คำให้เป็นตัวใหญ่
      • string ucfirst (string str) เปลี่ยนตัวอักษรแรกของข้อความเป็นอักษรตัวใหญ่ (ฟังก์ชันนี้จะ
ไม่เปลี่ยนแปลงตัวอักษรตัวอื่นๆ หากตัวอื่นๆ เป็นตัวใหญ่ก็จะไม่เปลี่ยนให้เป็นตัวเล็ก)
      • string str_repeat ( string input, int multiplier)
ฟังก์ชันนี้จะสร้างข้อความโดยทำซ้ำข้อความจาก input เป็นจำนวน multiplier ครั้ง เช่น
$st = str_repeat("= ", 10);
$pws = str_repeat("*", strlen($pwd));
ในตัวแปร $st จะมีข้อความ "= = = = = = = = = = " อยู่ภายใน ส่วน $pws จะมีตัว *
เป็นจำนวนเท่ากับความยาวของข้อความที่อยู่ในตัวแปร $pwd เป็นต้น

     • string str_pad ( string input, int pad_length [, string pad_string [, int
pad_type]])
      ฟังก์ชันนี้จะให้ข้อความที่เติมช่องว่างหรือข้อความที่ต้องการที่ระบุใน pad_string เข้าไปที่ด้านหน้าหรือต่อท้ายข้อความใน input เพื่อให้มีความยาวของข้อความภายในผลลัพธ์ครบจำนวน pad_length ตัว การเติมสามารถทำได้ทั้งด้านหน้าหรือที่ท้ายข้อความระบุโดย pad_typeo หากไม่ระบุ pad_string จะใช้ช่องว่างเพื่อเติมข้อความo pad_type เป็นการระบุการเติมจะเติมอย่างไร โดยมี STR_PAD_RIGHT เติมต่อท้ายหรือทางขวาของข้อความ, STR_PAD_LEFT เติมด้านหน้าหรือทางซ้ายของข้อความ,STR_PAD_BOTH เติมทั้งด้านหน้าและต่อท้าย หากไม่ระบุ pad_type จะเติมที่ท้ายหรือด้านขวาของข้อความ

   o หาก pad_length มีค่าเป็นลบหรือมีค่าน้อยกว่าความยาวข้อความใน input จะไม่มีการ
เติมข้อความเพิ่มเข้าไป
    o ข้อความที่ระบุใน pad_string จะใช้เติมจนกระทั่งได้ข้อความที่ยาวครบตามที่ระบุใน
pad_length เท่านั้น
ตัวอย่าง
str_pad ("abc",8) จะได้ "abc "
str_pad ("abc",8, ".", STR_PAD_LEFT) จะได้ ".....abc"
str_pad ("abc",8, "-",STR_PAD_BOTH) จะได้ "--abc---"
str_pad ("abc",8, "!?!#") จะได้ "abc!?!#!"
     • string str_shuffle ( string str)
ฟังก์ชัน str_shuffle จะให้ผลเป็นข้อความที่ทำการสับเปลี่ยนลำดับของอักขระต่างๆ ที่อยู่
ใน str โดยการสุ่ม เช่น str_shuffle("macintosh powerbook G4") จะได้ข้อความที่สลับลำดับ
ของอักขระต่างๆ อย่างสุ่ม เช่นอาจได้เป็น "whGtoombnorea4k si ocp" เป็นต้น

   • string strtok ( string arg1, string arg2)
strtok() จะทำการแยกข้อความจาก arg1 เป็นข้อความย่อยโดยใช้อักขระจาก arg2 เป็น
ตัวแยกข้อความ และหากมีการเรียกใช้ฟังก์ชันนี้อีกด้วย argument เพียงตัวเดียวเป็น arg2 จะ
ทำการแยกข้อความย่อยลำดับถัดไปจากข้อความเดิม ตัวอย่างเช่นการดึงคำแต่ละคำออกจาก
ประโยคในภาษาอังกฤษ สามารถใช้ฟังก์ชัน strtok( ) โดยระบุเครื่องหมาย whitespace เป็นตัว
แยกข้อความแสดงตัวอย่างได้ดังนี้

1 <?php
2 $string = "This is\tan example\nstring";
3 /* Use tab and newline as tokenizing characters as well */
4 $tok = strtok($string, " \n\t");
5 while ($tok) {
6 echo "Word=$tok<br />";
7 $tok = strtok(" \n\t");
8 }
9 ?>

    จากตัวอย่าง การเรียกใช้ strtok( ) ในบรรทัดที่ 4 จะระบุ argument ทั้งสองตัวเริ่มต้น
ครั้งแรก และในการวนรอบคำสั่งในบรรทัดที่ 7 จะใช้ strtok( ) เพื่อดึงข้อความลำดับถัดไปซึ่งจะ
ระบุ argument เป็นตัวคั่นข้อความเพียง argument เดียว หากต้องการแยกข้อความอื่นก็สามารถ
ใช้ strtok( ) โดยระบุ argument สองตัว
ตัวอย่าง

<?php
$dataline = "23546,Tim Berton:100-555-478";
$uid = strtok($dataline,",:");
$uname = strtok(",:");
$ucode = strtok(",:");
?>

    ตัวอย่าง $addr = strtr($addr, "ฃฅ", "ขค")
หากเรียกใช้ฟังก์ชัน strtr( ) โดยมี argument เพียงสองตัว ใน argument ตัวที่สองจะกำหนดเป็น associative array ที่ใช้ key เป็นข้อความเดิมและ value เป็นข้อความใหม่ที่จะแทนการแทนจะตรวจสอบข้อความที่ตรงกับ key ที่ยาวที่สุดก่อน และข้อความส่วนที่ถูกแปลงไปแล้วจะไม่ตรวจสอบกรณีอื่นอีก ตัวอย่างเช่น

<?php
$trans = array("hello" => "hi", "hi" => "hello");
$res = strtr("hi all, I said hello", $trans);
?>

จะได้ตัวแปร $res มีข้อความ "hello all, I said hi"
      • int substr_count ( string haystack, string needle)
ฟังก์ชัน substr_count() จะแสดงจำนวนข้อความ needle ที่พบอยู่ในข้อความ haystack
ตัวอย่างเช่น substr_count("This is a test", "is") จะได้ค่า 2 คือพบคำว่า "is" 2 ครั้ง

  3 2) การแสดงผลข้อความ
    • void echo string args
     เป็นคำสั่งแสดงผลข้อความที่ได้กล่าวถึงมาในบทที่ 2 แล้ว มีลักษณะเป็นคำสั่งพิเศษที่เรียก
ว่า language construct ไม่จำเป็นต้องมีวงเล็บครอบ argument และมีจำนวน argument ที่เป็น
stringได้หลายตัวคั่นโดย comma รายละเอียดจะกล่าวถึงอีกครั้งในหัวข้อ 4.1 ในบทที่ 4
     • int print ( string arg)
    ฟังก์ชันแสดงผลข้อความ จะกล่าวถึงรายละเอียดอีกครั้งในหัวข้อ 4.1 บทที่ 4
     • void printf ( string format [, mixed args])
     คำสั่ง printf ( ) เป็นคำสั่งแสดงผลออกไปยัง browser ตามรูปแบบที่กำหนด เหมือน
ฟังก์ชัน printf( ) ในภาษา C/C++, Java เป็นคำสั่งที่เป็น language construct รายละเอียดของ
คำสั่งนี้กล่าวถึงอยู่ในหัวข้อ 4.1 ของบทที่ 4
     • string sprintf ( string format [, mixed args])
ฟังก์ชัน sprintf( ) ให้ผลข้อความที่ถูกจัดรูปแบบตามรูปแบบที่ระบุ การกำหนดรูปแบบ
เหมือนกับคำสั่ง printf( ) รายละเอียดของคำสั่งนี้แสดงอยู่ในหัวข้อ 4.1 ของบทที่ 4
WEB PROGRAMMING
Using PHP. and MySQL.110 110
      • void vprintf ( string format, array args)
ฟังก์ชัน vprintf( ) เป็นฟังก์ชันที่ใช้แสดงผลข้อมูลใน array ตามรูปแบบที่กำหนดใน format
เหมือนกับคำสั่ง printf( ) แต่จะนำข้อมูลใน array มาใช้แทนการกำหนดตัวแปรหลายตัวใน argument

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

การส่งค่าออกจากฟังก์ชันใช้คีย์เวิร์ด 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
ที่มา www.widebase.net

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

การประกาศฟังก์ชันเริ่มต้นด้วยคีย์เวิร์ด 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();

?>
ที่มา www.widebase.net

2 พ.ย. 2557

การออกแบบฐานข้อมูล

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

       1. รูปแบบข้อมูลแบบลำดับขั้น หรือโครงสร้างแบบลำดับขั้น (Hierarchical data model) วิธีการสร้างฐาน ข้อมูลแบบลำดับขั้นถูกพัฒนาโดยบริษัท ไอบีเอ็ม จำกัด ในปี 1980 ได้รับความนิยมมาก ในการพัฒนาฐานข้อมูลบนเครื่องคอมพิวเตอร์ขนาดใหญ่และขนาดกลาง โดยที่โครงสร้างข้อมูลจะสร้างรูปแบบเหมือนต้นไม้ โดยความสัมพันธ์เป็นแบบหนึ่งต่อหลาย (One- to -Many)

       2. รูปแบบข้อมูลแบบเครือข่าย (Network data Model) ฐานข้อมูลแบบเครือข่ายมีความคล้ายคลึงกับฐาน ข้อมูลแบบลำดับชั้น ต่างกันที่โครงสร้างแบบเครือข่าย อาจจะมีการติดต่อหลายต่อหนึ่ง (Many-to-one) หรือ หลายต่อหลาย (Many-to-many) กล่าวคือลูก (Child) อาจมีพ่อแม่ (Parent) มากกว่าหนึ่ง สำหรับตัวอย่างฐานข้อมูลแบบเครือข่ายให้ลองพิจารณาการจัดการข้อมูลของห้องสมุด ซึ่งรายการจะประกอบด้วย ชื่อเรื่อง ผู้แต่ง สำนักพิมพ์ ที่อยู่ ประเภท

       3. รูปแบบความสัมพันธ์ข้อมูล (Relation data model) เป็นลักษณะการออกแบบฐานข้อมูลโดยจัดข้อมูลให้อยู่ในรูปของตารางที่มีระบบคล้ายแฟ้ม โดยที่ข้อมูลแต่ละแถว (Row) ของตารางจะแทนเรคอร์ด (Record) ส่วน ข้อมูลนแนวดิ่งจะแทนคอลัมน์ (Column) ซึ่งเป็นขอบเขตของข้อมูล (Field) โดยที่ตารางแต่ละตารางที่สร้างขึ้นจะเป็นอิสระ ดังนั้นผู้ออกแบบฐานข้อมูลจะต้องมีการวางแผนถึงตารางข้อมูลที่จำเป็นต้องใช้ เช่นระบบฐานข้อมูลบริษัทแห่งหนึ่ง ประกอบด้วย ตารางประวัติพนักงาน ตารางแผนกและตารางข้อมูลโครงการ แสดงประวัติพนักงาน ตารางแผนก และตารางข้อมูลโครงการ


การออกแบบฐานข้อมูลเชิงสัมพันธ์

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

        1.การรวบรวมและวิเคราะห์ความต้องการในการใช้ข้อมูล

        2.การเลือกระบบจัดการฐานข้อมูล

        3.การออกแบบฐานข้อมูลในระดับแนวคิด

        4.การนำฐานข้อมูลที่ออกแบบในระดับแนวคิดเข้าสู่ระบบจัดการฐานข้อมูล

        5.การออกแบบฐานข้อมูลในระดับกายภาพ

        6.การนำฐานข้อมูลไปใช้และการประเมินผล


การออกแบบฐานข้อมูลในระดับตรรกะ

       การออกแบบฐานข้อมูลในระดับตรรกะ หรือในระดับแนวความคิด เป็นขั้นตอนการออกแบบความสัมพันธ์ระหว่างข้อมูลในระบบโดยใช้แบบจำลองข้อมูลเชิงสัมพันธ์ ซึ่งอธิบายโดยใช้แผนภาพแสดงความสัมพันธ์ระหว่างข้อมูล (E-R Diagram) จากแผนภาพ E-R Diagram นำมาสร้างเป็นตารางข้อมูล (Mapping E-R Diagram to Relation) และใช้ทฤษฏีการ Normalization เพื่อเป็นการรับประกันว่าข้อมูลมีความซ้ำซ้อนกันน้อยที่สุด ซึ่งการออกแบบเชิงตรรกะนี้จะบอกถึงรายละเอียดของ Relation , Attribute และ Entity

ระบบฐานข้อมูล

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

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

ระบบจัดการฐานข้อมูล
        ระบบจัดการฐานข้อมูล (DBMS) ประกอบด้วยซอฟต์แวร์ที่ใช้ในการจัดการฐานข้อมูล, จัดเตรียมพื้นที่ในการเก็บ, การเข้าถึง, ระบบรักษาความปลอดภัย, สำรองข้อมูล และสิ่งอำนวยความสะดวกอื่นๆ ระบบจัดการฐานข้อมูลสามารถแบ่งหมวดหมู่ได้ตามแบบจำลองฐานข้อมูลที่สนับสนุน อาทิเช่น เชิงสัมพันธ์ หรือ XML เป็นต้น แบ่งตามประเภทของคอมพิวเตอร์ที่สนับสนุน อาทิเช่น server cluster หรือ โทรศัพท์พกพา เป็นต้น แบ่งตามประภทของภาษาสอบถามที่ใช้ในการเข้าถึงฐานข้อมูล อาทิเช่น ภาษาสอบถามเชิงโครงสร้าง หรือ XQuery แบ่งตามประสิทธิภาพในการ trade-offs อาทิเช่น ขนาดที่ใหญ่ที่สุด หรือ ความเร็วสูงสุด หรือ อื่นๆ เป็นต้น ในบาง DBMS จะครอบคลุมมากกว่าหนึ่งหมวดหมู่ เช่น สนับสนุนภาษาสอบถามได้หลายๆ ภาษา ยกตัวอย่างเช่น ใน DBMS ที่นิยมใช้การอย่างแพร่หลาย MySQL, PostgreSQL, Microsoft Access, SQL Server, FileMaker,Oracle,Sybase, dBASE, Clipper,FoxPro อื่นๆ ในทุกๆ ซอฟต์แวร์ฐานข้อมูลจะมี Open Database Connectivity (ODBC) driver มาให้ด้วย เพื่ออนุญาตให้ฐานข้อมูลสามารถทำงานร่วมกับฐานข้อมูลแบบอื่นๆ ได้

ฐานข้อมูล

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

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

       ในขณะที่แบบจำลองเชิงสัมพันธ์ มีพื้นฐานมาจากทฤษฎีเซต ได้มีการเสนอแบบจำลองดัดแปลงซึ่งใช้ทฤษฎีเซตคลุมเครือ (ซึ่งมีพื้นฐานมาจากตรรกะคลุมเครือ) ขึ้นเป็นอีกทางเลือกหนึ่ง

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

16 ก.ย. 2557

ตัวอย่างการติดตั้งแลนภายในบ้าน

อุปกรณ์การสื่อสาร

                อุปกรณ์การสื่อสาร (communication devices) ทำหน้าที่รับและส่งข้อมูลจากอุปกรณ์ส่งและรับข้อมูล โดยมีการส่งผ่านทางสื่อกลางดังกล่าวมาแล้ว สัญญาณที่ส่งออกไปอาจอยู่ในรูปแบบดิจิทัล หรือแบบแอนะล็อก ขึ้นอยู่กับอุปกรณ์ที่ใช้ในการติดต่อสื่อกลางที่ใช้ในการเชื่อมต่อ

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

              1) โมเด็ม (modem) เป็นอุปกรณ์ที่แปลงสัญญาณดิจิทัลเป็นสัญญาณแอนะล็อก และแปลงสัญญาณแอนะล็อกเป็นดิจิทัลเพื่อให้ข้อมูลส่งผ่านทางสายโทรศัพท์ได้ โมเด็มมีหลายประเภทแบ่งตามลักษณะการใช้งานดังนี้

                1.1) โมเด็มแบบหมุนโทรศัพท์ (dial-up modem) เป็นโมเด็มที่ใช้ต่อเข้ากับผู้ให้บริการอินเทอร์เน็ตผ่านทางสายโทรศัพท์ การเชื่อมต่อใช้วิธีการหมุนโทรศัพท์ติดต่อไปยังผู้ให้บริการอินเทอร์เน็ต ความเร็วในการส่งผ่านข้อมูลต่ำประมาณ 56 kbps ระบบการเชื่อมต่ออินเทอร์เน็ตผ่านโมเด็มแบบหมุนโทรศัพท์

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

                     - ดิเอสแอล (Digital Subscriber Line: DSL) เป็นโมเด็มที่ได้รับความนิยมในการใช้งานในบ้าน และสำนักขนาดเล็ก โดยสามารถรับและส่งข้อมูลดิจิทัลด้วยความเร็วสูงกว่าการเชื่อมต่อผ่านโมเด็มแบบหมุนโทรศัพท์ ตัวอย่างการติดตั้งอีเอสแอลโมเด็ม

                     - เคเบิลโมเด็ม (cable modem) เป็นโมเด็มทำหน้าที่รับและส่งข้อมูลดิจิทัลจากคอมพิวเตอร์ผ่านทางสายเคเบิลทีวี บางครั้งเรียกว่ารอดแบนด์โมเด็ม (broadband modem) สามารถรับและส่งข้อมูลได้สูงเหมือนกับดีเอสแอลโมเด็ม ตัวอย่างการติดตั้งเคเบิลโมเด็ม

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

                 3) ฮับ (hub) เป็นฯอุปกรณ์ที่รวมสัญญาณที่มาจากอุปกรณ์รับส่งหรือเครื่องคอมพิวเตอร์หลายๆ เครื่องเข้าด้วยกัน ข้อมูลที่รับส่งผ่านฮับจากเครื่องหนึ่งจะกระจายไปยังทุกสถานีที่ต่ออยู่บนฮับนั้น ดังนั้นทุกสถานีจะรับสัญญาณข้อมูลที่กระจายมาได้ทั้งหมด แต่จะเลือกคัดลอกเฉพาะข้อมูลที่ส่งมาถึงตนเท่านั้น ตัวอย่างการเชื่อต่อคอมพิวเตอร์ด้วยฮับ

               4) สวิตช์ (switch) เป็นอุปกรณ์รวมสัญญาณที่มาจากอุปกรณ์รับส่งหรือคอมพิวเตอร์หลายเครื่องเช่นเดียวกับฮับ แต่มีข้อแตกต่างจากฮับ กล่าวคือ การรับส่งข้อมูลจากอุปกรณ์ตัวหนึ่ง จะไม่กระจายไปยังทุกจุดเหมือนฮับ ทั้งนี้เพราะสวิตช์จะรับกลุ่มข้อมูลมาตรวจสอบก่อนว่าเป็นของคอมพิวเตอร์หรืออุปกรณ์ใด แล้วนำข้อมูลนั้นส่งต่อไปยังคอมพิวเตอร์หรืออุปกรณ์เป้าหมายให้อย่างอัตโนมัติ สวิตช์จะลดปัญหาการชนกันของข้อมูลเพราไม่ต้องกระจายข้อมูลไปทุกสถานีที่เชื่อมต่ออยู่กับสวิตช์ และยังมีข้อดีในเรื่องการป้องกันการดักรับข้อมูลที่กระจายไปในเครือข่าย ตัวอย่างการเชื่อมต่อคอมพิวเตอร์ด้วยสวิตช์

                 5) อุปกรณ์จัดเส้นทาง (router) เป็นอุปกรณ์ที่ใช้งานในการเชื่อมโยงเครือข่ายหลายเครือข่ายเข้าด้วยกัน หรือเชื่อมโยงอุปกรณ์หลายอย่างเข้าด้วยกัน ดังนั้นจึงมีเส้นทางการเข้าออกของข้อมูลได้หลายเส้นทาง อุปกรณ์ปลายทาง อุปกรณ์จัดเส้นทางจะหาเส้นทางที่เหมาะสมให้ เพื่อนำส่งข้อมูลผ่านเครือข่ายต่าง ไปยังอุปกรณ์ปลายทางตามที่ระบุไว้ ตัวอย่างการเชื่อมต่อคอมพิวเตอร์ด้วยอุปกรณ์จัดเส้นทาง

                 6) จุดเชื่อมต่อแบบไร้สาย (wireless access point) ทำหน้าที่คล้ายกับฮับของเครือข่ายแบบใช้สายเพื่อใช้สำหรับติดต่อสื่อสารระหว่างอุปกรณ์แบบไร้สาย ซึ่งข้อมูลจะถูกส่งผ่านทางคลื่นวิทยุความถี่สูง โดยจะต้องใช้งานร่วมกับการ์ดแลนไร้สายที่ติดตั้งอยู่กับคอมพิวเตอร์ หรืออุปกรณ์ เช่น เครื่องพิมพ์ เป็นต้น ตัวอย่างการใช้งานจุดเชื่อมต่อแบบไร้สาย

ที่มา:http://anttawiporn.wordpress.com

โพรโทคอล

                     การเชื่อมต่อระหว่างคอมพิวเตอร์ และอุปกรณ์เครือข่ายที่ผลิตจากผู้ผลิตหลายรายผ่านทางระบบเครือข่ายชนิดต่างๆ กัน ไม่สามารถเชื่อมต่อโดยตรงกันได้ เช่น การติดต่อสื่อสารระหว่างเมนเฟรมของบริษัทไอบีเอ็ม (IBM mainframe) ไม่สามารถติดต่อสื่อสารกันได้โดยตรงกับเครื่องแมคอินทอชของบริษัทแอปเปิล (Apple Macintosh) ดังนั้นต้องมีการเปลี่ยนรูปแบบของข้อมูลที่ส่งและกำหนดมาตรฐานทั้งด้านฮาร์ดแวร์และซอฟต์แวร์เพื่อให้อุปกรณ์สามารถติดต่อสื่อสารกันได้โดยมีองค์กรกลาง เช่น IEEE ISO และ ANSI เป็นผู้กำหนดมาตรฐานขึ้นมา
ปัจจุบันเครื่องคอมพิวเตอร์และอุปกรณ์จากต่างผู้ผลิต สามารถเชื่อมต่อถึงกันได้ภายใต้มาตรฐานเครือข่ายเดียวกัน
                       กฎกติกาหรือข้อตกลงที่ใช้เป็นมาตรฐานในการสื่อสารข้อมูลระหว่างผู้รับและผู้ส่ง เรียกว่าโพรโทคอล (protocol) ซึ่งเป็นข้อกำหนดที่ใช้ควบคุมการสื่อสารข้อมูลในเครือข่าย ไม่ว่าจะเป็นวิธีการในการรับส่งข้อมูล รูปแบบของการรับส่ง อุปกรณ์หรือสื่อกลางในการรับส่งข้อมูล วิธีการตรวจสอบความผิดพลาดของข้อมูล รวมถึงความเร็วในการรับส่งข้อมูล เครื่องคอมพิวเตอร์หรืออุปกรณ์เครือข่ายที่ใช้โพรโทคอลชนิดเดียวกันเท่านั้นจึงจะสามารถติดต่อและส่งข้อมูลระหว่างกันได้ โพรโทคอลจึงมีลักษณะเช่นเดียวกันกับการสื่อสารของมนุษย์ที่ต้องใช้ภาษาเดียวกันจึงจะสามารถสื่อสารกันได้เข้าใจตัวอย่างการใช้โพรโทคอลเป็นข้อตกลงในการสื่อสาร

                        ทีซีพี/ไอพี (Transmission Control Protocol/Internet Protocol: TCP/UP) เป็นโพรโทคอลที่ใช้ในการสื่อสารในระบบอินเทอร์เน็ต โดยมีการระบุผู้รับผู้ส่งในเครือข่ายและจัดการแบ่งข้อมูลเป็นชิ้นเล็กๆ ที่เรียกว่าแพ็กเก็ต (packet) ส่งผ่านไปในอินเทอร์เน็ต  และมั่นใจได้ว่าข้อมูลที่ส่งไปนั้น จะได้รับอย่างถูกต้องและครบถ้วน ในกรณีที่ข้อมูลเกิดข้อผิดพลาดระหว่างทาง จะมีการร้องขอเพื่อส่งข้อมูลใหม่ให้

                       ไวไฟ (Wireless Fidelity: Wi-Fi) มักถูกนำเอาไปอ้างถึงเทคโนโลยีเครือข่ายแบบไร้สาย ตามมาตรฐาน IEEE 802.11 ซึ่งใช้คลื่นวิทยุความถี่ 2.4 GHz .เป็นสื่อกลางในการติดต่อสื่อสาร ไวไฟเกิดจากการรวมกลุ่มกันของผู้ผลิตอุปกรณ์ เพื่อทดสอบว่าอุปกรณ์ที่ผลิตขึ้นทำงานได้ตามมาตรฐานของIEEE 802.11 โดยเครื่องคอมพิวเตอร์และอุปกรณ์ที่ได้รับการรับรองจากไวไฟ จะสามารถติดต่อสื่อสารถึงกันได้

                         ผู้ใช้งานในบ้านหรือสำนักงานขนาดเล็ก ส่วนใหญ่นิยมใช้ไวไฟในการติดตั้งระบบแลนไร้สาย (wireless LAN) โดยมีการติดตั้งแผงวงจรหรืออุปกรณ์รับส่งไวไฟที่เรียกว่า การ์ดแลนไร้สาย(wireless LAN card) ซึ่งปัจจุบันเครื่องคอมพิวเตอร์โน้ตบุ๊กจะมีตัวรับส่งสัญญาณไวไฟเป็นอุปกรณ์มาตรฐานแล้ว สำหรับรัศมีการใช้งานของแลนไร้สายขึ้นอยู่กับความสามารถในการรับส่งสัญญาณของอุปกรณ์ ซึ่งโดยทั่วไปจะอยู่ห่างจากจุดเชื่อมต่อแบบไร้สาย (wireless access point) ไม่เกิน 100 เมตรสำหรับการใช้งานภายในอาคาร และไม่เกิน 500 เมตรสำหรับการใช้งานในที่โล่งนอกอาคาร แต่ในการใช้งานจริง อาจมีปัจจัยอื่นที่ส่งผลให้รัศมีการใช้งานสั้นลง เช่น ผนังอาคาร หรือตามจุดเชื่อมต่อแบบไร้สายที่อยู่ในมุมอับ ตัวอย่างระบบแลนไร้สาย

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

                       เกร็ดน่ารู้
IEEE 802.11 มาตรฐาน IEEE 802.11 มีมาตรฐานย่อยและความเร็วในการส่งข้อมูลดังนี้
มาตรฐาน              ความเร็วในการส่งข้อมูล
802.11      1 หรือ 2 Mbps
802.11a    54 Mbps
802.11b    11 Mbps
802.11g    ตั้งแต่ 54 Mbps
802.11 n    ตั้งแต่ 108 Mbps

                       ไออาร์ดี (Infrared Data Association: IrDA) เป็นโพรโทคอลใช้เชื่อมคอมพิวเตอร์กับอุปกรณ์สื่อสารแบบไร้สายระยะใกล้ และไม่มีสิ่งกีดขวาง โดยใช้แสงอินฟราเรดในการติดต่อสื่อสารและมีเร็วในการส่งข้อมูลอยู่ระหว่าง 115 kbps  ถึง 4 Mbps  ผ่านพอร์ตไออาร์ดีเอ นิยมใช้แพนไร้สาย (wireless PAN) ตัวอย่างระบบแพนไร้สาย โดยใช้ไออาร์ดีเอ

                          บลูทูท (bluetooth) เป็นโพรโทคอลที่ใช้คลื่นวิทยุความถี่ 2.4 GHz ในการรับส่งข้อมูลโดยคล้ายกับแลนไร้สาย ตามมาตรฐาน IEEE 802.15 มีวัตถุประสงค์เพื่อให้ผู้ใช้งานคอมพิวเตอร์สามารถติดต่อสื่อสารกับอุปกรณ์ต่อพ่วงไร้สายอื่นๆ เช่น เครื่องพิมพ์ เมาส์ คีย์บอร์ด พีดีเอ โทรศัพท์เคลื่อนที่ และหูฟัง เข้าด้วยกันได้โดยสะดวก โดยมาตรฐาน บลูทูทสามารถส่งข้อมูลได้ที่ความเร็วมากกว่า 3 Mbps

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

เกร็ดน่ารู้
                   ที่มาของคำว่า Bluetooth คำว่า Bluetooth มาจากคำว่า Blatonn ในภาษาของนอร์ส (Norse) หรือ Blatand ในภาษาของชาวเดนิช (Denish) ซึ่งเป็นชื่อของกษัตริย์ Harald ที่หนึ่งของประเทศเดนมาร์ก มีชื่อเต็มว่า “Harald Bluetooth” (ภาษาเดนมาร์ก Harald Blatand) ขึ้นครองราชย์ในช่วงปี พ.ศ. 1501-1528 กษัตริย์องค์นี้ได้เสมือนกับการเชื่อมโยงคอมพิวเตอร์และอุปกรณ์สื่อสารต่างๆ เข้าด้วยกัน

เครือข่ายคอมพิวเตอร์


                        เครือข่ายคอมพิวเตอร์ ( computer network ) เป็นการเชื่อมต่อคอมพิวเตอร์และอุปกรณ์ต่อพ่วงเข้าด้วยกันเพื่อให้สามารถใช้ข้อมูลทรัพยากรร่วมกันได้ เช่น สามารถใช้เครื่องพิมพ์ร่วมกัน สามารถใช้ฮาร์ดดิสก์ร่วมกัน แบ่งปันการใช้อุปกรณ์อื่นๆ ที่มีราคาแพงหรือไม่สามารถจัดหาให้ทุกคนได้ แม้กระทั่งสามารถใช้โปรแกรมร่วมกันได้เป็นการลดต้นทุนขององค์กรเครือข่ายคอมพิวเตอร์สามารถแบ่งออกเป็นประเภทตามพื้นที่ที่ครอบคลุมการใช้งานของเครือข่าย ดังนี้


                1) เครือข่ายส่วนบุคคล หรือแพน ( Personal Area Network: PAN ) เป็นเครือข่ายที่ใช้ส่วนบุคคล เช่น การเชื่อมต่อคอมพิวเตอร์กับโทรศัพท์มือถือ การเชื่อมต่อพีดีเอกับเครื่องคอมพิวเตอร์ซึ่งการเชื่อมต่อแบบนี้จะอยู่ในระยะใกล้ และมีการเชื่อมต่อแบบไร้สาย


                2) เครือข่ายเฉพาะที่ หรือแลน ( Local Area Network: LAN ) เป็นเครือข่ายที่ใช้ในการเชื่อมโยงคอมพิวเตอร์และอุปกรณ์ต่างๆ   ที่อยู่ในพื้นที่เดียวกันหรือใกล้เคียงกัน  เช่น   ภายในบ้าน ภายในสำนักงาน และภายในอาคาร สำหรับการใช้งานภายในบ้านนั้นอาจเรียกเครือข่ายประเภทนี้ว่า เครือข่ายที่พักอาศัย ( home network ) ซึ่งอาจใช้การเชื่อมต่อแบบใช้สายหรือไร้สาย


                3) เครือข่ายนครหลวง หรือแมน (Metropolitan Area Network: MAN) เป็นเครือข่ายที่ใช้เชื่อมโยงแลนที่อยู่ห่างไกลออกไป  เช่น  การเชื่อมต่อเครือข่ายระหว่างสำนักงานที่อาจอยู่คนละอาคารและมีระยะทางไกลกัน  การเชื่อมต่อเครือข่ายชนิดนี้อาจใช้สายไฟเบอร์ออพติก หรือบางครั้งอาจใช้ไมโครเวฟเชื่อมต่อ เครือข่ายแบบนี้ใช้ในสถานศึกษามีชื่อเรียกอีกอย่างหนึ่งว่าเครือข่ายแคมปัส ( Campus Area Network: CAN )


                4) เครือข่ายวงกว้าง หรือแวน  (Wide Area Network: WAN)  เป็นเครือข่ายที่ใช้ในการเชื่อมโยงกับเครือข่ายอื่นที่อยู่ไกลกันมาก เช่น เครือข่ายระหว่างจังหวัด หรือระหว่างภาครวมไปถึงเครือขายระหว่างประเทศ


              4.4.1 ลักษณะของเครือข่าย ในการใช้งานเครือข่ายคอมพิวเตอร์ เพื่อใช้ทรัพยากรร่วมกันสามารถแงลักษณะของเครือข่ายตามบทบาทของเครื่องคอมพิวเตอร์ในการสื่อสารได้ดังนี้
                 1) เครือข่ายแบบรับ-ให้บริการ  หรือไคลเอนท์/เซิร์ฟเวอร์ (client-server network) จะมีเครื่องคอมพิวเตอร์ที่เป็นเครื่องให้บริการต่างๆ  เช่น บริการเว็บ  และบริการฐานข้อมูล  การให้บริการขึ้นกับการร้องขอบริการจากเครื่องรับบริการ  เช่น  การเปิดเว็บเพจ  เครื่องรับบริการจะร้องขอบริการไปที่เครื่องบริการเว็บ  จากนั้นเครื่องให้บริการเว็บจะตอบรับและส่งข้อมูลกลับมาให้เครื่องรับบริการ ข้อดีของระบบนี้คือสามารถให้บริการแก่เครื่องรับบริการได้เป็นจำนวนมาก  ข้อด้อยคือระบบนี้มีค่าใช้จ่ายในการติดตั้งและการบำรุงรักษาค่อนข้างสูง

                  2) เครือข่ายระดับเดียวกัน Peer- to-Peer network: P2P network ) เครื่องคอมพิวเตอร์สามารถเป็นได้ทั้งเครื่องให้บริการและเครื่องรับบริการในขณะเดียวกัน การใช้งานส่วนใหญ่มักใช้ในการแบ่งปันข้อมูล เช่น เพลง ภาพยนตร์ โปรแกรม และเกม เครือข่ายแบบนี้เริ่มแพร่หลายมากขึ้นในผู้ใช้งานอินเทอร์เน็ตการใช้งานจะมีซอฟต์แวร์เฉพาะ เช่น โปรแกรม eDonkey, BitTorrent และ LimeWire ข้อดีของระบบแบบนี้คือง่ายต่อการใช้งาน และราคาไม่แพง ข้อด้อยคือไม่มีการควบคุมเรื่องความปลอดภัย จึงอาจพบว่าถูกนำไปใช้ประโยชน์ในทางไม่ถูกต้อง เช่น การแบ่งปันเพลง ภาพยนตร์ และโปรแกรมที่มีลิขสิทธิ์ซึ่งเป็นการกระทำผิดกฎหมาย

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

                2) เครือข่ายแบบวงแหวน (ring topology) เป็นการเชื่อมแต่ละสถานีเข้าด้วยกันแบบวงแหวน สัญญาณข้อมูลจะส่งอยู่ในวงแหวนไปในทิศทางเดียวกันจนถึงผู้รับ หากข้อมูลที่ส่งเป็นของสถานีใด สถานีนั้นก็รับไว้ ถ้าไม่ใช่ก็ส่งต่อไป ซึ่งระบบเครือข่ายแบบวงแหวนนี้ สามารถรองรับจำนวนสถานีได้เป็นจำนวนมาก ข้อด้อยของเครือข่ายแบบวงแหวน คือ สถานีจะต้องรอจนถึงรอบของตนเอง ก่อนที่จะสามารถส่งข้อมูลได้ รูปร่างเครือข่ายแบบวงแหวน

               3) เครือข่ายแบบดาว (star topology) เป็นการเชื่อมต่อสถานีในเครือข่าย โดยทุกสถานีจะต่อเข้ากับหน่วยสลับสายกลาง เช่น ฮับ (hub) หรือสวิตซ์ (switch) ซึ่งทำหน้าที่เป็นศูนย์กลางของการเชื่อมต่อระหว่างสถานีต่างๆ ที่ต้องการติดต่อกัน ของดีของการเชื่อมต่อแบบดาว คือ ถ้าสถานีใดเสีย หรือสายเชื่อมต่อระหว่างฮับ/สวิตซ์กับสถานีใดชำรุด ก็จะไม่กระทบกับการเชื่อมต่อของสถานีอื่น ดังนั้นการเชื่อมต่อแบบนี้จึงเป็นที่นิยมใช้กันในปัจจุบัน รูปร่างเครือข่ายแบบดาว

               4) เครือข่ายแบบแมช (mesh topology) เป็นรูปแบบของการเชื่อมต่อที่มีความนิยมมากและมีประสิทธิภาพสูงเนื่องจากถ้ามีเส้นทางของการเชื่อมต่อคู่ใดคู่หนึ่งขาดจากกัน การติดต่อสื่อสารระหว่างคู่นั้นยังสามารถติดต่อได้โดยอุปกรณ์จัดเส้นทาง (router) จะทำการเชื่อมต่อเส้นทางใหม่ไปยังจุดหมายปลายทางอัตโนมัติ การเชื่อมต่อแบบนี้มักนิยมสร้างบนเครือข่ายแบบไร้สาย รูปร่างเครือข่ายแบบแมช

สื่อกลางในการสื่อสารข้อมูล

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

                4.3.1 สื่อกลางแบบใช้สาย
    1) สายคู่บิดเกลียว (twisted pair cable) สายนำสัญญาณแบบนี้แต่ละคู่สายที่เป็นสายทองแดงจะถูกพันบิดเป็นเกลียว เพื่อลบการรบกวนของคลื่นแม่เหล็กไฟฟ้าจากคู่สายข้างเคียงภายในสายเดียวกันหรือจากภายนอก ทำให้สามารถส่งข้อมูลด้วยความเร็วสูง สายคู่บิดเกลียวสามารถใช้ส่งข้อมูลจำนวนมากเป็นระยะทางไกลได้หลายกิโลเมตร เนื่องจากราคาไม่แพงมาก ใช้ส่งข้อมูลได้ดี น้ำหนักเบา ง่ายต่อการติดตั้ง จึงนิยมใช้งานอย่างกว้างขวาง

ตัวอย่างสายคู่บิดเกลียวสายคู่บิดเกลียวมี 2 ชนิด คือ
1. สายคู่บิดเกลียวแบบไม่ป้องกันสัญญาณรบกวน หรือสายยูทีพี (Unshielded Twisted Pair :UTP) เป็นสายใช้ในระบบโทรศัพท์ ต่อมาได้มีการรับปรุงคุณสมบัติให้ดีขึ้น จนสามารถใช้กบสัญญาณความถี่สูงได้ ทำให้ส่งข้อมูลได้ด้วยความเร็วสูงขึ้น

เกร็ดน่ารู้
ชนิดของสายต่อยูทีพี
        สายยูทีพีที่ใช้เป็นสื่อกลางการสื่อสารข้อมูลประกอบด้วยลวดทองแดง 8 เส้น ต่อเข้ากับหัวต่อแบบ
RJ45 ขณะที่ในระบบโทรศัพท์จะใช้ลวดทองแดงเพียง 2 หรือ 4 เส้น ต่อเข้ากับหัวต่อแบบ RJ11

                สายคู่บิดเกลียวแบบป้องกันสัญญาณรบกวน หรือสายเอสทีพี (Shielded Twisted Pair: STP) เป็นสายที่หุ้มด้วยตัวกั้นสัญญาณเพื่อป้องกันการรบกวนได้ดียิ่งขึ้น สายเอสทีพีรองรับความถี่ของการส่งข้อมูลสูงกว่าสายยูทีพี แต่มีราคาแพงกว่า

                ในปัจจุบันการติดตั้งสายสัญญาณภายในอาคารนิยมใช้สายยูทีพีเป็นหลัก เพราะมีราคาถูกกว่าสายเอสทีพี และมีการพัฒนามาตรฐานให้มีคุณภาพสูงสามารถส่งข้อมูลความเร็วสูงได้ดีขึ้น

    2) สายโคแอกซ์ (coaxial cable) เป็นสายนำสัญญาณที่เรารู้จักกันดี โดยใช้เป็นสายนำสัญญาณที่ต่อจากเสาอากาศเครื่องรับโทรทัศน์หรืสายเคเบิลทีวี ตัวสายประกอบด้วยลวดทองแดงที่เป็นแกนหลักหนึ่งเส้นหุ้มด้วยฉนวนเพื่อป้องกันกระแสไฟฟ้ารั่ว จากนั้นจะหุ้มด้วยตัวนำซึ่งทำจากลวดทองแดงทักเป็นร่างแหเพื่อป้องกันการรบกวนของคลื่นแม่เหล็กไฟฟ้าและสัญญาณรบกวนอื่นๆ ก่อนจะหุ้มชั้นนอกสุดด้วยฉนวนพลาสติก และนิยมใช้เป็นสายนำสัญญาณแอนะล็อกเพื่อเชื่อมต่ออุปกรณ์ภาพและเสียง (audio-video devices) ต่างๆ ภายในบ้านและสำนักงาน

    3) สายไฟเบอร์ออพติก (fiber-optic cable) ประกอบด้วยกลุ่มของเส้นใยทำจากแก้วหรือพลาสติกที่มีขนาดเล็กประมาณเส้นผม แต่ละเส้นจะมีแกนกลาง (core) ที่ถูกห่อหุ้มด้วยวัสดุใยแก้วอีกชนิดหนึ่งซึ่งเรียกว่า แคล็ดดิง (cladding) และหุ้มอีกชั้นด้วยฉนวนเพื่อป้องกันการกระแทกและฉีกขาด ตัวอย่างสายไฟเบอร์ออพติก

  4) ดาวทียมสื่อสาร พัฒนาขึ้นมาเพื่อหลีกเลี่ยงข้อจำกัดของสถานีรักส่งไมโครเวฟบนผิวโลกโดนเป็นสถานีรับส่งสัญญาณไมโครเวฟบนอวกาศ ในการส่งสัญญาณต้องมีสถานีภาคพื้นดินคอยทำหน้าที่รับและส่งสัญญาณขึ้นไปบนดาวเทียมที่โคจรอยู่สูงจากพื้นโลกประมาณ 35,600 กิโลเมตร ดังรูปที่ 4.18 โดนดาวเทียมเหล่านั้นจะเคลื่อนที่ด้วยคามเร็วที่เท่ากับการหมุนของโลก จึงเสมือนกับดาวเทียมนั้นอยู่นิ่งกับที่ขณะที่โลกหมุนรอบตัวเอง ทำให้การส่งสัญญาณไมโครเวฟจากสถานีหนึ่งขึ้นไปบนดาวเทียม และการกระจายสัญญาณจากดาวเทียมลงมายังสถานีตามจุดต่างๆ บนผิวโลก เป็นไปอย่างแม่นยำ นอกจากนี้ยังมีการใช้งานดาวเทียมในการระบุตำแหน่งบนพื้นโลกเรียกว่าระบบจีพีเอส โดยบอกพิกัดเส้นรุ้งและเส้นแวงของผู้ใช้งานเพื่อใช้ในการนำทาง