งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

CHAPTER 14 Database Management

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "CHAPTER 14 Database Management"— ใบสำเนางานนำเสนอ:

1 CHAPTER 14 Database Management

2 Agenda การเขียนโปรแกรมติดต่อฐานข้อมูล การสร้างตาราง
การเลือกข้อมูลจากตาราง การเพิ่มข้อมูลลงในตาราง การลบข้อมูลในตาราง การแก้ไขข้อมูลในตาราง

3 กำหนดฐานข้อมูลที่จะใช้งาน เขียนคำสั่ง SQL run คำสั่ง SQL
การเขียนโปรแกรมติดต่อฐานข้อมูล MySQL โดยใช้ PHP ขั้นตอน ติดต่อฐานข้อมูล กำหนดฐานข้อมูลที่จะใช้งาน เขียนคำสั่ง SQL run คำสั่ง SQL ปิดการติดต่อฐานข้อมูล

4 1. การติดต่อกับฐานข้อมูล
สร้างส่วนเชื่อมต่อกับฐานข้อมูลด้วยคำสั่ง mysql_connect ดังนี้ mysql_connect(hostname, username, password) ; hostname คือ เครื่องที่ติดตั้งระบบฐานข้อมูลของ MySQL username คือ ชื่อของผู้ใช้ที่มีสิทธิ์เข้าใช้ระบบฐานข้อมูลของ MySQL password คือ รหัสผ่านของ username

5 ตัวอย่างการติดต่อกับฐานข้อมูล
$hostname = "localhost"; $username = ”root”; $password = ”root"; mysql_connect($hostname, $username, $password) or die("Unable to connect database"); ถ้าติดต่อฐานข้อมูลไม่ได้จะแสดงข้อความว่า “Unable to connect database)

6 2. การกำหนดฐานข้อมูล ใช้ฟังก์ชัน mysql_select_db ตามรูปแบบดังนี้
mysql_select_db(databasename); ตัวอย่าง $databaseName = "Registration"; mysql_select_db( "$databaseName") or die( "Unable to select database");

7 3. การเขียนคำสั่ง SQL สร้างคำสั่ง SQL เก็บไว้ในตัวแปร ตัวอย่าง
$tablename = "Student"; $query = "select * from $tablename "; ตัวอย่างจะเก็บคำสั่ง SQL ไว้ที่ตัวแปร $query

8 4. การ run คำสั่ง SQL การ run คำสั่ง SQL เพื่อนำข้อมูลมาแสดงผลใช้ฟังก์ชัน mysql_query โดยมีรูปแบบคำสั่งดังนี้ mysql_query($query); $query คือตัวแปรที่เก็บคำสั่ง SQL ที่ใช้ ตัวอย่าง $tbname = "Answer"; $query = "select * from $tablename"; $result=mysql_query($query); จากตัวอย่าง ผลลัพธ์ของการ run คำสั่ง SQL ของ $query จะถูกเก็บไว้ที่ $result

9 5. การปิดการติดต่อฐานข้อมูล
การปิดการติดต่อฐานข้อมูลใช้ฟังก์ชัน mysql_close();

10 ฟังก์ชันอื่น ๆ - การรับค่าผลลัพธ์จากการ run ของคำสั่ง SQL ใช้ฟังก์ชัน
mysql_fetch_array($result); $result คือตัวแปรที่เก็บผลการ run ของคำสั่ง SQL ตัวอย่าง เช่น $row=mysql_fetch_array($result)); - การรับค่าจำนวนแถว ใช้ฟังก์ชัน mysql_num_rows($result); - การรับค่าจำนวนฟิลด์ ใช้ฟังก์ชัน mysql_num_fields($result);

11 การสร้างตาราง ตัวอย่าง
จะสร้างตารางชื่อ employee ลงในฐานข้อมูล company โดยมีฟิลด์ดังนี้ Name Type Length Description id INT 6 A unique identifier for each record first VARCHAR 15 The person's first name last The person's last name phone 20 The person's phone number 30 The person's address web The person's website

12 create_table.php <? $hostname="localhost";
$username="root"; $password="root"; $database=“company"; mysql_connect($hostname,$username,$password) or die( "Unable to connect database"); mysql_select_db($database) or die( "Unable to select database"); $query="CREATE TABLE employee (id int(6) NOT NULL auto_increment, first varchar(15) NOT NULL, last varchar(15) NOT NULL, phone varchar(20) NOT NULL, varchar(30) NOT NULL, web varchar(30) NOT NULL, PRIMARY KEY (id))"; mysql_query($query); mysql_close(); echo "สร้างตาราง employee เรียบร้อยแล้ว"; ?> create_table.php

13 การสร้างฟอร์มรับข้อมูลเพื่อนำไปเพิ่มในตาราง
ตัวอย่าง จะสร้างฟอร์ม insert.html เพื่อนำข้อมูลไปเพิ่มลงในตาราง employee <html> <body> <form action="insert.php" method="post"> First Name: <input type="text" name="first"><br> Last Name: <input type="text" name="last"><br> Phone: <input type="text" name="phone"><br> <input type="text" name=" "><br> Web: <input type="text" name="web"><br> <input type= " submit" value="Add"> <input type="reset" value="Reset"> </form> </body> </html> insert.html

14 การนำข้อมูลจากฟอร์มมาเพิ่มลงในตาราง
<? $hostname="localhost"; $username="root"; $password="root"; $database="company"; $first=$_POST['first']; $last=$_POST['last']; $phone=$_POST['phone']; $ =$_POST[' ']; $web=$_POST['web']; mysql_connect($hostname,$username,$password) or die("Unable to connect database"); mysql_select_db($database) or die("Unable to select database"); $query = "INSERT INTO employee VALUES ('','$first','$last','$phone','$ ','$web')"; mysql_query($query); mysql_close(); echo "เพิ่มข้อมูลเรียบร้อยแล้ว"; ?> insert.php

15 insert.html insert.php

16 การนำข้อมูลจากตารางมาแสดง
<? $hostname="localhost"; $username="root"; $password="root"; $database="company"; mysql_connect($hostname,$username,$password) or die("Unable to connect database"); mysql_select_db($database) or die("Unable to select database"); $query="SELECT * FROM employee"; $result=mysql_query($query); echo "<b><center>Database Output</center></b><br><br>"; while ($row=mysql_fetch_array($result)) { $first=$row[first]; $last=$row[last]; $phone= $row[phone]; $ =$row[ ]; $web= $row[web]; echo "<b>$first $last</b><br>"; echo "Phone: $phone<br>"; echo " $ <br>"; echo "Web: $web<br>"; echo "<hr><br>"; } mysql_close(); ?> select.php

17 select.php

18 การนำข้อมูลจากตารางมาแสดงลงในตารางของ html
เพื่อทำ link ไปยังการแก้ไข(update) และลบ (delete) เรคอร์ด <html> <body> <? $hostname="localhost"; $username="root"; $password="root"; $database="company"; mysql_connect($hostname,$username,$password) or die("Unable to connect database"); mysql_select_db($database) or die("Unable to select database"); $query="SELECT * FROM employee"; $result=mysql_query($query); ?> <table border="1" cellspacing="2" cellpadding="2"> <tr> <th>Name</th> <th>Phone</th> <th> </th> <th>Website</th> <th colspan=2>Modify</th> </tr> select2.php

19 select2.php (ต่อ) <? while ($row=mysql_fetch_array($result))
{ $id=$row[id]; $first=$row[first]; $last=$row[last]; $phone= $row[phone]; $ =$row[ ]; $web= $row[web]; ?> <tr> <td><? echo $first." ".$last; ?></td> <td><? echo $phone;?></td> <td><a href="mailto:<? echo $ ; ?>"> </a></td> <td><a href="<? echo $web; ?>">Website</a></td> <td><a href="update.php?id=<?echo $id?>">Update</a></td> <td><a href="delete.php?id=<?echo $id?>">Delete</a></td> </tr> } mysql_close(); </table> </body> </html> select2.php (ต่อ)

20 select2.php

21 เมื่อมีการคลิกลิงค์ delete จากไฟล์ select2.php
การลบข้อมูลจากตาราง เมื่อมีการคลิกลิงค์ delete จากไฟล์ select2.php <? $hostname="localhost"; $username="root"; $password="root"; $database="company"; $id=$_GET['id']; mysql_connect($hostname,$username,$password) or die("Unable to connect database"); mysql_select_db($database) or die("Unable to select database"); $query="DELETE FROM employee WHERE id=$id "; mysql_query($query); echo "ลบเรคอร์ดเรียบร้อยแล้ว" ?> delete.php

22 delete.php หน้าจอ select2.php ภายหลังการ delete เรคอร์ดของ Seya Duna

23 เมื่อมีการคลิกลิงค์ update จากไฟล์ select2.php
การแก้ไขข้อมูล เมื่อมีการคลิกลิงค์ update จากไฟล์ select2.php ขั้นตอน นำข้อมูลของเรคอร์ดที่ถูกเลือกว่าจะ update ออกจากฐานข้อมูลมาแสดงในฟอร์มเพื่อให้ user ทำการแก้ไขข้อมูล นำข้อมูลที่แก้ไขแล้วจากฟอร์มไป update กับข้อมูลในฐานข้อมูล

24 ขั้นตอนที่ 1: นำข้อมูลออกจากฐานข้อมูลมาแสดงในฟอร์มเพื่อ ทำการแก้ไข
<html> <body> <? $id=$_GET['id']; $hostname="localhost"; $username="root"; $password="root"; $database="company"; mysql_connect($hostname,$username,$password) or die("Unable to connect database"); mysql_select_db($database) or die("Unable to select database"); $query="SELECT * FROM employee WHERE id=$id"; $result=mysql_query($query); update.php

25 update.php (ต่อ) while ($row=mysql_fetch_array($result))
{ $first=$row[first]; $last=$row[last]; $phone= $row[phone]; $ =$row[ ]; $web= $row[web]; ?> update.php (ต่อ)

26 update.php (ต่อ) <form action="update_record.php" method="post">
<input type="hidden" name="ud_id" value="<? echo $id; ?>"> First Name: <input type="text" name="ud_first" value="<? echo $first; ?>"><br> Last Name: <input type="text" name="ud_last" value="<? echo $last; ?>"><br> Phone Number: <input type="text" name="ud_phone" value=" <? echo $phone; ?>"><br> Address: <input type="text" name="ud_ " value=“ <? echo $ ; ?>"><br> Web Address: <input type="text" name="ud_web" value=“ <? echo $web; ?>"><br> <input type="Submit" value="Update"> </form> <? } mysql_close(); ?> </body> </html> update.php (ต่อ)

27 หน้าจอ update.php เมื่อมีการคลิกลิงค์ update ของ
Dan Wilma จากหน้าจอ select2.php จะดึงข้อมูลเดิมของ Dan Wilma ออกมาเพื่อให้ทำการแก้ไข

28 ขั้นตอนที่ 2: นำข้อมูลที่แก้ไขแล้วจาก update
ขั้นตอนที่ 2: นำข้อมูลที่แก้ไขแล้วจาก update.php มา update ลงในฐานข้อมูล ผ่านการทำงานของไฟล์ update_record.php <? $ud_id=$_POST['ud_id']; $ud_first=$_POST['ud_first']; $ud_last=$_POST['ud_last']; $ud_phone=$_POST['ud_phone']; $ud_ =$_POST['ud_ ']; $ud_web=$_POST['ud_web']; $hostname="localhost"; $username="root"; $password="root"; $database="company"; mysql_connect($hostname,$username,$password) or die("Unable to connect database"); mysql_select_db($database) or die("Unable to select database"); $query="UPDATE employee SET first='$ud_first', last='$ud_last', phone='$ud_phone', ='$ud_ ', web='$ud_web' WHERE id=$ud_id"; mysql_query($query); mysql_close(); echo "แก้ไขข้อมูลเรียบร้อยแล้ว"; ?> update_record.php

29 แก้ไขข้อมูลจากหน้าจอ update.php
หน้าจอ update_record.php

30 หน้าจอ select2.php ภายหลังการ update เรคอร์ดของ
Dan Wilma ซึ่งเปลี่ยนชื่อเป็น Dana

31 การจัดการกับข้อมูลหลายตาราง
การทำงานกับตารางข้อมูลหลายตาราง ให้คำนึงถึงความสัมพันธ์ (Relationships) ระหว่างตาราง การจัดการกับข้อมูลหลายตารางจะใช้ SQL ช่วย โดยจะมีส่วนของการเชื่อมความสัมพันธ์ระหว่างตาราง ผ่านฟิลด์ที่ทำหน้าที่เป็น Foreign key

32 ตัวอย่าง ระบบการลงทะเบียน
มีตารางข้อมูลที่เกี่ยวข้องดังต่อไปนี้ ตารางนักเรียน (student) ตารางอาจารย์ (advisor) ตารางวิชา (subject) ตารางการลงทะเบียนเรียน (register)

33 Relational Database Model
student(stucode, stuname, address,advcode ) advisor(advcode, adv_name, phone) subject(subcode, subname, credit) register(stucode, subode, score, grade) Relationships

34 ข้อมูลในแต่ละตาราง

35 ข้อมูลในแต่ละตาราง

36 ตัวอย่าง SQL สำหรับการเลือกข้อมูลจากตาราง
แสดงรายชื่อนักเรียนกับอาจารย์ที่ปรึกษา SELECT student.stuname, advisor.advname FROM advisor INNER JOIN student ON advisor.advcode = student.advcode 2. แสดงรายชื่อนักเรียน วิชาที่ลงทะเบียน และคะแนนที่ได้ SELECT student.stuname, subject.subname, register.score FROM subject INNER JOIN (student INNER JOIN register ON student.stucode = register.stucode) ON subject.subcode = register.subcode

37 ตัวอย่าง SQL สำหรับการเลือกข้อมูลจากตาราง
3. แสดงรายชื่อวิชา และคะแนนเฉลี่ยของแต่ละกระบวนวิชา SELECT subject.subname, Avg(register.score) AS AvgOfscore FROM subject INNER JOIN register ON subject.subcode = register.subcode GROUP BY subject.subname

38 ตัวอย่าง SQL สำหรับการเลือกข้อมูลจากตาราง
4. แสดงรายชื่อวิชาที่มีนักเรียนลงทะเบียน และชื่อนักเรียนที่ลงทะเบียนในวิชานั้น ๆ พร้อมทั้งเกรดที่ได้รับ จะใช้การทำ query 2 ครั้ง โดย ครั้งที่ 1 : เชื่อมความสัมพันธ์ระหว่างตาราง register และ subject ด้วยฟิลด์ subcode จากนั้นดึงฟิลด์ subcode ออกจากตาราง register และดึงฟิลด์ subname ออกมาจากตาราง subject โดยไม่ให้ subcode และ subname ซ้ำกัน SELECT register.subcode, subject.subname FROM subject INNER JOIN register ON subject.subcode = register.subcode GROUP BY register.subcode

39 ตัวอย่าง SQL สำหรับการเลือกข้อมูลจากตาราง
ครั้งที่ 2 : เชื่อมความสัมพันธ์ระหว่างตาราง register กับ student ด้วยฟิลด์ stucode จากนั้นดึงฟิลด์ stuname ออกจากตาราง student และฟิลด์ grade ออกจากตาราง register ด้วยเงื่อนไข register.stucode = stucode ที่ดึงออกมาได้จาก query ครั้งที่ 1 SELECT student.stuname, register.grade, register.subcode FROM student INNER JOIN register ON student.stucode = register.stucode WHERE (((register.subcode)=“$subcode"));

40 แสดงรายชื่อนักเรียนกับอาจารย์ที่ปรึกษา
ตัวอย่าง Source Code แสดงรายชื่อนักเรียนกับอาจารย์ที่ปรึกษา <html> <body> <? $hostname="localhost"; $username="root"; $password="root"; $database="myschool"; mysql_connect($hostname,$username,$password) or die("Unable to connect database"); mysql_select_db($database) or die("Unable to select database"); $query="SELECT student.stuname, advisor.advname FROM advisor INNER JOIN student ON advisor.advcode = student.advcode"; $result=mysql_query($query); ?> select3.php

41 <table border="1" cellspacing="2" cellpadding="2">
<tr> <th>Student Name</th> <th>Advisor Name</th> </tr> <? while ($row=mysql_fetch_array($result)) { $stuname=$row[stuname]; $advname=$row[advname]; ?> <td><? echo $stuname; ?></td> <td><? echo $advname;?></td> } mysql_close(); </table> </body> </html> select3.php (ต่อ)

42 2. แสดงรายชื่อนักเรียน วิชาที่ลงทะเบียน และคะแนนที่ได้
2. แสดงรายชื่อนักเรียน วิชาที่ลงทะเบียน และคะแนนที่ได้ <html> <body> <? $hostname="localhost"; $username="root"; $password="root"; $database="myschool"; mysql_connect($hostname,$username,$password) or die("Unable to connect database"); mysql_select_db($database) or die("Unable to select database"); $query="SELECT student.stuname, subject.subname, register.score FROM subject INNER JOIN (student INNER JOIN register ON student.stucode = register.stucode) ON subject.subcode = register.subcode"; $result=mysql_query($query); ?> select4.php

43 <table border="1" cellspacing="2" cellpadding="2">
<tr> <th>Student Name</th> <th>Subject Name</th> <th>Score</th> </tr> <? while ($row=mysql_fetch_array($result)) { $stuname=$row[stuname]; $subname=$row[subname]; $score=$row[score]; ?> <td><? echo $stuname; ?></td> <td><? echo $subname;?></td> <td><? echo $score;?></td> } mysql_close(); </table> </body> </html> select4.php (ต่อ)

44 3. แสดงรายชื่อวิชา และคะแนนเฉลี่ยของแต่ละกระบวนวิชา
<html> <body> <? $hostname="localhost"; $username="root"; $password="root"; $database="myschool"; mysql_connect($hostname,$username,$password) or die("Unable to connect database"); mysql_select_db($database) or die("Unable to select database"); $query="SELECT subject.subname, Avg(register.score) AS avgscore FROM subject INNER JOIN register ON subject.subcode = register.subcode GROUP BY subject.subname"; $result=mysql_query($query); ?> select5.php

45 <table border="1" cellspacing="2" cellpadding="2">
<tr> <th>Subject Name</th> <th>Average Score</th> </tr> <? while ($row=mysql_fetch_array($result)) { $subname=$row[subname]; $avgscore=$row[avgscore]; ?> <td><? echo $subname;?></td> <td><? printf("%.2f",$avgscore);?></td> } mysql_close(); </table> </body> </html> select5.php (ต่อ)

46 4. แสดงรายชื่อวิชาที่มีนักเรียนลงทะเบียน และชื่อนักเรียนที่ลงทะเบียนในวิชานั้น ๆ พร้อมทั้งเกรดที่ได้รับ <? $hostname="localhost"; $username="root"; $password="root"; $database="myschool"; mysql_connect($hostname,$username,$password) or die("Unable to connect database"); mysql_select_db($database) or die("Unable to select database"); $query1="SELECT register.subcode, subject.subname FROM subject INNER JOIN register ON subject.subcode = register.subcode GROUP BY register.subcode"; $result1=mysql_query($query1); ?> select6.php

47 <? while ($row1=mysql_fetch_array($result1)) // loop while 1 { $subcode=$row1[subcode]; $subname=$row1[subname]; $query2="SELECT student.stuname, register.grade FROM student INNER JOIN register ON student.stucode = register.stucode WHERE (((register.subcode)='$subcode'))"; $result2=mysql_query($query2); echo "<b>$subname</b>"; ?> <table border="1" cellspacing="2" cellpadding="2"> <tr> <th>Student Name</th> <th>Grade</th> </tr> select6.php (ต่อ)

48 <? while ($row2=mysql_fetch_array($result2)) // loop while 2 { $stuname=$row2[stuname]; $grade=$row2[grade]; ?> <tr> <td><? echo $stuname;?></td> <td><? echo $grade;?></td> </tr> } //loop while 2 </table> <br><br> } // loop while 1 mysql_close(); </body> </html> select6.php (ต่อ)

49 select6.php


ดาวน์โหลด ppt CHAPTER 14 Database Management

งานนำเสนอที่คล้ายกัน


Ads by Google