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

construct 2 : เชื่อมต่อฐานข้อมูล ตอนที่ 1

สำหรับบทความนี้ ผมสมมุติว่าผู้อ่านเข้าใจเรื่องเกี่ยวกับพื้นฐานของการเขียนโปรแกรมภาษา PHP หรือมีความรู้เบื้องต้นกับ mysql ซึ่งเป็นโปรแกรมฐานข้อมูล รู้จักตัวจัดการฐานข้อมูล เช่น phpmyadmin เป็นต้น เพราะผมจะไม่ได้กล่าวถึงรายละเอียดในส่วนนี้ หากผู้อ่านต้องการศึกษาเพิ่มเติม สามารถหาอ่านได้จากเว็บไซต์ทั่วไป และที่สำคัญบทความนี้ จะต้องทำงานบน webserver อาจจะจำลองบนเครื่องคอมพิวเตอร์ แบบ localhost หรือการใช้งานบน server
ขั้นแรก ขอให้สร้างฐานข้อมูลขึ้นมาก่อน ผมยกตัวอย่าง ชื่อ construct_db



สร้างตารางข้อมูลขึ้นมา 1 ตาราง
CREATE TABLE `scores` (
      `id` INT NOT NULL AUTO_INCREMENT ,
    `name` VARCHAR( 20 ) NOT NULL ,
  `score` INT NOT NULL ,
      PRIMARY KEY ( `id` )
    );



สร้าง Folder ขึ้นมาใน wevserver ผมจำลองด้วย appserve ผมก็เข้าไปที่ C:\AppServ\www แล้วสร้าง Folder ชื่อ construct เพื่อจำลองว่ามีเว็บชื่อ construct อยู่บนเครือข่ายอินเทอร์เน็ต และสร้างไฟล์ php ขึ้นมา 2 ไฟล์ ดังนี้
ไฟล์สำหรับการบันทึกข้อมูลคะแนน ชื่อ savescores.php
$dbu = "root"; //ชื่อผู้ใช้ฐานข้อมูล
$dbp = "password"; //รหัสผ่านฐานข้อมูล
$host = "localhost"; //MySQL server
$db_name="construct_db";  //ชื่อฐานข้อมูล
$tbl_name="scores"; // Table name

$dblink = mysql_connect($host,$dbu,$dbp);
$seldb = mysql_select_db($db_name);

if(isset($_GET['name']) && isset($_GET['score'])){
     $name = strip_tags(mysql_real_escape_string($_GET['name']));
     $score = strip_tags(mysql_real_escape_string($_GET['score']));
     $sql = mysql_query("INSERT INTO $tbl_name (`id`,`name`,`score`) VALUES ('','$name','$score');");
   
     if($sql){
          echo 'Your score was saved. Congrats!';
     }else{
          echo 'There was a problem saving your score. Please try again later.';
     }
}
mysql_close($dblink);
?>

ไฟล์สำหรับการอ่านข้อมูลคะแนน ชื่อ getscores.php 
header('Access-Control-Allow-Origin: *');
$dbu = "root"; //ชื่อผู้ใช้ฐานข้อมูล
$dbp = "password"; //รหัสผ่านฐานข้อมูล
$host = "localhost"; //MySQL server
$db_name="construct_db";  //ชื่อฐานข้อมูล
$tbl_name="scores"; // Table name

mysql_connect($host,$dbu,$dbp) or die("cannot connect");
mysql_select_db($db_name) or die("cannot select DB");

// Retrieve data from database
$sql="SELECT * FROM $tbl_name ORDER BY score DESC LIMIT 10";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)){
echo $rows['name'] . "\t\t" . $rows['score'] . "\n";
}
mysql_close();
?>

ต่อไปก็สร้าง Project ของ Construct ขึ้นมา



เพิ่ม textbox ใหม่ ชื่อ txtPlayerName เพื่อให้กรอกชื่อผู้เล่น



และเพิ่ม textbox อีกหนึ่งอัน ชื่อ txtPlayerScore  เพื่อให้กรอกคะแนนที่จะบันทึก
เพิ่มปุ่มขึ้นมา ตั้งชื่อว่า submit ใช้เพื่อกดให้บันทึกคะแนน


จะได้หน้าตาประมาณนี้



ต่อไปจะเพิ่มคำสั่ง สำหรับบันทึกคะแนนลงในฐานข้อมูล อันดับแรก ต้องเพิ่มวัตถุแบบ ajax เข้ามาก่อน เพื่อใช้ในการติดต่อรับ-ส่งข้อมูลจากไฟล์ php ที่เราได้สร้างเอาไว้


เพิ่มเหตุการณ์ที่ event sheets สำหรับการคลิกที่ปุ่ม save โดยเลือก add event ตามด้วย ok button และ on clicked แล้วเพิ่มการกระทำ add action ด้วย ajax


เลือกคำสั่ง Post to URL



กำหนดค่าดังนี้
Tag  = “PostScore”
URL = “http://localhost/construct/savescores.php?name=" & txtPlayerName.Text & "&score=" & txtPlayerScore.Text”
Data = “”
Method = “GET”
(ตามตัวอย่าง จำลองด้วย localhost ซึ่งได้ติดตั้ง webserver บนคอมพิวเตอร์)


เมื่อทดสอบการทำงานของเกม จะได้ลักษณะ ดังนี้


เมื่อกรอกข้อมูล แล้วคลิกปุ่มบันทึก ข้อมูลจะถูกส่งไปยังไฟล์ savescores.php ซึ่งจะทำการบันทึกข้อมูลลงในฐานข้อมูล


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

1 ความคิดเห็น: