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