在同一窗体中使用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版
Oct 09 PHP
php遍历目录viewDir函数
Dec 15 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
php中解析带中文字符的url函数分享
Jan 20 PHP
php实现递归与无限分类的方法
Feb 16 PHP
php上传大文件失败的原因及应对策略
Oct 20 PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 PHP
PHP封装cURL工具类与应用示例
Jul 01 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
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
第六节 访问属性和方法 [6]
2006/10/09 PHP
用PHP实现ODBC数据分页显示一例
2006/10/09 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
php stripslashes和addslashes的区别
2014/02/03 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
jquery 获取json数据实现代码
2009/04/27 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
python判断字符串是否纯数字的方法
2014/11/19 Python
速记Python布尔值
2017/11/09 Python
解读! Python在人工智能中的作用
2017/11/14 Python
python3对接mysql数据库实例详解
2019/04/30 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
软件测试面试题
2015/10/21 面试题
物流专业大学生求职信范文
2013/10/28 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
运动会拉拉队口号
2014/06/09 职场文书
西湖英语导游词
2015/02/06 职场文书
校本研修个人总结
2015/02/28 职场文书
离婚案件上诉状
2015/05/23 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书