作者:孫運動
你可能已經注意到,到目前為止,在我們給你的所有例子中,我們都是給你兩個頁面-一個單純的具有表單的HTML頁面,和另一個用來處理表單輸入並產生相應輸出的PHP腳本。然而,PHP提供了一種把那兩個頁面通過 $submit 變量結合在一起的文雅的方法
你已經知道,一旦一個表單提交給PHP腳本,所有的表單變量就變成了的PHP變量。現在,除了用戶定義的變量外,在你每次點擊表單的“提交(SUBMIT )”按扭的同時,也就創建了一個名為 $submit的變量。因此,通過測試該變量是否存在,聰明的程序員可以只使用一個頁面來既初始化表單又產生提交後的輸出。
讓我們給你示范一下-我們用一個頁面來實現上面那個幸運甜餅例子,包括最初的選擇日期頁面和後面的幸運甜餅頁面。我們假設新的PHP文件也叫"cookie.php"
--------------------------------------------------------------------------------
< ?
if (!$submit)
{
// 如果$submit不存在, 這暗示表單還沒有提交
// 所以顯示第一個頁面
?>
< html>
< head>
< style type="text/css">
td {font-family: Arial;}
< /style>
< /head>
< body>
< font face="Arial" size="+2">
The Amazing Fortune Cookie Generator
< /font>
< form method="GET" action="cookie.php">
< table cellspacing="5" cellpadding="5" border="0">
< tr>
< td align="center">
Pick a day
< /td>
< td align="right">
< select name="day">
< option value="Monday">Monday
< option value="Tuesday">Tuesday
< option value="Wednesday">Wednesday
< option value="Thursday">Thursday
< option value="Friday">Friday
< option value="Saturday">Saturday
< option value="Sunday">Sunday
< /select>
< /td>
< /tr>
< tr>
< tr>
< td colspan="2" align="center">
< input type="submit" name="submit" value="Hit me!">
< /td>
< /tr>
< /table>
< /form>
< /body>
< /html>
< ?
}
else
{
// 如果$submit 確實存在了,表單已經被提交了
// 所以使用switch()函數來處理
// 這裡的決定變量是用戶選擇的日期
switch ($day)
{
// 第一種情況
case "Monday":
$fortune = "當能找到使每件事做的復雜精彩的方法的時候,不要使它簡單有效";
break;
// 第一種情況
case "Tuesday":
$fortune = "生活是游戲的橋梁?-你一定施展某種巧計了。";
break;
case "Wednesday":
$fortune = "什麼能使頭腦清醒的人生活在這個世界上永不發瘋?";
break;
case "Thursday":
$fortune = "不要瘋狂,要有趣";
break;
case "Friday":
$fortune = "僅僅跟著時代走,順著風氣行,當你得到提升時你會發現類型是個魔鬼。";
break;
// 如果以上條件都不符合...
default:
$fortune = "很抱歉,周末關門";
break;
}
?>
< html>
< head>
< basefont face="Arial">
< /head>
< body>
Here is your fortune for < ? echo $day; ?>:
< br>
< b>< ? echo $fortune; ?>< /b>
< /body>
< /html>
< ?
}
?>
--------------------------------------------------------------------------------
正如你所看到的,腳本首先測試 $submit變量是否存在,如果沒找到,它將認為表單沒有提交並且顯示最初的日期選擇列表。
由於< FORM>標簽的 ACTION屬性設為同一個 PHP腳本,一旦表單被提交,同一個腳本將被呼叫來處理表單的輸入。然而,被呼叫後的這次$submit變量將已經存在了,所以將不再顯示最初的頁面,反而顯示具有幸運甜餅的頁面了。
注意為了使這些能正常工作,你的
--------------------------------------------------------------------------------
< input type="submit">
--------------------------------------------------------------------------------
必須有一個賦予"submit"值的NAME屬性。
--------------------------------------------------------------------------------
< input type="submit" name="submit">
--------------------------------------------------------------------------------