溫瑞烘老師的教學歷程檔案(Teaching ePortfolio) - 105-1-資料庫程式設計 - 第5週-MySQL-SELECT-PHP-新增-查詢-刪除
 

資訊管理系
副教授
温瑞烘


歷程檔案 Portfolio


關於我 About Me

第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

  
 
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
  $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

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