在同一窗体中使用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下实现一个阿拉伯数字转中文数字的函数
Jul 10 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
设置php页面编码的两种方法示例介绍
Mar 03 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
纯PHP代码实现支付宝批量付款
Dec 24 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
Dec 27 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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
PHP中常用的转义函数
2014/02/28 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
在视频前插入广告
2006/11/20 Javascript
JavaScript类和继承 prototype属性
2010/09/03 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
Django框架中的对象列表视图使用示例
2015/07/21 Python
Python对象转JSON字符串的方法
2016/04/27 Python
python中私有函数调用方法解密
2016/04/29 Python
python+Django+apache的配置方法详解
2016/06/01 Python
python retrying模块的使用方法详解
2019/09/25 Python
python 求定积分和不定积分示例
2019/11/20 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
什么是会话Bean
2015/05/14 面试题
大学生求职自我评价
2014/01/16 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
探亲假请假条
2014/04/11 职场文书
青奥会口号
2014/06/12 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS