在同一窗体中使用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在Web开发领域的优势
Oct 09 PHP
实现php加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
php URL编码解码函数代码
Mar 10 PHP
PHP5.5在windows安装使用memcached服务端的方法
Apr 16 PHP
php修改指定文件后缀的方法
Sep 11 PHP
php通过array_merge()函数合并两个数组的方法
Mar 18 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
Sep 19 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
PHP多进程编程实例详解
Jul 19 PHP
PHP bin2hex()函数基础实例讲解
Feb 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
PHP 调试工具Debug Tools
2011/04/30 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
浅谈PHP进程管理
2019/03/08 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
javascript函数库-集合框架
2007/04/27 Javascript
js 覆盖和重载 函数
2009/09/25 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
使用axios请求接口,几种content-type的区别详解
2019/10/29 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
Numpy之reshape()使用详解
2019/12/26 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
天游软件面试
2013/11/23 面试题
秋季开学典礼主持词
2014/03/19 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
关于倡议书的范文
2015/04/29 职场文书
2015中学教学工作总结
2015/07/22 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS