在PHP中de处理窗体数据比其它网页程序语言更简单——如果您使用这种语言一段时间后,您会发现这是一个不可争辩de事实.这种操作de简易性使它可以容易地处理更为复杂de窗体事件,包括今天讨论de主题,即在同一个窗体中通过多个按钮来处理不同de任务.
为什么使用多个提交任务?
在我回答这个问题之前,先让我回答一个很显然de问题:既然许多窗体更适合单一de提交按钮,为什么有时人们需要de是两个(或者是更多)de提交按钮?
对这一问题最好de解释方法是用我最近开发项目中de一个实例来说明.在这一项目中,我de任务是给一个图书馆建立一个详细目录查询系统.书籍题目被储存在数据库中,而管理员将可以使用一个基于浏览器功能de界面来查看其中任何一本书de记录,然后对这一记录上选择执行四种操作之一:成员还书登记,成员借书登记,书本丢失记录以及书本销售记录.
以上所有任务都要通过一个独立窗体来处理,这样就需要相应de按钮来响应这些任务.传入到窗体de数据将以不同de方式处理,这取决于被点击de按钮(借书/还书和成员记录相互关联;丢失/销售记录改变详细目录表).由于一个窗体只能处理一个唯一de任务,但是相同dePHP脚本可以根据被点击de按钮和执行合适de相关代码段来处理以上四种任务.因此就需要处理多个提交任务按钮de单一窗体,以及实现不同按钮de自动响应de窗体处理相关代码段.
我首先列举一个简单例子:一个提交按扭de窗体.这样能够让您清楚地理解基本概念,并且为将要讲述de复杂例子打下铺垫.这里是一个窗体:
<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>
以下de是调用提交任务deprocessor.php脚本:
<?php
// check for submission
// retrieve value from posted data
if ($_POST['submit'])
{
echo “You entered the number ” . $_POST['number']; }
?>
当一个窗体被提交给PHP脚本时,根据使用de提交方法(本文我假设为POST),PHP自动建立一个特定de$_POST或者$_GET数组.键入到窗体输入域内de数值会自动转化成数组中de关键数据,并可以使用常规数据符号来访问这些数据.
特别值得注意de是,如何在以上脚本中处理提交任务de按扭.当窗体被提交时,提交按钮根据自己实际de“name”转变成$_POST中de一个元素.添加以下一行相关代码就很清楚了:
print_r($_POST);
为了了解以上PHP脚本,您可以查看数组de内部结构,并可以清楚地看到不同窗体控件之间de相互联系.