在同一窗体中使用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(6) 面向对象
Feb 16 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
Jan 03 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 PHP
PHP页面跳转实现延时跳转的方法
Dec 10 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
Apr 26 PHP
php post json参数的传递和接收处理方法
May 31 PHP
PHP下载大文件失败并限制下载速度的实例代码
May 10 PHP
PHP常用函数之base64图片上传功能详解
Oct 21 PHP
PHP dirname功能及原理实例解析
Oct 28 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 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
php接口隔离原则实例分析
2019/11/11 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
EasyUI Combobox设置默认值 获取text的方法
2016/11/28 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
手机端转换rem适应
2017/04/01 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
vue实现购物车加减
2020/05/30 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
python中input()与raw_input()的区别分析
2016/02/27 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
Python 防止死锁的方法
2020/07/29 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
速比涛英国官网:Speedo英国
2019/07/15 全球购物
教师年终个人总结
2015/02/11 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL