在同一窗体中使用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 相关文章推荐
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
一组PHP加密解密函数分享
Jun 05 PHP
Javascript与PHP验证用户输入URL地址是否正确
Oct 09 PHP
php之curl实现http与https请求的方法
Oct 21 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
PHP设计模式之工厂方法设计模式实例分析
Apr 25 PHP
laravel框架添加数据,显示数据,返回成功值的方法
Oct 11 PHP
PHP8.0新功能之Match表达式的使用
Jul 19 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
PHP中实现进程间通讯
2006/10/09 PHP
数字转英文
2006/12/06 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
vue实现购物车小案例
2019/09/27 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
浅谈Python中的私有变量
2018/02/28 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
python和go语言的区别是什么
2020/07/20 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
金鑫耀Java笔试题
2014/09/06 面试题
大学生职业生涯规划范文
2014/01/22 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
化验室岗位职责
2015/02/14 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL