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,
输入多个十进制正整数。
-->
<?php
	header("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/>";
?>
发布了48 篇原创文章 · 获赞 111 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44949135/article/details/105529956