在同一窗体中使用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 基础教程(三)
Oct 09 PHP
php基础知识:函数基础知识
Dec 13 PHP
php is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
Views rows style模板重写代码
May 16 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
64位windows系统下安装Memcache缓存
Dec 06 PHP
php导出csv文件,可导出前导0实例代码
Nov 16 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 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
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
php数组删除元素示例
2014/03/21 PHP
php出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
react build 后打包发布总结
2018/08/24 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
python学生管理系统代码实现
2020/04/05 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
python3判断url链接是否为404的方法
2018/08/10 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
python matlab库简单用法讲解
2020/12/31 Python
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
护士节策划方案
2014/05/19 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS