|
在php中的處理窗體數(shù)據(jù)比其它網(wǎng)頁(yè)程序語(yǔ)言更簡(jiǎn)單――如果你使用這種語(yǔ)言一段時(shí)間后,你會(huì)發(fā)現(xiàn)這是一個(gè)不可爭(zhēng)辯的事實(shí)。這種操作的簡(jiǎn)易性使它可以容易地處理更為復(fù)雜的窗體事件,包括今天討論的主題,即在同一個(gè)窗體中通過(guò)多個(gè)按鈕來(lái)處理不同的任務(wù)。
為什么使用多個(gè)提交任務(wù)?
在我回答這個(gè)問(wèn)題之前,先讓我回答一個(gè)很顯然的問(wèn)題:既然許多窗體更適合單一的提交按鈕,為什么有時(shí)人們需要的是兩個(gè)(或者是更多)的提交按鈕?
對(duì)這一問(wèn)題最好的解釋方法是用我最近開(kāi)發(fā)項(xiàng)目中的一個(gè)實(shí)例來(lái)說(shuō)明。在這一項(xiàng)目中,我的任務(wù)是給一個(gè)圖書館建立一個(gè)詳細(xì)目錄查詢系統(tǒng)。書籍題目被儲(chǔ)存在數(shù)據(jù)庫(kù)中,而管理員將可以使用一個(gè)基于瀏覽器功能的界面來(lái)查看其中任何一本書的記錄,然后對(duì)這一記錄上選擇執(zhí)行四種操作之一:成員還書登記,成員借書登記,書本丟失記錄以及書本銷售記錄。
以上所有任務(wù)都要通過(guò)一個(gè)獨(dú)立窗體來(lái)處理,這樣就需要相應(yīng)的按鈕來(lái)響應(yīng)這些任務(wù)。傳入到窗體的數(shù)據(jù)將以不同的方式處理,這取決于被點(diǎn)擊的按鈕(借書/還書和成員記錄相互關(guān)聯(lián);丟失/銷售記錄改變?cè)敿?xì)目錄表)。由于一個(gè)窗體只能處理一個(gè)唯一的任務(wù),但是相同的php腳本可以根據(jù)被點(diǎn)擊的按鈕和執(zhí)行合適的代碼段來(lái)處理以上四種任務(wù)。因此就需要處理多個(gè)提交任務(wù)按鈕的單一窗體,以及實(shí)現(xiàn)不同按鈕的自動(dòng)響應(yīng)的窗體處理代碼段。
我首先列舉一個(gè)簡(jiǎn)單例子:一個(gè)提交按扭的窗體。這樣能夠讓你清楚地理解基本概念,并且為將要講述的復(fù)雜范例打下鋪墊。這里是一個(gè)窗體:
<html><head>Single-button form</head>
<body>
<form action="processor.php" method="post"> Enter a number: <input type="text" name="number" size="3"> <br>
<input type="submit" name="submit"> </form>
</body>
</html>
以下的是調(diào)用提交任務(wù)的processor.php腳本:
<?php
// check for submission
// retrieve value from posted data
if ($_POST['submit'])
{
echo "You entered the number " . $_POST['number']; }
?>
當(dāng)一個(gè)窗體被提交給php腳本時(shí),根據(jù)使用的提交方法(本文我假設(shè)為POST),php自動(dòng)建立一個(gè)特定的$_POST或者$_GET數(shù)組。鍵入到窗體輸入域內(nèi)的數(shù)值會(huì)自動(dòng)轉(zhuǎn)化成數(shù)組中的關(guān)鍵數(shù)據(jù),并可以使用常規(guī)數(shù)據(jù)符號(hào)來(lái)訪問(wèn)這些數(shù)據(jù)。
特別值得注意的是,如何在以上腳本中處理提交任務(wù)的按扭。當(dāng)窗體被提交時(shí),提交按鈕根據(jù)自己實(shí)際的“name”轉(zhuǎn)變成$_POST中的一個(gè)元素。添加以下一行代碼就很清楚了:
print_r($_POST);
為了了解以上php腳本,你可以查看數(shù)組的內(nèi)部結(jié)構(gòu),并可以清楚地看到不同窗體控件之間的相互聯(lián)系。
php技術(shù):在同一窗體中使用PHP來(lái)處理多個(gè)提交任務(wù),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。