PHP4实际应用经验篇(8)

  作者:孙运动

  你可能已经注意到,到目前为止,在我们给你的所有例子中,我们都是给你两个页面-一个单纯的具有表单的HTML页面,和另一个用来处理表单输入并产生相应输出的PHP脚本。然而,PHP提供了一种把那两个页面通过 $submit 变量结合在一起的文雅的方法

  你已经知道,一旦一个表单提交给PHP脚本,所有的表单变量就变成了的PHP变量。现在,除了用户定义的变量外,在你每次点击表单的“提交(SUBMIT )”按扭的同时,也就创建了一个名为 $submit的变量。因此,通过测试该变量是否存在,聪明的程序员可以只使用一个页面来既初始化表单又产生提交后的输出。

  让我们给你示范一下-我们用一个页面来实现上面那个幸运甜饼例子,包括最初的选择日期页面和后面的幸运甜饼页面。我们假设新的PHP文件也叫"cookie.php"

  --------------------------------------------------------------------------------

  <  ?

  if (!$submit)

  {

  // 如果$submit不存在, 这暗示表单还没有提交

  // 所以显示第一个页面

  ?>

  < html>

  < head>

  < style type="text/css">

  td {font-family: Arial;}

  < /style>

  < /head>

  < body>

  < font face="Arial" size="+2">

  The Amazing Fortune Cookie Generator

  < /font>

  < form method="GET" action="cookie.php">

  < table cellspacing="5" cellpadding="5" border="0">

  < tr>

  < td align="center">

  Pick a day

  < /td>

  < td align="right">

  < select name="day">

  < option value="Monday">Monday

  < option value="Tuesday">Tuesday

  < option value="Wednesday">Wednesday

  < option value="Thursday">Thursday

  < option value="Friday">Friday

  < option value="Saturday">Saturday

  < option value="Sunday">Sunday

  < /select>

  < /td>

  < /tr>

  < tr>

  < tr>

  < td colspan="2" align="center">

  < input type="submit" name="submit" value="Hit me!">

  < /td>

  < /tr>

  < /table>

  < /form>

  < /body>

  < /html>

  < ?

  }

  else

  {

  // 如果$submit 确实存在了,表单已经被提交了

  // 所以使用switch()函数来处理

  // 这里的决定变量是用户选择的日期

  switch ($day)

  {

  // 第一种情况

  case "Monday":

  $fortune = "当能找到使每件事做的复杂精彩的方法的时候,不要使它简单有效";

  break;

  // 第一种情况

  case "Tuesday":

  $fortune = "生活是游戏的桥梁?-你一定施展某种巧计了。";

  break;

  case "Wednesday":

  $fortune = "什么能使头脑清醒的人生活在这个世界上永不发疯?";

  break;

  case "Thursday":

  $fortune = "不要疯狂,要有趣";

  break;

  case "Friday":

  $fortune = "仅仅跟着时代走,顺着风气行,当你得到提升时你会发现类型是个魔鬼。";

  break;

  // 如果以上条件都不符合...

  default:

  $fortune = "很抱歉,周末关门";

  break;

  }

  ?>

  < html>

  < head>

  < basefont face="Arial">

  < /head>

  < body>

  Here is your fortune for < ? echo $day; ?>:

  < br>

  < b>< ? echo $fortune; ?>< /b>

  < /body>

  < /html>

  < ?

  }

  ?>

  --------------------------------------------------------------------------------

  正如你所看到的,脚本首先测试 $submit变量是否存在,如果没找到,它将认为表单没有提交并且显示最初的日期选择列表。

   由于< FORM>标签的 ACTION属性设为同一个 PHP脚本,一旦表单被提交,同一个脚本将被呼叫来处理表单的输入。然而,被呼叫后的这次$submit变量将已经存在了,所以将不再显示最初的页面,反而显示具有幸运甜饼的页面了。

   注意为了使这些能正常工作,你的

  --------------------------------------------------------------------------------

  < input type="submit">

  --------------------------------------------------------------------------------

  必须有一个赋予"submit"值的NAME属性。

  --------------------------------------------------------------------------------

  < input type="submit" name="submit">

  --------------------------------------------------------------------------------