Linux 版 (精华区)

发信人: fgr (乱舞势力), 信区: Linux
标  题: 第一个程序脚本
发信站: 紫 丁 香 (Thu Jan 20 19:40:00 2000) WWW-POST

我们刚刚学到了循环语句,下面我们将在一个更加实际一点的例子中看看如何运用它。但
是在这之前,您应该知道如何处理Web表格、查询参数串,以及表单的GET方法和POST方法
。不久之前我们刚刚有文章介绍这部分内容,您如果对这一部分还不太熟悉的话可以看看
那篇文章。 

现在,我们要处理查询参数串,正如您所知道的,有三种方法可以把参数内容写入到查询
参数串中。第一种是在表格中使用GET方法;第二种是在浏览器的地址栏中输入网址时直
接加上查询参数;第三种是把查询参数串嵌入到网页的超链接中,使得超链接的内容象下
面这样:<a href="http://my_machine/mypage.php3?id=1">。我们现在要用到最后这一
种方法。 

一开始,我们再来查询我们的数据库,列出员工姓名。看看下面的程序,其中大部分内容
我们都已经很熟悉了。 
<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
if ($myrow = mysql_fetch_array($result)) {
  do {
    printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", 
    $PATH_INFO, $myrow["id"], $myrow["first"], $myrow["last"]);
  } while ($myrow = mysql_fetch_array($result));
} else {
  echo "对不起,没有找到记录!";
}
?>
</body>
</html>
这里没什么特别的,只是printf函数有些不同。那我们就来仔细研究一下。 
首先要注意的是,所有的引号前面都有一个反斜杠。这个反斜杠告诉PHP直接显示后面的
字符,而不能把后面的字符当作程序代码来处理。另外要注意变量$PATH_INFO的用法。该
变量在所用程序中都可以访问,是用来保存程序自身的名称与目录位置的。我们之所以用
到它是因为要在页面中再调用这个程序本身。使用$PATH_INFO,我们可以做到,即使程序
被挪到其他目录,甚至是其他机器上时,我们也能保证正确地调用到这个程序。 

正如我刚才提到的,程序所生成的网页,其中包含的超链接会再次调用程序本身。不过,
再次调用时,会加入一些查询参数。 

PHP见到查询参数串中包含有“名字=值”这样的成对格式时,会作一些特别的处理。它会
自动生成一个变量,变量名称与取值都与查询参数串中所给定的名称和取值相同。这一功
能使得我们可以在程序中判断出是第一次执行本程序还是第二次。我们所要做的只是问问
PHP$id这个变量是否存在。 

当我知道这个问题的答案后,我可以在第二次调用程序时显示一些不同的结果出来。请看
: 
<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
// display individual record
// 显示单条记录内容
if ($id) {
   $result = mysql_query("SELECT * FROM employees WHERE id=$id",$db);
   $myrow = mysql_fetch_array($result);
   printf("名: %s\n<br>", $myrow["first"]);
   printf("姓: %s\n<br>", $myrow["last"]);
   printf("住址: %s\n<br>", $myrow["address"]);
   printf("职位: %s\n<br>", $myrow["position"]);
} else {
    // show employee list
    // 显示员工列表
   $result = mysql_query("SELECT * FROM employees",$db);
    if ($myrow = mysql_fetch_array($result)) {
      // display list if there are records to display
      // 如果有记录,则显示列表
      do {
        printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $PATH_INFO, 
        $myrow["id"], $myrow["first"], $myrow["last"]);
      } while ($myrow = mysql_fetch_array($result));
    } else {
      // no records to display
  // 没有记录可显示
      echo "对不起,没有找到记录!";
    }
}
?>
</body>
</html>
程序开始变得复杂了,所以我在这里面加了注释,来解释一下到底发生了什么。您可以用
//加入单行注释,或者用/*和*/来括住大段的注释。 

到这里,我们已经学会了第一个真正有用的PHP/MySQL脚本程序!现在,我们要看看怎样
把Web表格加进来,并且向数据库发送数据。>> 

--
看到五代说:"我喜欢的女孩...很会吃醋,任性,爱哭,易怒...但是,她的微笑...
            就是我最大的幸福..."
看到响子说:"我只要你答应我一件事;哪怕是一天,你一定要比我活得更久,我再也
            不要一个人孤孤单单的活下去了!"
总是很动情。 


※ 来源:·紫 丁 香 bbs.hit.edu.cn·[FROM: 202.118.233.21] 
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:16.279毫秒