ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
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
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.