日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

學(xué)習(xí)用php創(chuàng)建多頁表單

學(xué)習(xí)用php創(chuàng)建多頁表單

更新時(shí)間:2022-05-13 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

當(dāng)然,到這里并未結(jié)束。畢竟,如果可以在一個(gè)頁面上建立多個(gè)表單,為何不能建立跨多頁面的表單呢?

不幸的是,用 HTTP從一頁面?zhèn)魉蛿?shù)據(jù)到另一頁面并不輕松。因?yàn)樵?HTTP協(xié)議中沒有內(nèi)建機(jī)制以定義系列頁面的概念。不過,僅需通過一些靈巧的技巧,以及PHP 某些有用的函數(shù),我們就可以不用花太多力氣而突破此限制。在此章節(jié)中,關(guān)鍵思想在于把上一頁面獲取的輸入存到下一頁面表單的隱含變量中。當(dāng)我們在屏幕不同頁面切換時(shí),代碼也在頁面間傳遞信息,每一表單都含有上一個(gè)表單的數(shù)據(jù)。這個(gè)方法似乎有點(diǎn)笨拙,不過就目前情況而言是最為簡便的方法——且無需使用數(shù)據(jù)庫或cookies。

意料之中的是我們將擴(kuò)展對變量$state的使用以適應(yīng)此特性。這正是為什么我們過去學(xué)習(xí)了關(guān)于此技巧的內(nèi)容,而沒有打算使用更為簡單的方式處理單一頁面中的多個(gè)表單。

為了方便起見,我們將重復(fù)使用先前的表單范例。但這次我們將將其拆分為兩個(gè)頁面,而非把有關(guān)乳酪的重要問題跟用戶名稱放在同一頁面之上。

由此會(huì)得到三個(gè)函數(shù)而非兩個(gè)。此外,對函數(shù)略微更名以反映其內(nèi)容上的改變。display_form() 現(xiàn)已改名為display_name()。

<?php

function display_name() {

global $PHP_SELF;

?>

<FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET>

Name: <INPUT TYPE=TEXT NAME="name"><BR>

<INPUT TYPE=HIDDEN NAME="stage" VALUE="cheese">

<INPUT TYPE=SUBMIT VALUE="Thanks!">

</FORM>

<?php

}

?>


與先前所介紹的函數(shù)相同,但我們先解決下一問題,并把下一stage的名稱改為 cheese以更明確地告之用戶下一步要做什么。



接下來是display_cheese()。

<?php

function display_cheese() {

global $PHP_SELF;

global $name;

?>

<FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET>

Favorite Cheese: <INPUT TYPE=RADIO NAME="cheese" VALUE="brie">Very soft French Brie

<INPUT TYPE=RADIO NAME="cheese" VALUE="cheddar">Farmhouse English Cheddar

<INPUT TYPE=RADIO NAME="cheese" VALUE="mozzarella">Italian Buffalo Mozzarella

Favorite Times to Eat Cheese: <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="m">Morning

<INPUT TYPE=CHECKBOX NAME="times[]" VALUE="n">Noon

<INPUT TYPE=CHECKBOX NAME="times[]" VALUE="d">Dinner

<INPUT TYPE=CHECKBOX NAME="times[]" VALUE="l">Late night

<INPUT TYPE=HIDDEN NAME="name" VALUE="<?php echo htmlspecialchars($name); ?>">

<INPUT TYPE=HIDDEN NAME="stage" VALUE="results">

<INPUT TYPE=SUBMIT VALUE="Thanks!">

</FORM>

<?php

}

?>

以上的代碼看起來應(yīng)該非常熟悉。除在輸出隱藏的stage元素前先輸出上一部分?jǐn)?shù)據(jù)中的 $name變量名及值之外,我們沒有做任何意料之外的修改。我們并未直接輸出變量值,而是通過一個(gè)名為htmlspecialchars()的PHP函數(shù)。在HTM中,有以下四個(gè)字符除被作為標(biāo)記(markup)使用外,在其他地方不應(yīng)被使用的:“<”、“>”、“"”、以及“&”。因此,為了確保不使瀏覽器造成混亂,我們通過htmlspecialchars()函數(shù)使用$name變量。由此,某個(gè)人的名字原為"Bret & Jeff"就會(huì)成為"Brett & Jeff" 了。

現(xiàn)在,當(dāng)提交此新表單時(shí),不會(huì)漏失任何信息。

以上技巧的作用是我們不必更改原process_form() 函數(shù)任何部分。事實(shí)上,我們還會(huì)保持函數(shù)名稱不變。僅需對頁面顯示邏輯加上新的一行。

<?php

if (empty($stage)) { display_name(); }

elseif ($stage == 'cheese') { display_cheese(); }

else { process_form(); }

?>

看到了嗎?我們只需在先前的兩個(gè)聲明中加入elseif。這正是使用變量$stage的巧妙之處。如果我們要再添加幾個(gè)頁面,只需寫一個(gè)新函數(shù)以顯示所要的內(nèi)容,并當(dāng)其顯示時(shí)加入一行代碼對其進(jìn)行控制即可。


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 91久久香蕉| 亚洲伊人久久大香线蕉啊 | 操他射他影院 | 日本一区二区三区有限公司 | 四虎院影永久在线观看 | 国产产一区二区三区久久毛片国语 | 成人免费久久精品国产片久久影院 | 欧美性狂丰满性猛交 | 久久资源在线 | wwww在线| 国产欧美久久久精品影院 | 欧美人成毛片在线播放 | 免费看欧美日韩一区二区三区 | 亚洲欧美日韩国产精品 | 国产一级内谢a级高清毛片 国产一级片毛片 | 午夜视频在线观看区二区 | 午夜在线视频观看版 | 亚洲精品视频免费 | 日韩中文字幕精品视频在线 | 国产高清精品自在久久 | 中文字幕天天躁日日躁狠狠 | 在线观看视频一区二区三区 | 在线欧美国产 | 亚洲欧美综合久久 | 伊人激情久久综合中文字幕 | 手机在线看a | 国产91丝袜在线播放动漫 | 国产成人天天5g影院 | 国产99视频精品免费观看9e | 欧美巨大精品欧美一区二区 | 好男人官网在线播放 | 韩国免又爽又刺激激情视频 | 日韩视频久久 | 成人区精品一区二区不卡亚洲 | 91综合国产| 国产精品久久久久久久久鸭 | 亚洲欧洲综合 | 在线中文| 最近最新中文字幕在线第一页 | 热99这里有精品综合久久 | 性xxxxx|