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