在同一窗体中使用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 相关文章推荐
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 PHP
PHP两种去掉数组重复值的方法比较
Jun 19 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
Jun 19 PHP
php上传图片之时间戳命名(保存路径)
Aug 15 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
Linux php 中文乱码的快速解决方法
May 13 PHP
php版微信自动登录并获取昵称的方法
Sep 23 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
利用PHP获取汉字首字母并且分组排序详解
Oct 22 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 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.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
php网页版聊天软件实现代码
2016/08/12 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
js随机生成一个验证码
2017/06/01 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
python基于queue和threading实现多线程下载实例
2014/10/08 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
python简单贪吃蛇开发
2019/01/28 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
军训 自我鉴定
2014/02/03 职场文书
小学生新年寄语
2014/04/03 职场文书
大学三年计划书范文
2014/04/30 职场文书
会计求职信怎么写
2015/03/20 职场文书
python数字图像处理之图像的批量处理
2022/06/28 Python