羅德興老師的教學歷程檔案 - 111-2 三甲 ASP & DB - Unit 5- MySQL-SELECT-PHP-新增-查詢-刪除
 

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


歷程檔案 Portfolio

    Unit 5- MySQL-SELECT-PHP-新增-查詢-刪除

    Unit 5- MySQL-SELECT-PHP-新增-查詢-刪除

    <select的語法格式
    選擇 :
    <select name='choice' size=1>
      <option value='資管三甲'>資管三甲</option>
      <option value='資管三乙'>資管三乙</option>
      <option value='資管三丙'>資管三丙'</option>
    </select>


    壹、建立 www/mydb/select.sql 儲存建立資料庫與表的命令
     
    DROP DATABASE IF EXISTS mydb; 
    CREATE DATABASE mydb DEFAULT CHARACTER SET utf8; 
    USE mydb;  
    CREATE TABLE stmd (
      depart_class   CHAR(4) COMMENT  '甲班、乙班、丙班、丁班',
      student_no     CHAR(3) COMMENT  '1號、2號、3號、4號',
      student_name   CHAR(4) COMMENT  '陳生、林生、張生、謝生',
      address        CHAR(4) COMMENT  '台北、新北、台中、高雄',
      primary key(depart_class,student_no,student_name,address)
    );
     
    貳、建立PHP程式 www/mydb/select.php
    <?php
     
      include "config.php"; // 連線組態
      if (isset($_POST["command"])) $command=$_POST["command"];
      else $command="";
      if ($command=="") {
        display_first_page($conn);
      }
      elseif ($command=="新增") {
        display_insert_page($conn);
        display_first_page($conn);
      }
      elseif ($command=="查詢") {
        display_search_page($conn);
      }
      mysqli_close($conn);
     
      function display_first_page($conn) { // 第一個頁面
        echo "<html><head><title>MySql與PHP結合-SELECT-新增-查詢-範例</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結合-SELECT-新增-查詢-範例</td></tr>
              <tr><td class='alt1'>學號</td><td>
              <select name='student_no' SIZE=1>
                <option value=''/>選擇
                <option value='1號'/>1號
                <option value='2號'/>2號
                <option value='3號'/>3號
                <option value='4號'/>4號
              </select></td></tr></table>
              </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) {
        $student_no=trim($_POST["student_no"]); // 取得輸入的學號,移除前後空白
        if ($student_no=="") $student_no="%";   // 查詢全部
        else $student_no="%".$student_no."%";   // 查詢匹配的學號
        $sql="select * from stmd where student_no like '$student_no' order by student_no";
        $result=mysqli_query($conn,$sql);
        echo "<html><head><title>MySql與PHP結合-SELECT-新增-查詢-範例</title>
              <link rel='stylesheet' type='text/css' href='style.css'>
              </head><body><center>
              <table><form method='post' action=''>
              <tr class='alt0'><td colspan=5>MySql與PHP結合-SELECT-新增-查詢-範例</td></tr>
              <tr class='alt1'><td>學號</td></tr>";
        $cnt=0;
        while ($myrow=mysqli_fetch_array($result)) { 
          $student_no=$myrow["student_no"];    
          $bgcolor=$cnt % 2+ 2;
          echo "<tr class='alt$bgcolor'><td>$student_no</td></tr>";
          $cnt++;
        }
        echo "</table></center></body></html>"; 
      }
     
      function display_insert_page($conn) {
        $student_no=$_POST["student_no"];
        if ($student_no=="") {
          display_first_page($conn); exit();
        }
        $sql="insert into stmd values('','$student_no','','')";
        mysqli_query($conn,$sql);                    
      }
     
    ?>
     
    三、作業
     
    擴充select.php程式,增加另外三個欄位 '班級代碼', '姓名', '地址',
     
    必須做新增、查詢、刪除等功能

    由於主要鍵是四個攔位組合, 因此 必須下傳四個攔位的值, 可以利用

    $key="$depart_class,$student_no,$student_name,$address";

    <input type='radio' name='key' value='$key' onclick=\"return confirm('確定要刪除嗎?') \" >


    在display_delete_page($conn) 中, 可以取出

    $key=$_POST["key"];

    $key_list=explode(",",$key);

    $depart_class=$key_list[0];
    $student_no=$key_list[1];
    $student_name=$key_list[2];
    $address=$key_list[3];


    $sql = "delete from stmd where depart_class='$depart_class' and 
                 student_no='$student_no' and student_name='$student_name' and address='$address' ";


     
     在前面的設計中, primary key是由四個欄位組成且沒有其他多餘的欄位, 這樣的設計沒有辦法做更新的動作

      最好可以使用一種自動遞增的識別欄位作為primary key

      
    -- 建立 www/mydb/select2.sql 儲存建立資料庫與表的命令
    DROP DATABASE IF EXISTS mydb; 
    CREATE DATABASE mydb DEFAULT CHARACTER SET utf8; 
    USE mydb;  
    CREATE TABLE stmd (
      oid    INT(5)   UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '遞增識別碼', 
      num1   INT      COMMENT  '數目1',
      op     CHAR(1)  COMMENT  '+-*/',
      num2   INT      COMMENT  '數目2',
      result INT      COMMENT  '結果',
      primary key(oid)
    );
     
    INSERT INTO stmd VALUES(null,10,'+',20,30);
     
    底下是一個程式範例
    建立建立PHP程式  www/mydb/select2.php

     
    <?php
      $command=$_POST["command"];
      if ($command=="") {
        echo "<html><body><center>
              <form method=post action=''>
                <select name='num1' size=1>";
        for ($i=1; $i<=15; $i++) 
          echo "<option value=$i>$i</option>";
        echo "</select> 
              <select name=op size=1>
                <option value='+'>+</option>
                <option value='-'>-</option>
                <option value='*'>*</option>
                <option value='/'>/</option>
              </select>
              <select name='num2' size=1>";
        for ($i=1; $i<=15; $i++) 
          echo "<option value=$i>$i</option>";
        echo "</select><br>
             <input type=submit name=command value=送出>
             <input type=reset  name=command value=清除>
             </form></center></body></html>";
      }
      elseif ($command=="送出") {
        $num1=$_POST["num1"];
        $op=$_POST["op"];
        $num2=$_POST["num2"];
        if ($op=="+") $result=$num1+$num2;
        elseif ($op=="-") $result=$num1-$num2;
        elseif ($op=="*") $result=$num1*$num2;
        elseif ($op=="/") $result=$num1/$num2;
        echo "<html><body><center>
              $num1 $op $num2 = $result
              </center></body></html>";
     }
    ?>
     
    作業五
     
      依照本學期的程式介面,利用前述範例改成可新增、查詢、刪除
    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

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