在同一窗体中使用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+MYSQL 出现乱码的解决方法
Aug 08 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
基于thinkPHP实现的微信自定义分享功能示例
Sep 23 PHP
PHP文件上传操作实例详解
Sep 27 PHP
PHP实现的统计数据功能详解
Dec 06 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 PHP
PHP实现两种排课方式
Jun 26 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
利用js调用后台php进行数据处理原码
2006/10/09 PHP
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
jQuery参数列表集合
2011/04/06 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
Python实现发送email的几种常用方法
2014/08/18 Python
Python中常见的数据类型小结
2015/08/29 Python
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
python爬虫之自制英汉字典
2019/06/24 Python
python实现倒计时小工具
2019/07/29 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
办公室驾驶员岗位职责
2013/11/15 职场文书
计算机专业职业规划
2014/02/28 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
浅谈golang 中time.After释放的问题
2021/05/05 Golang