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

所属分类: 网络编程 / PHP编程 阅读数: 1903
收藏 0 赞 0 分享

在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 计算代码执行耗时的代码修正网上普遍错误

前几天测试 SQLite 插入大数据量的时候, 找了一些关于计算执行时间的代码, 发现网上普遍流传着这样一份代码
收藏 0 赞 0 分享

php中在PDO中使用事务(Transaction)

事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行
收藏 0 赞 0 分享

centos 5.6 升级php到5.3的方法

centos 5.6的库,更新比比5.5及时多了,居然已经有 php 5.3.3 了
收藏 0 赞 0 分享

rrmdir php中递归删除目录及目录下的文件

php自带的rmdir,只能删除空目录,这个rrmdir就可以递归删除目录及目录下的所有文件,不过使用起来要小心哦,不要把所有文件都删了
收藏 0 赞 0 分享

Views rows style模板重写代码

重写rows style模板,可以控制整个VIEWS的输出布局,就像VIEWS是个选择器,布局任你编排
收藏 0 赞 0 分享

PHP中break及continue两个流程控制指令区别分析

php中常用的for与foreach循环中,经常遇到条件判断或中止循环的情况。而处理方式主要用到break及continue两个流程控制指令,现在说明主要区别
收藏 0 赞 0 分享

SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享

问题:swfupload上传任何文件的mime类型均为application/octet-stream。
收藏 0 赞 0 分享

PHP session有效期session.gc_maxlifetime

PHP中的session有效期默认是1440秒(24分钟)【weiweiok 注:php5里默认的是180分】,也就是说,客户端超过24分钟没有刷新,当前session就会失效。很明显,这是不能满足需要的。
收藏 0 赞 0 分享

关于session在PHP5的配置文件中的详细设置参数说明

关于session在PHP5的配置文件中的详细设置参数说明,需要的朋友可以参考下。
收藏 0 赞 0 分享

PHP中的session永不过期的解决思路及实现方法分享

让PHP的session永不过期,你可能没有遇到这么郁闷的问题,但是我遇到过,很郁闷。
收藏 0 赞 0 分享
查看更多