340 likes | 449 Views
Introduction to PHP part3. Outline. 動態網頁. 現在的網頁不單單只是單向的顯示網頁給使用者端 , 更可以和使用者作互動 Ex: Google 搜尋引擎 因此需要製作一個使用者介面讓使用者可以輸入的動作 使用 HTML 來設計一個輸入的介面 表單 (Form) Web server 必須也要有個相對應的程式可以處理使用者輸入的資料 , 並給予適當的回應. 瀏覽程式的網 頁表單. Web 伺服器. PHP 的表單處理.
E N D
動態網頁 • 現在的網頁不單單只是單向的顯示網頁給使用者端, 更可以和使用者作互動 • Ex: Google搜尋引擎 • 因此需要製作一個使用者介面讓使用者可以輸入的動作 • 使用HTML來設計一個輸入的介面 • 表單(Form) • Web server必須也要有個相對應的程式可以處理使用者輸入的資料, 並給予適當的回應
瀏覽程式的網 頁表單 Web伺服器 PHP的表單處理 • 網頁表單為網站的使用者介者,利用此介面將使用者輸入的資料傳送到伺服端的PHP程式進行處理,也可以說是PHP程式的輸入介面。 將輸入的資料傳送到伺服端的PHP程式處理。 User input data 執行結果回傳給瀏覽程式顯示。 PHP程式
表單(Form) • 先定義出一個表單, 在表單裡面可以有很多輸入欄位 • 文字欄位(Text), 密碼欄位(Password), 單一選擇鈕(Radio), 多重選擇鈕(Check Box), 文字區塊:可輸入大量文字(Text Area) • 會一次將一個表單裡面所有的輸入欄位送給web server • 將想要使用者輸入的欄位都置放在同一個表單裡
表單(Form) • 表單的傳送方式有GET和POST • GET:最大長度為255 ,會於網址尾端加上?變數名稱1=值&變數名稱2=值…。http://ip/get.php?a=1&b=2 • POST:所傳訊息不會顯示,資料長度無限制。(伺服器的php還是會設定一限制) 處理表單資料的php php所在的ip 當資料傳送到server後, 由哪個php程式來處理這些資料 選擇要使用GET或POST方式傳送資料
PHP範例 (GETMethod) • 問卷調查的簡單範例 • 在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原始碼
使用GET傳送表單, 會將傳送的資料都顯示在瀏覽器的網址列上 按下submit後, 將表單資料送到server 送出的資料經過get.php的處理後回傳給使用者的結果
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
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>
注意事項 • 使用POST method來傳送資料不會顯示在網址列上 • 送出的資料為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>"; ?> • 注意事項 • 使用$_POST陣列來接收POST傳送過來的資料 • date(“Y-m-d H:i:s”)可得到目前的年月日時分秒 • 若想要顯示表格或圖,echo 相對應的HTML語法
何謂資料庫 • 資料庫就是用來儲存一堆資料 • 日常生活中處處可見資料庫的存在 • 銀行記錄客戶存款與提款金額 • 航空公司管理班機航次和定位資料 • 學校記錄學籍和選課成績 • 但是資料庫不只是單純儲存在那裡, 還需要能夠不時地汰舊換新, 且能提供使用者有用的資訊 • 需要資料庫管理系統來幫忙維護資料庫
資料庫與資料庫管理系統的關係 使用者介面 用來管理, 分析, 查詢 儲存資料的地方 資料庫 資料庫管理系統
關聯式資料庫 • 資料表和資料表也常有關連存在 • 通常一張資料表都會盡量精簡, 避免資料的重複性, 以防資料被修改後的不一致性 • 我們可透過資料表間的關聯性, 找到更多資訊 客戶資料表 訂單資料表
資料定義語言 • 定義一筆資料裡有哪些欄位, 每個欄位的資料型態, 簡稱DDL • 範例:學生表格定義
建立資料表間的關聯性 (cont) • 使用主鍵(primary key)和外來鍵(foreigner key)來建立資料表間的關聯性 • 主鍵(primary key): 找到表格裡某個欄位的值是獨一無二, 不會有重複的情況發生 • 可想成是資料的身分證號碼 • 可由多個欄位組成, 只要是獨一無二即可 • 當有很多欄位可以成為主鍵,選擇一個合理且比較通用 主鍵
建立資料表間的關聯性 • 外來鍵(foreigner key): 用來連結某一個表格上和另一個表格之間的關係 • 外來鍵通常是另一個表格的主鍵 客戶資料表 訂單資料表 訂單資料表的主鍵 外來鍵, 可和客戶資料表建立連結 客戶資料表的主鍵
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)