Introduction to PHP part3

Download Report

Transcript Introduction to PHP part3

Introduction to PHP part3
Outline
複習上禮拜課程
• 建立使用者輸入介面(表單)
• 如何傳遞使用者資料給Server(GET/POST)
• Server如何處理使用者傳遞的資料
MySQL資料庫
• 資料庫概念Overview
• phpMyAdmin(web介面管理資料庫)
• PHP連結資料庫
動態網頁
• 現在的網頁不單單只是單向的顯示網頁給使
用者端, 更可以和使用者作互動
– Ex: Google搜尋引擎
• 因此需要製作一個使用者介面讓使用者可以
輸入的動作
– 使用HTML來設計一個輸入的介面
• 表單(Form)
• Web server必須也要有個相對應的程式可以
處理使用者輸入的資料, 並給予適當的回應
PHP的表單處理
• 網頁表單為網站的使用者介者,利用此介面將使用者輸入
的資料傳送到伺服端的PHP程式進行處理,也可以說是PHP
程式的輸入介面。
將輸入的資料傳送到伺服
端的PHP程式處理。
User input data
瀏覽程式的網
頁表單
執行結果回傳給瀏覽
程式顯示。
Web伺服器
PHP程式
表單(Form)
• 先定義出一個表單, 在表單裡面可以有很多輸入欄位
– 文字欄位(Text), 密碼欄位(Password), 單一選擇鈕(Radio), 多
重選擇鈕(Check Box), 文字區塊:可輸入大量文字(Text Area)
• 會一次將一個表單裡面所有的輸入欄位送給web
server
– 將想要使用者輸入的欄位都置放在同一個表單裡
表單(Form)
• 表單的傳送方式有GET和POST
– GET:最大長度為255 ,會於網址尾端加上?變
數名稱1=值&變數名稱2=值…。 處理表單資料的php
php所在 http://ip/get.php?a=1&b=2
的ip
– POST:所傳訊息不會顯示,資料長度無限制。
(伺服器的php還是會設定一限制) 當資料傳送到
選擇要使用
GET或POST方
式傳送資料
server後, 由哪個
php程式來處理
這些資料
PHP範例 (GET Method)
• 問卷調查的簡單範例
– 在server端有一個person.html, 會秀出以下的表
<form method="get" action="get.php" name="myform">
單
這個表單傳送的方式為GET,
表單傳送到server後, server會
尋找是否有get.php, 若有, 則
將表單資料丟給get.php處理
(在此我們將person.html和
get.php放在同個資料夾下)
姓名 <input name="name"><br>
是否為本系學生&nbsp;<input name="check"
type="checkbox">
年級&nbsp;
<select name="year">
<option value="first">大一</option>
<option value="second">大二</option>
<option value="third">大三</option>
<option value="fourth">大四</option>
</select>
男 <input name="sex" value="boy" type="radio">
女 <input name="sex" value="girl" type="radio"><br>
<input name="submit" value="submit" type="submit"><br>
</form>
表單的html原始碼
按下submit後, 將表
單資料送到server
送出的資料經過
get.php的處理後回
傳給使用者的結果
使用GET傳送表單, 會
將傳送的資料都顯示
在瀏覽器的網址列上
<?php
?>
get.php的原始碼
$name=$_GET['name'];
使用$_GET陣列
$sex=$_GET['sex'];
來取得使用者
$check=$_GET['check'];
傳來的資料
$year=$_GET['year'];
echo $name;
注意事項:
echo "性別是$sex<br>";
1.在表單裡面form的欄
if (strcmp("on",$check)==0){
位的name代表著送出
echo "就讀本系 $year year";
的欄位名稱
}
2.echo的字串會送回給
else{
client
echo "不是本系學生";
3.strcmp是用來比較兩
}
個字串是不是相同的
function, 相同會回傳0
PHP範例 (POST Method)
• 留言板範例
– 在server端有一個message.html, 會秀出以下的
介面
message.html的原始檔
<form method="post"
action="message.php" name="form">
訪客留言
訪客暱稱 <input name="name"><br>
留言<br>
<textarea cols="30" rows="5"
name="message"></textarea><br>
</form>
注意事項
1.使用POST method來傳送
資料不會顯示在網址列上
2.送出的資料為name=John
message=Hello
message.php的原始碼
<?php
$nickname=$_POST['name'];
$message=$_POST['message'];
$time=date("Y-m-d H:i:s");
echo "<table border=\"1\"";
echo "cellpadding=\"2\" cellspacing=\"2\">
<tbody> <tr>";
echo "<td > $nickname </td>";
echo "<td > $time </td></tr><tr>";
echo "<td colspan=\"2\" rowspan=\"1\">";
echo "$message </td></tr></tbody></table>";
?>
注意事項
1.使用$_POST陣列來
接收POST傳送過來的
資料
2.date(“Y-m-d H:i:s”)可
得到目前的年月日時
分秒
3.若想要顯示表格或圖,
echo 相對應的HTML語
法
Outline
複習上禮拜課程
• 建立使用者輸入介面(表單)
• 如何傳遞使用者資料給Server(GET/POST)
• Server如何處理使用者傳遞的資料
MySQL資料庫
• 資料庫概念Overview
• phpMyAdmin(web介面管理資料庫)
• PHP連結資料庫
何謂資料庫
• 資料庫就是用來儲存一堆資料
• 日常生活中處處可見資料庫的存在
– 銀行記錄客戶存款與提款金額
– 航空公司管理班機航次和定位資料
– 學校記錄學籍和選課成績
• 但是資料庫不只是單純儲存在那裡, 還需要
能夠不時地汰舊換新, 且能提供使用者有用
的資訊
– 需要資料庫管理系統來幫忙維護資料庫
資料庫與資料庫管理系統的關係
使用者介面
用來管理, 分析, 查詢
資料庫管理系統
儲存資料的地方
資料庫
關聯式資料庫
• 資料表和資料表也常有關連存在
• 通常一張資料表都會盡量精簡, 避免資料的重複性,
以防資料被修改後的不一致性
– 我們可透過資料表間的關聯性, 找到更多資訊
客戶資料表
訂單資料表
訂單
序號
日期
客戶
編號
是否付款
1
11/23
3
2
11/24
1
客戶 姓名
編號
地址
電話
1
小明
台北市敦化南路
02-2222
否
2
小華
台中市精誠路
04-1111
是
3
小小
新竹市光復路
03-5555
資料定義語言
• 定義一筆資料裡有哪些欄位, 每個欄位的資
料型態, 簡稱DDL
• 範例:學生表格定義
建立資料表間的關聯性 (cont)
• 使用主鍵(primary key)和外來鍵(foreigner key)來建
立資料表間的關聯性
• 主鍵(primary key): 找到表格裡某個欄位的值是獨
一無二, 不會有重複的情況發生
– 可想成是資料的身分證號碼
– 可由多個欄位組成, 只要是獨一無二即可
• 當有很多欄位可以成為主鍵,選擇一個合理且比
較通用
主鍵
客戶
編號
姓名
地址
電話
1
小明
台北市敦化南路
02-2222
2
小華
台中市精誠路
04-1111
3
小小
新竹市光復路
03-5555
建立資料表間的關聯性
• 外來鍵(foreigner key): 用來連結某一個表格
上和另一個表格之間的關係
• 外來鍵通常是另一個表格的主鍵
客戶資料表
訂單資料表
訂單
序號
日期
客戶
編號
是否付款
1
11/23
3
2
11/24
1
訂單資
料表的
主鍵
客戶 姓名
編號
地址
電話
1
小明
台北市敦化南路
02-2222
否
2
小華
台中市精誠路
04-1111
是
3
小小
新竹市光復路
03-5555
外來鍵, 可和
客戶資料表建
立連結
客戶資料表
的主鍵
MySQL
• PHP本身支援多種資料庫系統的使用, 不過
PHP+MySQL是最常見的組合
• MySQL是命令視窗介面的資料庫系統, 操作
起來比較不方便
• phpMyAdmin是一套以php3寫成,針對
MySQL資料庫系統的Web管理界面。它可以
很方便地以圖形化界面,來對MySQL資料庫
內之資料做增刪的做動,更可以做資料庫
本身的增刪管理
使用phpMyAdmin管理資料庫
• http://ip/home/mysql
– IP為MySQL server的ip address, 由於我們都架在
同一台電腦, 所以和PHP server的IP相同
管理資料庫的使用者
預設的管理者為root, 沒有密碼, 所以一開始就先設定root的密碼
可新增其他使用
者來連結資料庫
更新連線資料庫的帳號密碼
• 新增密碼後, 要重新連進phpMyAdmin介面必
須要更改設定檔, 將密碼更新
• 更改Program Files\EasyPHP5.3.0\phpmyadmin
下的config.inc.php
• 將密碼填入$cfg['Servers'][$i]['password']
建立資料庫
在資料庫和資料表
等命名請用英文
建立資料表
建立資料表
建立資料表的欄位
如果是Primary key的欄位是文字, 請型態要選擇VarChar, 並且要給它長度的限制值
建立好的資料表
建立資料表的關聯性
在Designer部分, 可將資料表間建立關聯
填入資料
建立完資料表後, 將資料庫的內容填
入各個資料表
資料填寫處
查詢範例(SQL)
和Access的查詢介面相像
選擇完欲查詢欄位
後, 點選更新語法,
可得到SQL程式
PHP連結資料庫
• 假設有一個資料庫存著書籍的資料表(如下
表所示), 如何寫一個php程式連結資料庫來
存取書籍資料表的範例程式
讀取書籍資料表?
• PHP和MySQL相關的函式庫
轉換成HTML格式
範例: 網路書店
• 在server端有一個bookstore.html的網頁, 可
用來查詢自己的訂單
處理資料庫的php原始碼
若輸入Peh, 則得到的結果如下
資料庫部分
今日練習
• 預設披薩店裡的庫存量是每種披薩各10個
– 計算出客戶點的披薩總共要多少錢 (基本題)
– 建立披薩的資料庫, 如果已經沒有足夠的披薩,
必須跟客戶說材料不足, 無法供應 (50% bonus)