PHP-计算表单提交的数据
簡(jiǎn)書(shū)? ? :?https://www.jianshu.com/p/5a27a9706a5d
目? ?錄
1?實(shí)踐目的與任務(wù)
2?使用的工具、環(huán)境配置、知識(shí)點(diǎn)等
3?實(shí)踐內(nèi)容及要求
(1)配置phpStudy,測(cè)試Web服務(wù)器
(2)在Web服務(wù)器下編寫(xiě)包含form標(biāo)簽的完整網(wǎng)頁(yè)
(3)在Web服務(wù)器下編寫(xiě)文件calculate.php
4?需求分析和功能描述
4.1?數(shù)據(jù)結(jié)構(gòu)表示與存儲(chǔ)需求分析
4.2?操作與功能分析
5?系統(tǒng)總體設(shè)計(jì)
5.1? 輸入與流程順序
5.2? 系統(tǒng)功能模塊設(shè)計(jì)
5.3? 數(shù)據(jù)結(jié)構(gòu)和流程設(shè)計(jì)
6?詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)過(guò)程
6.1? 學(xué)生信息等結(jié)構(gòu)設(shè)計(jì)與描述
6.2?主要函數(shù)設(shè)計(jì)
7?功能展示
8?實(shí)踐收獲
9? 附錄
9.1?關(guān)鍵性代碼
1?實(shí)踐目的與任務(wù)
(1)PHP編輯編譯環(huán)境安裝與配置;
(2)PHP變量定義、語(yǔ)法、語(yǔ)句的使用;
(3)PHP頁(yè)面的編寫(xiě);
(4)PHP頁(yè)面提交數(shù)據(jù)的采集、處理;
2?使用的工具、環(huán)境配置、知識(shí)點(diǎn)等
(1)Eclipse for PHP等PHP編輯工具、phpStudy等網(wǎng)頁(yè)運(yùn)行集成環(huán)境;
(2)安裝以上軟件的計(jì)算機(jī);
3?實(shí)踐內(nèi)容及要求
(1)配置phpStudy,測(cè)試Web服務(wù)器
配置phpStudy測(cè)試Web服務(wù)器正常運(yùn)行,配置Eclipse for PHP編輯環(huán)境,
使用phpStudy環(huán)境在Eclipse for PHP上運(yùn)行調(diào)試PHP代碼。調(diào)試配置參考如下:
[XDebug]
zend_extension="C:\phpStudy\PHPTutorial\php\php-5.4.45\ext\php_xdebug.dll"
;函數(shù)調(diào)用跟蹤信息輸出文件目錄,默認(rèn)值為/tmp
xdebug.trace_output_dir="C:\phpStudy\PHPTutorial\tmp\xdebug"
xdebug.auto_trace = On
;性能分析文件的存放位置,默認(rèn)值為/tmp
xdebug.profiler_output_dir="C:\phpStudy\PHPTutorial\tmp\xdebug"
xdebug.profiler_enable=On
;是否允許Xdebug跟蹤函數(shù)參數(shù),默認(rèn)值為0
xdebug.collect_params = On
;是否允許Xdebug跟蹤函數(shù)返回值,默認(rèn)值為
xdebug.collect_return = On
;是否收集指定作用域中的變量信息,利用xdebug_get_declared_vars()函數(shù),那么就需要開(kāi)啟該設(shè)置了
;xdebug.collect_vars = On
;在異常出現(xiàn)時(shí)甚至是該異常被捕捉也會(huì)顯示其堆棧跟蹤信息
xdebug.show_exception_trace = On
;遠(yuǎn)程調(diào)試設(shè)置
xdebug.remote_enable = On
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
;任何運(yùn)行情況下都開(kāi)啟調(diào)試
xdebug.remote_autostart = Off
(2)在Web服務(wù)器下編寫(xiě)包含form標(biāo)簽的完整網(wǎng)頁(yè)
在Web服務(wù)器下編寫(xiě)包含如下form標(biāo)簽的完整網(wǎng)頁(yè)input.html,輸入多個(gè)十進(jìn)制正整數(shù):
<form action="calculate.php" method="post" enctype="multipart/form-data">
輸入操作數(shù):<br/>
數(shù)1:<input type="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br/>
數(shù)2:<input type="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br/>
數(shù)3:<input type="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br/>
數(shù)4:<input type="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br/>
數(shù)5:<input type="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br/>
提交按鈕:
<input type="submit" name="submit1" value="普通提交按鈕" />
<br/>
圖片按鈕:
<input type="image" name="submit2" src="http://www.google.cn/intl/zh-CN/images/logo.gif" height="40" />
<br/>
重置按鈕:
<input type="reset" name="cancel" value="重新填寫(xiě)" />
</form>
(3)在Web服務(wù)器下編寫(xiě)文件calculate.php
在Web服務(wù)器下編寫(xiě)文件calculate.php,在其中能夠獲取瀏覽器端訪(fǎng)問(wèn)input.html頁(yè)面時(shí)在form標(biāo)簽中提交的信息,
上傳文件,并正確返回瀏覽器以下結(jié)果:數(shù)1的逆序,數(shù)2和數(shù)3的最小公倍數(shù),數(shù)4的二進(jìn)制,數(shù)5的十六進(jìn)制;
4?需求分析和功能描述
4.1?數(shù)據(jù)結(jié)構(gòu)表示與存儲(chǔ)需求分析
用“指針”與“數(shù)組”來(lái)存儲(chǔ)用戶(hù)在form表單中提交的數(shù)據(jù)信息。
在input.html文件中,用數(shù)組來(lái)存儲(chǔ)用戶(hù)輸入的5個(gè)數(shù)字信息,然后提交form表單后,用“指針”來(lái)存儲(chǔ)數(shù)據(jù)信息。
用foreach(array as $value)來(lái)遍歷數(shù)組比較方便,其功能如下:
foreach(array as $value)
使用該方法循環(huán)遍歷給定的數(shù)組array,每次循環(huán)中,“當(dāng)前指針”所指元素的“值”賦給變量$value,然后移動(dòng)數(shù)組array“當(dāng)前指針”,使“當(dāng)前指針”指向下一個(gè)元素,周而復(fù)始,直至數(shù)組array最后一個(gè)元素,此時(shí)“當(dāng)前指針”為空。
4.2?操作與功能分析
編寫(xiě)好input.html文件后,需要將用戶(hù)輸入的信息“傳輸”至calculate.php文件中,然后在calculate.php文件編寫(xiě)相關(guān)的代碼,對(duì)數(shù)1、數(shù)2、數(shù)3、數(shù)4、數(shù)5進(jìn)行操作。
5?系統(tǒng)總體設(shè)計(jì)
5.1? 輸入與流程順序
用form表單及相關(guān)標(biāo)簽接收用戶(hù)輸入的信息。如,<input />標(biāo)簽,通過(guò)設(shè)置<input />標(biāo)簽中的name值,將用戶(hù)輸入的數(shù)據(jù)組成一個(gè)數(shù)組,然后統(tǒng)一提交至calculate.php文件中。
5.2? 系統(tǒng)功能模塊設(shè)計(jì)
系統(tǒng)功能有:處理用戶(hù)輸入的數(shù)據(jù),如:返回?cái)?shù)字1的逆序數(shù)、求數(shù)字2與數(shù)字3的最小公倍數(shù)、將數(shù)字4轉(zhuǎn)化為二進(jìn)制數(shù)字輸出、將數(shù)字5轉(zhuǎn)化為十六進(jìn)制數(shù)字輸出。重置表單信息、點(diǎn)擊圖片按鈕提交表單。
表單按鈕部分較為簡(jiǎn)單,直接設(shè)置<input />標(biāo)簽的相關(guān)屬性就可以了。
數(shù)據(jù)處理部分較為困難,需要新建數(shù)組,然后逐個(gè)對(duì)數(shù)據(jù)進(jìn)行處理。
5.3? 數(shù)據(jù)結(jié)構(gòu)和流程設(shè)計(jì)
在input.html文件中,用“數(shù)組”存儲(chǔ)用戶(hù)輸入的數(shù)據(jù);用戶(hù)提交表單后,在calculate.php文件中用“鏈表”來(lái)存儲(chǔ)數(shù)據(jù)。創(chuàng)建新數(shù)組,用來(lái)存儲(chǔ)用戶(hù)輸入的數(shù)據(jù),然后遍歷新建數(shù)組,對(duì)數(shù)據(jù)進(jìn)行處理。
6?詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)過(guò)程
(具體功能實(shí)現(xiàn)等,可自由添加其它內(nèi)容、部分源代碼等)
6.1? 學(xué)生信息等結(jié)構(gòu)設(shè)計(jì)與描述
(寫(xiě)出你所設(shè)計(jì)的數(shù)組或鏈表等其他形式的變量)
foreach ()函數(shù)???循環(huán)遍歷給定的數(shù)組
implode() 函數(shù)??把數(shù)組元素組合為字符串。
array_reverse()函數(shù)以相反的元素順序返回?cái)?shù)組。
str_split()函數(shù)???把字符串分割到數(shù)組中。
max()函數(shù)??????返回一個(gè)數(shù)組中的最大值,或者幾個(gè)指定值中的最大值。
decbin()函數(shù)????把十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。
dechex() 函數(shù)??把十進(jìn)制轉(zhuǎn)換為十六進(jìn)制。
6.2?主要函數(shù)設(shè)計(jì)
(列出你所設(shè)計(jì)的函數(shù)聲明語(yǔ)句,每個(gè)聲明后需有注釋,表明該函數(shù)功能)
foreach ()函數(shù)???循環(huán)遍歷給定的數(shù)組
implode() 函數(shù)??把數(shù)組元素組合為字符串。
array_reverse()函數(shù)以相反的元素順序返回?cái)?shù)組。
str_split()函數(shù)???把字符串分割到數(shù)組中。
max()函數(shù)??????返回一個(gè)數(shù)組中的最大值,或者幾個(gè)指定值中的最大值。
decbin()函數(shù)????把十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。
dechex() 函數(shù)??把十進(jìn)制轉(zhuǎn)換為十六進(jìn)制。
7?功能展示
(功能展示圖,說(shuō)明等)
8?實(shí)踐收獲
此次實(shí)驗(yàn),難度較大。在實(shí)驗(yàn)的過(guò)程中,收獲了很多知識(shí),解決了很多疑惑。在瀏覽器地址欄中輸入文件所在位置,就可以運(yùn)行此文件,感到PHP語(yǔ)言十分靈活。
在實(shí)驗(yàn)過(guò)程中,遇到的最大的困難就是:將form表單中的5個(gè)數(shù)據(jù)提交后,如何遍歷數(shù)組,使得程序人員可以逐個(gè)對(duì)數(shù)據(jù)進(jìn)行處理。困擾了我好長(zhǎng)時(shí)間。參考課本98頁(yè)對(duì)foreach語(yǔ)言結(jié)構(gòu)的講述以及127頁(yè)具體運(yùn)用foreach數(shù)據(jù)結(jié)構(gòu)的代碼,我還是沒(méi)有想到逐個(gè)遍歷數(shù)組的方法。在百度上搜尋了foreach語(yǔ)言結(jié)構(gòu)的相關(guān)知識(shí)后,我漸漸對(duì)foreach語(yǔ)言結(jié)構(gòu)有了更深的理解。foreach($_POST['operands']
as $a[]) {}語(yǔ)句,可以將數(shù)組中的數(shù)據(jù)元素逐個(gè)存放在一個(gè)新的數(shù)組中,非常容易遍歷數(shù)組、對(duì)數(shù)組中的各個(gè)數(shù)據(jù)進(jìn)行處理。
在實(shí)驗(yàn)中還有很多疑惑。比如,漢字亂碼。為什么我在PHP文件中加入了“header("Content-Type:
text/html;charset=utf-8");”語(yǔ)句,依舊無(wú)法完全解決亂碼問(wèn)題?在我編寫(xiě)的其它PHP文件中,加入“header("Content-Type:
text/html;charset=utf-8");”語(yǔ)句后,亂碼問(wèn)題得到了很好的解決。在百度上搜了很多篇文章,都沒(méi)有解決我的疑惑!我準(zhǔn)備問(wèn)問(wèn)老師或同學(xué)們。
我認(rèn)為我的程序還有很多可以改進(jìn)的地方。例如,在calculate.php文件中對(duì)數(shù)組進(jìn)行遍歷的操作。我認(rèn)為可以用for()循環(huán)對(duì)數(shù)組進(jìn)行遍歷。在for()循環(huán)語(yǔ)句中,加上限制條件,如:判斷當(dāng)前數(shù)字是數(shù)組的第幾個(gè)元素,根據(jù)元素所處序號(hào)選擇不同的操作方法對(duì)數(shù)據(jù)進(jìn)行處理。我認(rèn)為這樣會(huì)令程序更加靈活、更具可讀性。
此外,我認(rèn)為還可以在用戶(hù)輸入數(shù)據(jù)的時(shí)候,對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證。驗(yàn)證用戶(hù)所輸入的內(nèi)容是不是數(shù)字。這在一定程度上可以解決亂碼的問(wèn)題。
9? 附錄
9.1?關(guān)鍵性代碼
(可加部分關(guān)鍵性代碼,不超過(guò)3頁(yè);說(shuō)明等)
<!DOCTYPE html> <html><head><meta charset="utf-8"><title>頁(yè)面一:表單頁(yè)面</title> </head><body><form action="calculate.php" method="post" enctype="multipart/form-data">輸入操作數(shù):<br />數(shù)1:<input type="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br />數(shù)2:<input type="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br />數(shù)3:<input type="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br />數(shù)4:<input type="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br />數(shù)5:<input type="text" name="operands[]" value="輸入運(yùn)算數(shù)" /><br />上傳文件:<input type="file" name="file" /><br />提交按鈕:<input type="submit" name="submit1" value="普通提交按鈕" /><br />圖片按鈕:<input type="image" name="submit2" src="http://www.google.cn/intl/zh-CN/images/logo.gif" height="40" /><br />重置按鈕:<input type="reset" name="cancel" value="重新填寫(xiě)" /></form></body></html> <!-- (2)在Web服務(wù)器下編寫(xiě)包含 如下form標(biāo)簽的完整網(wǎng)頁(yè)input.html, 輸入多個(gè)十進(jìn)制正整數(shù)。 --> <?phpheader("Content-Type: text/html;charset=utf-8");echo "您的表單已成功提交!!!<br/>";echo "數(shù)1、數(shù)2、數(shù)3、數(shù)4、數(shù)5,分別為:<br/>";foreach ($_POST['operands'] as $s) {echo $s." 、 ";}foreach ($_POST['operands'] as $a[]) {}echo "<br/> <br/>數(shù)1的逆序數(shù) 為:<br/>";echo implode(array_reverse( str_split($a[0],1) ));echo "<br/> <br/>數(shù)2和數(shù)3的最小公倍數(shù) 為:<br/>";for ($i = max($a[1],$a[2]); $i > 0; $i++) {if( $i % $a[1] == 0 && $i % $a[2] == 0) {echo $i;break;}}echo "<br/> <br/>數(shù)4的二進(jìn)制 為:<br/>";echo decbin("$a[3]");echo "<br/> <br/>數(shù)5的十六進(jìn)制 為:<br/>";echo dechex("$a[4]"),"<br/>"; ?>🚀
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的PHP-计算表单提交的数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【CentOS Linux 7】实验5【
- 下一篇: 使用 PHP 创建自己的视频点播网站