Thaimisc.com : PHP กับฐานข้อมูล MySQL (16)
ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us | Colocation | Web Hosting | เปิดร้านค้าฟรี


Category : Php Developer Print Article Only Print Aticle With Comment
PHP กับฐานข้อมูล MySQL (16)
เขียนโดย เดอะกาฝากไดอารี่ (ball@bbznet.com) , 08-06-2004
เวลาผ่านไป 4 วันแล้ว ไม่ทราบว่าทำการบ้านของผมเสร็จหรือยังเอ่ยยยยย....

ในตอนนี้ผมจะมาเฉลยวิธีที่ 3 ให้ได้รับทราบกันครับ ซึ่งจะเป็นวิธีที่ประยุกต์มาจากวิธีที่ 2 ที่กล่าวถึงไปในตอนที่แล้ว ขึ้นไปอีกระดับหนึ่งนั่นเอง

<?php

mysql_connect("localhost", "root", "") or die ("ไม่สามารถเชื่อมต่อกับฐานข้อมูลได้"); //ทำการเชื่อมต่อกับฐานข้อมูล
mysql_select_db("company") or die ("ไม่สามารถเลือกใช้ฐานข้อมูลนี้ได้"); //เลือกใช้ฐานข้อมูลชื่อ company

//เริ่มสร้างตัวแปรอะเรย์เก็บข้อมูลพนักงานแต่ละคนที่จะบันทึก

$employee[0]['name'] = "Sompong Nongsomchai";
$employee[0]['position'] = "Manager";
$employee[0]['department'] = "Accounting";
$employee[0]['salary'] = 30000;

$employee[1]['name'] = "Rangsan Sooksri";
$employee[1]['position'] = "Staff";
$employee[1]['department'] = "IT";
$employee[1]['salary'] = 12000;

$employee[2]['name'] = "Roongsri Sooksri";
$employee[2]['position'] = "Staff";
$employee[2]['department'] = "Personnel";
$employee[2]['salary'] = 10000;

$employee[3]['name'] = "Boonmaak Silpsook";
$employee[3]['position'] = "Manager";
$employee[3]['department'] = "Personnel";
$employee[3]['salary'] = 35000;

$employee[4]['name'] = "Somchai Sooksawad";
$employee[4]['position'] = "Manager";
$employee[4]['department'] = "IT";
$employee[4]['salary'] = 40000;

$employee[5]['name'] = "Chidchom Chomchan";
$employee[5]['position'] = "Staff";
$employee[5]['department'] = "Production";
$employee[5]['salary'] = 8000;

$employee[6]['name'] = "Samnieng Nillsook";
$employee[6]['position'] = "Engineer";
$employee[6]['department'] = "Production";
$employee[6]['salary'] = 20000;

$employee[7]['name'] = "Kangwan Kongsilp";
$employee[7]['position'] = "Webmaster";
$employee[7]['department'] = "IT";
$employee[7]['salary'] = 15000;

$employee[8]['name'] = "Narong Sooksamran";
$employee[8]['position'] = "Manager";
$employee[8]['department'] = "Production";
$employee[8]['salary'] = 40000;

//วนรอบประมวลผลคำสั่ง SQL เพื่อบันทึกข้อมูลลงในฐานข้อมูล จนกว่าจะครบทุกคน

for ($i = 0; $i < count($employee); $i++) {

$sql = "INSERT INTO employee (name, position, department, salary) VALUES ('". $employee[$i]['name']. "', '". $employee[$i]['position']. "', '". $employee[$i]['department']. "', '". $employee[$i]['salary']. "')";
$result = mysql_query($sql);

}

?>

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

โค้ดที่เห็น คือวิธีที่ผมถนัดในการประกาศอะเรย์ โดยเฉพาะอะเรย์หลายมิติ... จากตัวอย่างที่เห็นอยู่คือ 2 มิติ โดยมิติแรก จะเป็นตัวเลขที่ทำหน้าที่เหมือน id เอาไว้บอกว่าเป็นข้อมูลของพนักงานคนไหน ส่วนมิติที่ 2 นั้น จะมีด้วยกันหลาย index หน่อย คือข้อมูลต่างๆ ของพนักงานแต่ละคน ที่เราต้องการบันทึกลงในฟิลด์แต่ละฟิลด์ในฐานข้อมูลนั่นเอง

ส่วนใครที่มีวิธีประกาศอะเรย์ที่อ่านแล้วเข้าใจง่ายกว่า ก็สามารถดัดแปลงไปใช้ได้ครับ :)

เขียนโค้ดนี้ด้วย notepad ก็ได้ เพราะโค้ดง่ายๆ ไม่ซับซ้อน ใช้ editor ง่ายๆ ก็พอแล้ว สะดวกรวดเร็วดี :) จากนั้นก็ตั้งชื่ออะไรก็ได้ แล้วเซฟไปไว้ใน document root ของเว็บเซิร์ฟเวอร์ของเรา (ในที่นี้ ผมขอใช้ C:/AppServ/www/ex01/ แล้วกัน เพราะผมติดตั้ง AppServ เอานิ แล้วนี่ก็แค่ตัวอย่างด้วย ถือเป็นตัวอย่างที่ 1 แล้วกัน) โดยผมขอตั้งชื่อไฟล์ว่า index.php

ดังนั้นเวลาผมจะรันโค้ด ผมก็แค่พิมพ์ URL ลงไปใน Address Bar ว่า http://localhost/ex01/ (เพราะผมเก็บอยู่ในโฟลเดอร์ชื่อ ex01 ภายใต้ document root) เท่านี้โค้ดที่เขียนก็จะถูกรันทันที ผลลัพธ์นั้นเราจะเห็นเพียงหน้าจอบราวเซอร์ว่างๆ ครับ แต่ในเบื้องหลังนั้น ข้อมูลถูกแทรกลงไปในฐานข้อมูลแล้ว

รู้ได้ยังไง?!?

ลองเปิด phpMyAdmin ขึ้นมาสิครับ... แล้วไปเลือกดูฐานข้อมูล company ของเรา คลิกไปที่ตารางที่ชื่อ employee เพื่อ "เปิดดู" ข้อมูลที่เก็บเอาไว้


จำได้ไหมครับ เวลาเราแทรกระเบียนเสร็จแล้ว คำว่า เปิดดู จากเดิมที่เป็นตัวสีดำ จะกลายเป็นลิงก์สีน้ำเงินทันที

สิ่งที่เราจะเห็น ก็จะเป็นข้อมูลในตาราง employee ทั้งหมดครับ

โดยปกติแล้ว phpMyAdmin จะแสดงระเบียนคราวละ 30 ระเบียน โดยเริ่มจากระเบียนที่ 0 เสมอ หากเราไม่ไปกำหนดให้เป็นอื่น... การแบ่งข้อมูลออกมาแสดงนั้น มีความสำคัญมากครับ โดยเฉพาะในกรณีที่ข้อมูลมีจำนวนมากๆ ด้วยเหตุผลสองประการคือ

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

สำหรับเทคนิคในการดึงข้อมูลมาแสดงผลเป็นหน้าๆ ผมจะกล่าวถึงในตอนภายหลัง หลังจากที่เราเริ่มลงมือเขียน PHP เป็นโปรเจ็คกันจริงๆ จังๆ ครับ

มาถึงตรงนี้ก็เท่ากับว่า เราสำเร็จบทเรียนการเขียนโค้ดเพื่อแทรกระเบียนเข้าฐานข้อมูลแล้ว... แม้จะเป็นแบบง่ายๆ ก็เถอะครับ อยากขอให้ลองเขียนเพื่อแทรกระเบียนเพิ่มเข้าไปอีก เพื่อให้จดจำคำสั่ง SQL และโค้ด PHP พื้นฐานสำหรับการนี้ครับ

ในตอนหน้า ผมจะมาพูดถึงการแก้ไขระเบียนที่เก็บอยู่ในฐานข้อมูล รวมไปถึงการลบระเบียนออกครับ และเราจะเข้าสู่เรื่องของการออกแบบฐานข้อมูลในระดับที่ลึกซึ้งขึ้นไปอีก ในแบบ "เล่าเท่าที่รู้" ของผมกันครับ

(ติดตามตอนต่อไป)

<- Back | Next ->

ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us
Copyright 1999-2006 Thailand Miscellaneous. Allrights reserved. webmaster@thaimisc.com