在同一窗体中使用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 代码优化的42条建议 推荐
Sep 25 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
php中利用explode函数分割字符串到数组
Feb 08 PHP
php对数组排序代码分享
Feb 24 PHP
两种设置php载入页面时编码的方法
Jul 29 PHP
PHP+APACHE实现网址伪静态
Feb 22 PHP
win7系统配置php+Apache+mysql环境的方法
Aug 21 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
Dec 29 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
php简单计算权重的方法示例【适合抽奖类应用】
Jun 10 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
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
Javascript实现的分页函数
2006/12/22 Javascript
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
js实现右键菜单功能
2016/11/28 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2016/12/08 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
vue-prop父组件向子组件进行传值的方法
2018/03/01 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
pygame播放音乐的方法
2015/05/19 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
python turtle 绘制太极图的实例
2019/12/18 Python
python访问hdfs的操作
2020/06/06 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
一套中级Java程序员笔试题
2015/01/14 面试题
教师党性分析材料
2014/02/04 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014银行领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
技术股份合作协议书
2014/10/05 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
上课迟到检讨书
2015/05/06 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
初三语文教学反思
2016/03/03 职场文书