最新文章

2010年6月11日 星期五

一日十行-PHP教學3

今天仍然是還在HTML的階段,下一回就可以進入真正的第一支PHP程式了。我們打開昨天的檔案繼續編輯,只有多2行新的原始碼,另外2行則是補充參數的部分,廣義的算起來有4行的新原始碼。

一樣,已經解釋過的部份用藍色,新增的原始碼用淺棕色來表示。
今天的進度如下:

1     <META HTTPEQUIV="Content-Type" CONTENT="text/html;CHARSET=big5">
2     <html>
3     <head>
4     <title>一日十行-PHP教學3</title>
5     </head>
6     <body>
7     <form action="setupdata1.php" method="post" id="setupdata1">
8     <table>
9     <tr><td colspan="2" align="center">寫入設定檔</td></tr>
10   <tr><td>資料庫管理員名稱</td><td><input type="text" name="db_admin" id="db_admin"></td></tr>
11   <tr><td>資料庫管理員密碼</td><td><input type="text" name="db_password" id="db_password"></td></tr>
12   <tr><td colspan="2" align="center"><input type="submit" value="送出"></td></tr>
13   </table>
14   </form>
15   </body>
16   </html>




先解釋新增的第7行和第14行,<form action="setupdata1.php" method="post" id="setupdata1">以及</form>這兩個標籤是一對,記不記得昨天說過,這是一個表單,而表單需要程式來支援才有作用,所以在「form」的後面加一個參數「action="setupdata1.php"」,呼叫支援表單的程式〈action就是「動作」的意思,還蠻容易理解的吧〉,後面的「method」就是「方式」的意思,指的是「資料傳遞的方式」,而這裡寫的是「method="post"」就是「用post的方式傳遞表單內容」,資料傳遞的方式有post和get兩種,這裡我們用的是「post」,而post和get的差異主要是安全性會有點不同,但是有時還是要利用get的方式會比較便利、省資源,其中的差異日後我們再詳談,暫時我們都先用post來進行。所以,這一對標籤就是在告訴瀏覽器:「這兩個標籤所包住的這個表單各欄位是要靠一支叫做『setupdata1.php』的程式來運作〈action="setupdata1.php"〉,而表單各欄位的資料是用post的方式傳遞到目的地去的喔!」

接下來我們看第10和第11行的新增部分「name="db_admin" id="db_admin"」和「name="db_password" id="db_password"」,上面有說到,我們要用另一支叫做「setupdata1.php」的程式來支援這個表單,那一支程式要先接收這個表單裡欄位的內容之後進行處理,再把表單裡的資料送到目的地去,而setupdata1.php這個程式和現在這個表單的各個欄位又不熟,不知道哪個資料串是從哪個欄位傳過來的,所以,為了讓setupdata1.php分辨資料的來源,我們必須給每個欄位即將輸入的內容預設一個代號,也就是「name」了,而後面的「id」則是這個欄位在這個表單之中的名稱,如果我們以後為了要檢查某個欄位是否依照我們規定的輸入規則進行資料填寫時,就要用這個「id」去找那特定的欄位了。

這個觀念有一點容易混淆,明明name是名字的意思,但是為什麼欄位的名稱卻是id?沒關係,這個疑問日後你開始寫程式之後,慢慢你就會淡忘理解的,為了避免一些困擾,我們把name和id都設成一樣就不會有太大的問題了。

進一步說吧,在表單的資料傳遞時,會以name所設的名稱為代號把資料傳出去,例如第10行「name="db_admin"」,想像一下,你在那個欄位裡填的資料庫管理員名稱假設是「IAMGOD」在按下送出鍵時,「IAMGOD」會被一個叫做「db_admin」的盒子包起來後傳遞出去,程式接到了這個「db_admin」的盒子,就帶著它去找某處有個標示著「我要接收db_admin這個包裹!」的目的地,找到以後就把「db_admin」打開,然後把「IAMGOD」拿出來,放到目的地去。

而id的作用則是在資料傳遞之前的事情,一樣用想像的,如果我們付予程式一個任務,就是在傳遞盒子之前,先檢查一下那個盒子裡裝的物品規格合不合規定,而程式裡執行任務的小尖兵就會在盒子傳遞出去之前先跑去表單裡找那個盒子,這時後小尖兵的依循標準就是id這個名稱,如果盒子裡的東西不合規格,就不能以name的包裝傳送出去,並且小尖兵還可能會大叫一聲:「喂!這裡裝的東西不太對勁喔!」,這個概念如果沒有遇到實際的狀況會比較難理解,總之,我們在做每個表單欄位時就給個「name」和「id」會是不錯習慣。

好,今天把這4行都解釋完了,存檔吧,下一回這個檔案會先放著,我們要做的是讓這個表單活起來的程式,也就是真的進入PHP的領域了。下課!

沒有留言:

色碼產生器