在同一窗体中使用PHP来处理多个提交任务


Posted in PHP onOctober 09, 2006

在PHP中的处理窗体数据比其它网页程序语言更简单——如果你使用这种语言一段时间后,你会发现这是一个不可争辩的事实。这种操作的简易性使它可以容易地处理更为复杂的窗体事件,包括今天讨论的主题,即在同一个窗体中通过多个按钮来处理不同的任务。

为什么使用多个提交任务?

在我回答这个问题之前,先让我回答一个很显然的问题:既然许多窗体更适合单一的提交按钮,为什么有时人们需要的是两个(或者是更多)的提交按钮?

对这一问题最好的解释方法是用我最近开发项目中的一个实例来说明。在这一项目中,我的任务是给一个图书馆建立一个详细目录查询系统。书籍题目被储存在数据库中,而管理员将可以使用一个基于浏览器功能的界面来查看其中任何一本书的记录,然后对这一记录上选择执行四种操作之一:成员还书登记,成员借书登记,书本丢失记录以及书本销售记录。

以上所有任务都要通过一个独立窗体来处理,这样就需要相应的按钮来响应这些任务。传入到窗体的数据将以不同的方式处理,这取决于被点击的按钮(借书/还书和成员记录相互关联;丢失/销售记录改变详细目录表)。由于一个窗体只能处理一个唯一的任务,但是相同的PHP脚本可以根据被点击的按钮和执行合适的代码段来处理以上四种任务。因此就需要处理多个提交任务按钮的单一窗体,以及实现不同按钮的自动响应的窗体处理代码段。

我首先列举一个简单例子:一个提交按扭的窗体。这样能够让你清楚地理解基本概念,并且为将要讲述的复杂范例打下铺垫。这里是一个窗体:

<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>

以下的是调用提交任务的processor.php脚本:

<?php

// check for submission
// retrieve value from posted data
if ($_POST['submit'])
{
    echo "You entered the number " . $_POST['number']; }

?>

当一个窗体被提交给PHP脚本时,根据使用的提交方法(本文我假设为POST),PHP自动建立一个特定的$_POST或者$_GET数组。键入到窗体输入域内的数值会自动转化成数组中的关键数据,并可以使用常规数据符号来访问这些数据。 

特别值得注意的是,如何在以上脚本中处理提交任务的按扭。当窗体被提交时,提交按钮根据自己实际的“name”转变成$_POST中的一个元素。添加以下一行代码就很清楚了:

print_r($_POST);

为了了解以上PHP脚本,你可以查看数组的内部结构,并可以清楚地看到不同窗体控件之间的相互联系。

PHP 相关文章推荐
PHP中文汉字验证码
Apr 08 PHP
php header Content-Type类型小结
Jul 03 PHP
php数字游戏 计算24算法
Jun 10 PHP
Php中文件下载功能实现超详细流程分析
Jun 13 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
php正则表达式使用的详细介绍
Apr 27 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
Yii2 rbac权限控制操作步骤实例教程
Apr 29 PHP
php使用file函数、fseek函数读取大文件效率对比分析
Nov 04 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 PHP
php提供实现反射的方法和实例代码
Sep 17 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 PHP
使用MaxMind 根据IP地址对访问者定位
Oct 09 #PHP
Zend公司全球首推PHP认证
Oct 09 #PHP
真正面向对象编程:PHP5.01发布
Oct 09 #PHP
PHP中实现图片的锐化
Oct 09 #PHP
在Zeus Web Server中安装PHP语言支持
Oct 09 #PHP
通过对php一些服务器端特性的配置加强php的安全
Oct 09 #PHP
一个阿拉伯数字转中文数字的函数
Oct 09 #PHP
You might like
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
浅谈javascript 面向对象编程
2009/10/28 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
ant design实现圈选功能
2019/12/17 Javascript
Python获取脚本所在目录的正确方法
2014/04/15 Python
Python的装饰器用法学习笔记
2016/06/24 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
如何利用Python 进行边缘检测
2020/10/14 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
幼儿园大班毕业感言
2014/02/06 职场文书
作弊检讨书
2015/01/27 职场文书
Python中re模块的元字符使用小结
2022/04/07 Python