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


Posted in PHP onMay 08, 2008

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

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

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

以上所有任务都要通过一个独立窗体来处理,这样就需要相应的按钮来响应这些任务。传入到窗体的数据将以不同的方式处理,这取决于被点击的按钮(借书/还书和成员记录相互关联;丢失/销售记录改变详细目录表)。由于一个窗体只能处理一个唯一的任务,但是相同的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无法访问远程mysql的问题分析及解决
May 16 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
CI框架中zip类应用示例
Jun 17 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
php防止网站被刷新的方法汇总
Dec 01 PHP
浅谈php提交form表单
Jul 01 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
PHP如何读取由JavaScript设置的Cookie
Mar 22 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
php实现简单的守护进程创建、开启与关闭操作
Aug 13 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 PHP
用php+javascript实现二级级联菜单的制作
May 06 #PHP
轻松修复Discuz!数据库
May 03 #PHP
php xfocus防注入资料
Apr 27 #PHP
php SQL防注入代码集合
Apr 25 #PHP
php中文字母数字验证码实现代码
Apr 25 #PHP
Ajax PHP简单入门教程代码
Apr 25 #PHP
PHP开发框架总结收藏
Apr 24 #PHP
You might like
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
js正确获取元素样式详解
2009/08/07 Javascript
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
使用js画图之画切线
2015/01/12 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
一步步解析Python斗牛游戏的概率
2016/02/12 Python
python实现定时提取实时日志程序
2018/06/22 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python实现操作文件(文件夹)
2019/10/31 Python
Python 实现try重新执行
2019/12/21 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
夜不归宿检讨书
2014/02/25 职场文书
安全责任协议书
2014/04/21 职场文书
环保建议书500字
2014/05/14 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
管理人员岗位职责
2015/02/14 职场文书
家庭经济困难证明
2015/06/23 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书