在同一窗体中使用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 include的妙用,实现路径加密
Jul 29 PHP
php mssql 日期出现中文字符的解决方法
Mar 10 PHP
PHP 编写大型网站问题集
May 07 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
php中批量修改文件后缀名的函数代码
Oct 23 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
Jul 24 PHP
PHP遍历数组的三种方法及效率对比分析
Feb 12 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
php递归实现无限分类的方法
Jul 28 PHP
简单解析PHP程序的运行流程
Jun 23 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
在Laravel中实现使用AJAX动态刷新部分页面
Oct 15 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
消息持续发送的完整例子
2006/10/09 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
页面使用密码保护代码
2013/04/10 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
2016/07/07 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
js实现中文实时时钟
2020/01/15 Javascript
[01:35]辉夜杯战队访谈宣传片—iG.V
2015/12/25 DOTA
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
Pycharm安装python库的方法
2020/11/24 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
波兰补充商店:Muscle Power
2018/10/29 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
WSDL的操作类型主要有几种
2013/07/19 面试题
财经学院自荐信范文
2014/02/02 职场文书
揭牌仪式主持词
2014/03/19 职场文书
协议书样本
2014/04/23 职场文书
5s推行计划书
2014/05/06 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
JavaScript组合继承详解
2021/11/07 Javascript
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS