羅德興老師的教學歷程檔案 - 109-2 資訊技術 - 主題B2:PHP & MySQL 資料庫系統實作
 

企業資訊與管理系
助理教授/日導
羅德興


歷程檔案 Portfolio

    主題B2:PHP & MySQL 資料庫系統實作

    以三欄式網站展示自己的系統 [download]

    0.
    N-tier 網路資料庫架構
    將您的系統連上網路

    1. 在本機安裝 Apache+ MySQL + PHP, 如 AppServ, WAMP, MAMP, LAMP,...... 

    2. 請申請可執行前述系統的網路(免費)空間,如 byethost, 000webhost, InfiniteFree

    請先備好工具:  (1) 網站 Server + PHP + MySQL, 如 Appserv, (2) 編輯軟體, 如 Notepad ++, (3) 資料庫操作軟體,如 HeidiSQL.


    1. 網站架構
    0. N-tier 網路資料庫架構

    (1) 在本機 (localhost)
    在本機安裝 Apache+ MySQL + PHP, 如 AppServ, WAMP, MAMP, LAMP,...... 
    C:/AppServ/
    www/index.html  為網站入口、 

    (2) 
    將您的系統連上網路
    請申請可執行前述系統的網路(免費)空間,如 byethost, 000webhost, InfiniteFree

    參考例 1 (期末作業):http://da.cust.edu.tw/abc/myshop/
    參考例 2:http://cc.cust.edu.tw/~dsluo/
     
    (a) 在學校主機
    http://cc.cust.edu.tw/~dsluo/
    http://ccs.cust.edu.tw/~s10614d019/

    (b) 外部申請虛擬主機
    如:000webhost, byethost, ......
    http://luo123.byethost17.com/

    (c) 

    Server:da.cust.edu.tw (Terminal 可以 WinSCP 連線處理,若在欣華樓4樓,內部 IP為 192.168.124.8)
    ID:abc
    PW:%abc123

    MySQL database (可以 phpmyadmin 處理)
    ID:abc
    PW:%abc123

    p.s. 1.
    操作資料庫 phpmyadmin
    請使用 da.cust.edu.tw/phpmyadmin

    p.s. 2.
    config.php 請改用

    <?php
      $host = "localhost";  
      $user = "abc";  
      $pwd = "%abc123";  
      $dbname="10514D006"; 
      $conn=mysql_connect($host,$user,$pwd) or die(mysql_error()); 
      mysql_select_db($dbname,$conn) or die(mysql_error());  
      mysql_query('SET NAMES utf8');     
    ?>


    2. 以 ftp, winscp, ...上傳以下檔案到主機上

    三欄式 Frame:頂端 top.html、 左側選單 left.html 、中間顯示區 middle.html

    <!-- index.html 此為註解 -->
    <!-- This is by 學號 XXXXX L.D.S on 2016/11/23 -->
    <FRAMESET rows='20%,*' bordercolor='#ff00ff'>
           <FRAME name='top' SRC='top.html' >
            <FRAMESET cols='20%,80%' bordercolor='#ff00ff'>
                 <FRAME name='left' SRC='left.html'>
                 <FRAME name='middle' SRC='middle.html'>
            </FRAMESET>
    </FRAMESET>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
     


    <!-- top.html
    -->
    <h1>班級 XXX      學號 YYY     姓名 ZZZZ 的網站作業 </h1>
     


    <!-- middle.html -->
    <h1>班級     學號     姓名 </h1>
     


    <!-- left.html -->
    <a href='/db1/db1-1.php' target='middle'> 期末作業練習 1</a><br>
    <a href='/db1/all9.php'  target='middle'> 期末作業練習 2 TEXT-新增-查詢-刪除-更新</a><br> 


    3. 看網站運作
    在瀏覽器 執行 
    http://localhost/index.html

    Unit 8- MySQL-PHP-TEXT-新增-查詢-刪除-更新範例

    // 建立新資料夾  mydb08
    // 8.sql 存至  mydb08/8.sql
    DROP DATABASE IF EXISTS mydb; 
    CREATE DATABASE mydb DEFAULT CHARACTER SET utf8; 
    USE mydb;  
    CREATE TABLE stmd (
      depart_class   CHAR(6)     COMMENT  '班級代碼',
      student_no     CHAR(9)     COMMENT  '學號',
      student_name   VARCHAR(20) COMMENT  '姓名',
      address        VARCHAR(60) COMMENT  '地址',
      primary key(student_no)
    );

    // mydb08/config.php

    // mydb08/style.css


    // mydb08/unit8.php 
    <?php
     
      include "config.php"; // 連線組態
      if (isset($_POST["command"])) $command=$_POST["command"];
      else $command="";
      if ($command=="" || $command=="返回") {
        display_first_page($conn);
      }
      elseif ($command=="新增") {
        display_insert_page($conn);
        display_first_page($conn);
      }
      elseif ($command=="查詢") {
        display_search_page($conn);
      }
      elseif ($command=="更新") {
        display_modify_page($conn);
      }
      elseif ($command=="更新確認") {
        display_confirm_page($conn);
        display_first_page($conn);
      }
      elseif ($command=="刪除") {
        display_delete_page($conn);
        display_first_page($conn);
      }
      mysqli_close($conn);
     
      function display_first_page($conn) { // 第一個頁面
        echo "<html><head><title>MySql與PHP結合-TEXT-新增-查詢-刪除-更新範例</title>
              <link rel='stylesheet' type='text/css' href='style.css'>
              </head><body><center>
              <table> <form method='post' action=''>
              <tr class='alt0'><td colspan=2>MySql與PHP結合-TEXT-新增-查詢-刪除-更新範例</td></tr>
              <tr><td class='alt1'>班級代碼</td>
              <td><input type='text' name='depart_class' size=10/></td></tr>
              <tr><td class='alt1'>學號</td>
              <td><input type='text' name='student_no'  size=20 /></td></tr>
              </table>
              <input class='cmd' type='submit' name='command' value='查詢'>
              <input class='cmd' type='submit' name='command' value='新增'>
              </form></center></body></html>";
      }
     
      function display_search_page($conn) {
        $depart_class=$_POST["depart_class"];
        if ($depart_class=="") $depart_class="%"; 
        else $depart_class="%".$depart_class."%";
        $student_no=trim($_POST["student_no"]); 
        if ($student_no=="") $student_no="%"; 
        else $student_no="%".$student_no."%"; 
        $sql="select * from stmd where depart_class like '$depart_class' and  
              student_no like '$student_no' order by depart_class,student_no";
        $result=mysqli_query($conn,$sql);
        echo "<html><head><title>MySql與PHP結合-TEXT-新增-查詢-刪除-更新範例</title>
              <link rel='stylesheet' type='text/css' href='style.css'>
              </head><body><center>
              <table><form method='post' action=''>
              <tr class='alt0'><td colspan=3>MySql與PHP結合-TEXT-新增-查詢-刪除-更新範例</td></tr>
              <tr class='alt1'><td>班級代碼</td><td>學號</td><td>選擇</td></tr>";
        $cnt=0;
        while ($myrow=mysqli_fetch_array($result)) { 
          $depart_class=$myrow["depart_class"];   
          $student_no=$myrow["student_no"];     
          $bgcolor=$cnt % 2+ 2;
          echo "<tr class='alt$bgcolor'><td>$depart_class</td><td>$student_no</td>
                <td><input type='radio' name='student_no' value='$student_no'></td></tr>";
          $cnt++;
        }
        echo "</table>
              <input class='cmd' type='submit' name='command' value='更新'>
              <input class='cmd' type='submit' name='command' value='刪除'
                onclick=\"return confirm('確定要刪除嗎');\" >
              <input class='cmd' type='submit' name='command' value='返回'>
              </form></center></body></html>"; 
      }
     
      function display_insert_page($conn) {
        $depart_class=trim($_POST["depart_class"]);
        $student_no=trim($_POST["student_no"]);
        if ($student_no=="") {
          display_first_page($conn); exit();
        }
        $sql="insert into stmd values('$depart_class','$student_no','','')";
        mysqli_query($conn,$sql);                    
      }
     
      function display_modify_page($conn) { 
        $student_no=$_POST["student_no"]; 
        if ($student_no=="") {
          display_first_page($conn); exit();
        }  
        $sql="select * from stmd where student_no='$student_no' ";
        $result=mysqli_query($conn,$sql);
        $myrow=mysqli_fetch_array($result); 
        $depart_class=$myrow["depart_class"];   
        $student_no=$myrow["student_no"];    
        echo "<html><head><title>MySql與PHP結合-TEXT-新增-查詢-刪除-更新範例</title>
              <link rel='stylesheet' type='text/css' href='style.css'>
              </head><body><center>
              <table><form method='post' action=''>
              <tr class='alt0'><td colspan=6>MySql與PHP結合-TEXT-新增-查詢-更新-刪除範例</td></tr>
              <table> <form method='post' action=''>
              <tr class='alt0'><td colspan=2>MySql與PHP結合-TEXT-RADIO-新增-查詢-範例</td></tr>
              <tr><td class='alt1'>班級代碼</td>
              <td><input type='text' name='depart_class' value='$depart_class' /></td></tr>
              <tr><td class='alt1'>學號</td>
              <td><input type='text' name='student_no' value='$student_no' readonly /></td></tr>
              </table>
              <input class='cmd1' type='submit' name='command' value='更新確認'
                onclick=\"return confirm('確定要更新嗎');\" >
              <input class='cmd' type='submit' name='command' value='返回'>
              </form></center></body></html>";
      }
     
      function display_delete_page($conn) {
        $student_no=$_POST["student_no"];
        if ($student_no=="") {
          display_first_page($conn); exit();
        }
        $sql="delete from stmd where student_no='$student_no'";
        mysqli_query($conn,$sql);                    
      }
     
      function display_confirm_page($conn) {
        $student_no=$_POST["student_no"];
        $depart_class=$_POST["depart_class"];
        $sql="update stmd set depart_class='$depart_class'
              where student_no='$student_no'";
        mysqli_query($conn,$sql);                    
      }
     
    ?>
     
    陸、作業

    一、
    擴充 unit8.php程式,增加另外四個個欄位 '班級代碼', '姓名',性別,  地址', 可以做新增, 查詢, 刪除

    班級代碼欄位請用 Radio,選項有 四技資管一甲 四技資管二甲  四技資管三甲 四技資管四甲

    性別欄位使用 Radio 選項有 男 女
     
    二、.
    參考前述的 壹 到  伍  改寫程式

    1. 壹、建立 www/mydb4來存放所有的開發文件
    2. 將前述的 貳 改用以下資料庫 

    DROP DATABASE IF EXISTS test_xxx;  -- 刪除資料庫
    CREATE DATABASE `test_xxx` CHARACTER SET utf8; -- 建立資料庫 採 utf8 編碼
    -- 新增 table
     
    USE test_xxx;
    -- 利用 AUTO_INCREMENT 自動累加,給該筆記錄一個獨一無二的編號,
    -- 像是給它一個ID,或是一個Index等等,自動從一開始設定的值 (預設是1) 一直累加上去。 
     
    CREATE TABLE supplier_xxx (
        s_id int NOT NULL AUTO_INCREMENT,
        s_name char(100),
        address char(120) NOT NULL,
        PRIMARY KEY (s_id)
    ) CHARACTER SET=utf8, ENGINE=INNODB; 
     
    CREATE TABLE product_xxx (
        p_id char(10) NOT NULL,
        name char(50),
        cost int NOT NULL,
        PRIMARY KEY (p_id)
    ) CHARACTER SET=utf8, ENGINE=INNODB; 
     
    CREATE TABLE ordering_xxx (
        s int NOT NULL,
        p char(10) NOT NULL,
        qty int,
        PRIMARY KEY (s,p),
     
       CONSTRAINT sp_fk2
            FOREIGN KEY (s) REFERENCES supplier_xxx(s_id)
            ON DELETE NO ACTION
            ON UPDATE CASCADE,
     
       CONSTRAINT sp_fk3
            FOREIGN KEY (p) REFERENCES product_xxx(p_id)
            ON DELETE NO ACTION
            ON UPDATE CASCADE
     
     ) CHARACTER SET=utf8, ENGINE=INNODB; 
    -- type=innodb 相當於 engine=innodb

    3. 沿用  參、建立 www/mydb/style.css
    4. 改寫 肆 的 config.php 程式
    5-1. 改寫 伍的 unit4.php 程式,將欄位改為 product_xxx  的 p_id,  name, cost 等三個欄位 (商品編號、品名、價格)
    5-2. 改寫 伍的 unit4.php 程式,將欄位改為 supplier_xxx 的 s_id, s_name, addresst 等三個欄位 (s_id 為自動編號不需輸入,廠商名稱、廠商地址)
    5-3. 改寫 伍的 unit4.php 程式,將欄位改為 ordering_xxx 的 s, p, qty 三個欄位 (廠商名稱 和 商品編號 s, p 亦可 使用 SELECT 自動帶出,訂購數量)
     
    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應