在同一窗体中使用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的输入输出流
Feb 14 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
PHP IE中下载附件问题解决方法
Jan 07 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
PHP截取发动短信内容的方法
Jul 04 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
Laravel5.4框架中视图共享数据的方法详解
Sep 05 PHP
关于PHP数组迭代器的使用方法实例
Nov 17 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 文件上传类代码
2011/08/06 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
kmock javascript 单元测试代码
2011/02/06 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
Bootstrap项目实战之首页内容介绍(全)
2016/04/25 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
vue引入jq插件的实例讲解
2017/09/12 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
Python sys.path详细介绍
2013/10/17 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
python3 flask实现文件上传功能
2020/03/20 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
简洁的英文求职信范文
2014/05/03 职场文书
空气的环保标语
2014/06/12 职场文书
文明城市标语
2014/06/16 职场文书
淘宝活动总结范文
2014/06/26 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电