資料庫程式設計 – PHP+MySQL 第 十一章 表格異動處理程式  上一頁      下一頁

 

11-5 資料插入 – Insert into

內容:

  • 11-5-1 Insert into 語法

  • 11-5-2 範例研討:增加監護人資料

  • 11-5-3 範例研討:新增學生資料

  • 11-5-4 範例研討:新增課程

11-5-1 Insert into 語法

將資料插入資料表則使用 Insert 命令達成,但它每次增加一筆記錄,格式如下:

Insert into 資料表名稱 <欄位串列>

Value (<資料串列>);

11-5-2 範例研討 增加監護人資料

(A) 系統功能:Ex11_4

請新增 3 位學生的監護人資料到 guardian 資料表內。(請先建立 guardian 資料表)

(B) 利用 SQL 命令

AppServ SQL 介面下輸入下列命令即可:(如已刪除 guardian 表請再新增)

Insert Into guardian

values("90211304", "陳媽媽", "0923111223", "高雄市苓雅區建國路 30  ", "母女");

Insert Into guardian

values("90211305", "吳爸爸", "0923111341", "高雄市新興區民族路 40  ", "父女");

Insert Into guardian

values("90211306", "陳爸爸", "0945675223", "高雄市三民區九如路 10  ", "父子");

11-5-3 範例研討 新增學生資料

(A) 系統功能:Ex11_5

教務處希望有一個可供登錄學生資料的網頁,期望輸入網頁的格式如下:

執行網頁的結果如下:

如果重複插入,則會出現此視窗:

 (B) SQL 系統分析

學生資料登錄於 students 表內,此題目須對該資料表做 Insert into 的動作。下圖是 students classes 兩張資料表之間的關聯,兩張資料表內的 class_ID 欄位建立主鍵與外來鍵之關係,也就是說,當我們輸入 students 表內的 class_ID 欄位必須對應到 classes 表格,不可以隨意輸入,不然關聯就中斷了。因此,此 class_ID 與班級名稱(class_name) 之間的對應關係,就由表單網頁來達成,使用者選擇班級名稱後,它傳送 class_ID 給執行網頁。另外,student_ID class_ID 加上座號(seat_num),在查詢網頁由使用者輸入座號,執行網頁再將 class_ID seat_num 連結成為學號 (student_ID)(請參閱第三章說明)。表單網頁的關聯圖如下:

『執行網頁』接收訊息後,將該筆資料插入 students 表內,SQL 程式如下:

Insert Into students

values(‘$student_ID’, ‘$name’, ‘$class_ID’, ‘$sex’, ‘$tel’, ‘$mailbox’ ‘$address’)

(C) 網頁製作技巧

依照上述 SQL 分析,網頁設計如下:

 (D) 查詢網頁範例:Ex10_5-form.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>登錄新生資料</title></head>

<body>

   <p> 登錄新生資料 </p>

   <form name="表單" method="post" action="Ex11_5-action.php">

                班級名稱:

                <select name="class_ID">

<?php      

        $select_db = mysqli_connect("localhost", "root", "12345678", "course_db")

                or die("MySQL 伺服器連結失敗 <br>");

        // 查詢班級名稱

        $sql_query = "select class_ID, class_name

                  from classes";

        $result = mysqli_query($select_db, $sql_query);

                while($row=mysqli_fetch_row($result)) {

                        echo "<option value='$row[0]'> $row[1] </option><BR>";

                }

                echo "</select>";

                echo "<BR><BR>";

    mysqli_close($select_db);

?>

       

                學生座號(兩位數不可重複) <input name="seat_num" type="text"><BR>

        姓名: <input name="name" type="text"><BR>

        性別: <select name="sex">

                    <option></option>

                    <option></option>

               </select><BR><BR>

        電話: <input name="tel" type="text"><BR>

        電子郵件: <input name="mailbox" type="text"><BR>

        地址: <input name="address" type="text"><BR>

        <input type="submit" value="送出">

  </form>

</body>

</html>

(1) 12 ~ 27 行:建立下拉式選單,讓使用者選擇班級名稱,再傳遞班級代碼 (class_ID) 給執行網頁。

(2) 30~38 行:直接輸入學生資料,包含座號。

(D) 執行網頁範例:Ex10_5-action.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

<?php

        $class_ID = $_POST["class_ID"];

    $seat_num = $_POST["seat_num"];

    $student_ID = $class_ID.$seat_num;  //連結產生學號

    $name = $_POST["name"];

    $sex = $_POST["sex"];

    $tel = $_POST["tel"];

    $mailbox = $_POST["mailbox"];

    $address = $_POST["address"];

    $select_db = mysqli_connect("localhost", "root", "12345678", "course_db")

                or die("MySQL 伺服器連結失敗 <br>");

        $sql_query = "insert into students values(

                        $student_ID, '$name', '$class_ID',

                        '$sex', '$tel', '$mailbox', '$address')";

        $result = mysqli_query($select_db, $sql_query);

    // 測試是否登錄成功

        if (!$result){

                echo "學生資料登錄失敗(可能學號重複,請進入 AppServ 觀察) ! <ER>";

                exit();

        }

        // 查詢新增學生資料

        $sql_query = "select *

                      from students

                                  where student_ID = $student_ID";

        $result = mysqli_query($select_db, $sql_query);

    echo "登錄新生資料如下:<BR><BR>";

        $items = array("學號", "姓名", "班級代碼", "性別", "電話", "郵件", "地址");

        echo "<table border = '2'><tr align='center'>";

        // 利用 foreach 迴圈印出陣列 $item

        foreach ($items as $value) {

                echo "<td> $value </td>";

        }

        echo "</tr>";

        while($row=mysqli_fetch_row($result)) {

                echo "<tr>";

                for($j=0; $j<mysqli_num_fields($result); $j++) {

                        echo "<td>$row[$j]</td>";

                }

                echo "</tr>";

        }

        echo "</table>";

        mysql_close($db_link);

?>

(1) 18~21 行:插入學生資料。

(2) 28~40 行:顯示新增學生資料的內容。

11-5-4 範例研討 新增課程

(B)    系統功能:Ex11_6

教務處需要一個可供新增課程的網頁,期望查詢網頁如下:

執行網頁的結果如下:

 (B) SQL 系統分析

課程資料是登錄於 all_course 資料表,須對它執行 Insert into 命令動作。下圖是 all_course department 兩張資料表之間關聯,它們是利用 dep_ID 來識別哪一系所規劃的課程。我們在查詢網頁上製作下拉式選單,並傳送 dep_ID 訊息給直行網頁。在執行網頁方面,其課程代碼(course_ID) 編碼方式是:學制(sys_ID,日間四技=40、進修部四技=90)+系別代碼(如資管系= 11)+課程編碼(如網路程式設計=002,每一系編碼不可重複 ) (請參閱第三章說明)

(C) 網頁設計技巧

吾人依照上述 SQL 分析,網頁設計如下:

(D) 表單網頁的程式範例:Ex10_6-form.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>新增課程資料</title></head>

<body>

        <p> 新增課程資料 </p>

        <form name="表單" method="post" action="Ex11_6-action.php">

                系別名稱:

                <select name = "dep_ID">

<?php      

                $select_db = mysqli_connect("localhost", "root", "12345678", "course_db")

                        or die("MySQL 伺服器連結失敗 <br>");

                // 查詢系別名稱

                $sql_query = "select *

                                          from department";

                $result = mysqli_query($select_db, $sql_query);

                while($row=mysqli_fetch_row($result)) {

                        echo "<option value='$row[0]'> $row[1] </option><BR>";

                }

                echo "</select>";

                echo "<BR><BR>";

                mysqli_close($select_db);

?>

                學制:

                <select name="sys_ID">

                        <option value = "40"> 日間部四技 </option>

                        <option value = "90"> 進修部四技 </option>

                </select> <BR><BR>

       

                課程編碼(3 碼數不可重複) <input name="num" type="text"><BR><BR>

        課程名稱: <input name="course_name" type="text"><BR><BR>

        必選修: <select name="required">

                    <option>必修</option>

                    <option>選修</option>

                 </select><BR><BR>

        學分數: <select name="credit">

                    <option> 1 </option>

                    <option> 2 </option>

                                  <option> 3 </option>

                                  <option> 4 </option>

                 </select><BR><BR>

        <input type="submit" value="送出">

        </form>

</body>

</html>

(D) 執行網頁的程式範例:Ex10_6-action.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

<?php

        $sys_ID = $_POST["sys_ID"];

        $dep_ID = $_POST["dep_ID"];

    $num = $_POST["num"];

    $course_name = $_POST["course_name"];

    $required= $_POST["required"];

    $credit = $_POST["credit"];

    $course_ID = $sys_ID.$dep_ID.$num;  //連結產生課程代碼

    $select_db = mysqli_connect("localhost", "root", "12345678", "course_db")

                or die("MySQL 伺服器連結失敗 <br>");

        $sql_query = "insert into all_course values(

                        $course_ID, '$course_name', '$dep_ID',

                        '$required', '$credit')";

        $result = mysqli_query($select_db, $sql_query);

    // 測試是否登錄成功

        if (!$result){

                echo "課程登錄登錄失敗(可能編碼重複,請進入 AppServ 觀察) ! <ER>";

                exit();

        }

        // 查詢新增課程資料

        $sql_query = "select *

                      from all_course

                                  where course_ID = $course_ID";

        $result = mysqli_query($select_db, $sql_query);

    echo "新增課程資料如下:<BR><BR>";

        $items = array("課程代碼", "課程名稱", "系別編碼", "必選修", "學分數");

        echo "<table border = '2'><tr align='center'>";

        // 利用 foreach 迴圈印出陣列 $item

        foreach ($items as $value) {

                echo "<td> $value </td>";

        }

        echo "</tr>";

        while($row=mysqli_fetch_row($result)) {

                echo "<tr>";

                for($j=0; $j<mysqli_num_fields($result); $j++) {

                        echo "<td>$row[$j]</td>";

                }

                echo "</tr>";

        }

        echo "</table>";

        mysql_close($db_link);

?>

翻轉工作室:粘添壽

 

course_db 關聯圖

資料庫程式設計:

 

 

 

翻轉電子書系列: