在同一窗体中使用PHP来处理多个提交任务


Posted in PHP onMay 08, 2008

为什么使用多个提交任务?

在我回答这个问题之前,先让我回答一个很显然的问题:既然许多窗体更适合单一的提交按钮,为什么有时人们需要的是两个(或者是更多)的提交按钮?

对这一问题最好的解释方法是用我最近开发项目中的一个实例来说明。在这一项目中,我的任务是给一个图书馆建立一个详细目录查询系统。书籍题目被储存在数据库中,而管理员将可以使用一个基于浏览器功能的界面来查看其中任何一本书的记录,然后对这一记录上选择执行四种操作之一:成员还书登记,成员借书登记,书本丢失记录以及书本销售记录。

以上所有任务都要通过一个独立窗体来处理,这样就需要相应的按钮来响应这些任务。传入到窗体的数据将以不同的方式处理,这取决于被点击的按钮(借书/还书和成员记录相互关联;丢失/销售记录改变详细目录表)。由于一个窗体只能处理一个唯一的任务,但是相同的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
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
php的memcached客户端memcached
Jun 14 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
Dec 06 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
php将csv文件导入到mysql数据库的方法
Dec 24 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
Jun 13 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 PHP
用php+javascript实现二级级联菜单的制作
May 06 #PHP
轻松修复Discuz!数据库
May 03 #PHP
php xfocus防注入资料
Apr 27 #PHP
php SQL防注入代码集合
Apr 25 #PHP
php中文字母数字验证码实现代码
Apr 25 #PHP
Ajax PHP简单入门教程代码
Apr 25 #PHP
PHP开发框架总结收藏
Apr 24 #PHP
You might like
深入解析php模板技术原理【一】
2008/01/10 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
JS 实现导航栏悬停效果(续2)
2013/09/24 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
React中使用collections时key的重要性详解
2017/08/07 Javascript
Vue.js组件通信的几种姿势
2017/10/23 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
js 函数性能比较方法
2020/08/24 Javascript
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
python 下划线的不同用法
2020/10/24 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
竞聘书怎么写,如何写?
2014/03/31 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
小学生读书活动总结
2014/06/30 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers
mysql中关键词exists的用法实例详解
2022/06/10 MySQL
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js