在同一窗体中使用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目录管理函数小结
Sep 10 PHP
php入门学习知识点四 PHP正则表达式基本应用
Jul 14 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
php中使用临时表查询数据的一个例子
Feb 03 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
Jun 25 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
php编程每天必学之表单验证
Mar 01 PHP
Yii2中关联查询简单用法示例
Aug 10 PHP
禁止直接访问php文件代码分享
May 05 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
Django 中 cookie的使用
2017/08/17 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
用jquery写的一个万年历(自写)
2014/01/20 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
javascript实现简易计算器
2017/02/01 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
Django接受前端数据的几种方法总结
2016/11/04 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
在python里面运用多继承方法详解
2019/07/01 Python
python实现车牌识别的示例代码
2019/08/05 Python
Python编程中类与类的关系详解
2019/08/08 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
JDK安装目录下有哪些内容
2014/08/25 面试题
自我鉴定三原则
2014/01/13 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
MySQL 使用索引扫描进行排序
2021/06/20 MySQL
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android