明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

在同一窗體中使用PHP來(lái)處理多個(gè)提交任務(wù)

[摘要]在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è)很...

在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è)圖書(shū)館建立一個(gè)詳細(xì)目錄查詢(xún)系統(tǒng)。書(shū)籍題目被儲(chǔ)存在數(shù)據(jù)庫(kù)中,而管理員將可以使用一個(gè)基于瀏覽器功能的界面來(lái)查看其中任何一本書(shū)的記錄,然后對(duì)這一記錄上選擇執(zhí)行四種操作之一:成員還書(shū)登記,成員借書(shū)登記,書(shū)本丟失記錄以及書(shū)本銷(xiāo)售記錄。

以上所有任務(wù)都要通過(guò)一個(gè)獨(dú)立窗體來(lái)處理,這樣就需要相應(yīng)的按鈕來(lái)響應(yīng)這些任務(wù)。傳入到窗體的數(shù)據(jù)將以不同的方式處理,這取決于被點(diǎn)擊的按鈕(借書(shū)/還書(shū)和成員記錄相互關(guān)聯(lián);丟失/銷(xiāo)售記錄改變?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)系。