同样要注意$PATH_INFO的用法。就象我在第一课里讲到的,您可以在HTML代码中的任意位置使用PHP。您也会注意到,表格中的每一个元素都对应着数据库中的一个字段。这种对应关系并不是必须的,这么做只是更直观一些,便于您以后理解这些代码。

还要注意的是,我在Submit按钮中加入了name属性。这样我在程序中可以试探$submit变量是否存在。于是,当网页被再次调用时,我就会知道调用页面时是否已经填写了表格。

我应该指出,您不一定要把上面的网页内容写到PHP程序中,再返过来调用程序本身。您完全可以把显示表格的网页和处理表格的程序分开放在两个网页、三个网页甚至更多网页中,悉听尊便。放在一个文件中只是可以使内容更加紧凑而已。

那好,我们现在加入一些代码,来检查用户在表格中输入的内容。我会把用$HTTP_POST_VARS把所有查询参数变量都显示出来,这只不过是为了证明PHP确实把所有变量都传给了程序。这种方法是一个很有用的调试手段。如果您要想看全部的变量,可以用$GLOBALS。

if ($submit) {
// 处理表格输入
while (list($name, $value) = each($HTTP_POST_VARS)) {
echo "$name = $value
n";}
} else{
// 显示表格
?>
"> 
 
名:
姓:
住址:
职位:} // end if,if结束
?>
程序现在运行正常,那我们现在就可以取到表格输入的内容,并把它们发送给数据库。
if ($submit) {
// 处理表格输入
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$sql = "INSERT INTO employees (first,last,address,position)
VALUES ('$first','$last','$address','$position')";
$result = mysql_query($sql);
echo "Thank you! Information entered.n";
} else{
// 显示表格内容
?>
"> 
 
名:
  姓:
住址:
  职位:} // end if,if结束
?>

您现在已经向数据库中插入数据了。不过还有很多完善的工作要做。如果用户没有填写某一栏怎么办?在需要填入数字的地方填了文字怎么办?或者填错了怎么办?

别担心。我们一步一步来。

第五页 修改数据

在个教程中,我都把要执行的SQL语句放到一个变量($sql)中,然后才用mysql_query()来执行数据库查询。在调试时这是很有用的。如果程序出了什么问题,您随时可以把SQL语句的内容显示出来,检查其中的语法错误。

我们已经学习了如何把数据插入到数据库中。现在我们来学习如何修改数据库中已有的记录。数据的编辑包括两部分:数据显示和通过表格输入把数据返回给数据库,这两部分我们前面都已经讲到了。然而,数据编辑还是有一点点不同,我们必须先在表格中显示出相关的数据。

首先,我们回过头再看看第一课的程序代码,在网页中显示员工姓名。但是这次,我们要把数据显示在表格中。程序看起来象下面这样:

$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
if ($id) {
// 查询数据库
$sql = "SELECT * FROM employees WHERE id=$id";
$result = mysql_query($sql);
$myrow = mysql_fetch_array($result);
?>
"> 
 
">
名:
$myrow["first"] ?>">
姓:$myrow["last"] ?>">
住址:$myrow["address"] ?>">
职位:$myrow["position"] ?>">
} else {
// 显示员工列表
$result = mysql_query("SELECT * FROM employees",$db);
while ($myrow = mysql_fetch_array($result)) {
printf("%s %s
n", $PATH_INFO,$myrow["id"], $myrow["first"], $myrow["last"]);
}
}
?>

我们刚才是把字段内容写入到相应表格元素中的value属性里,这是相应简单的。我们再往前进一步,使程序可以把用户修改过的内容写回数据库去。同样,我们通过Submit按钮来判断是否处理表格输入内容。还要注意,我们用的SQL语句稍稍有些不同。

$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
if ($id) {
if ($submit) {
$sql = "UPDATE employees SET first='$first',last='$last',
address='$address',position='$position' WHERE id=$id";
$result = mysql_query($sql);
echo "谢谢!数据更改完成n";
} else {
// 查询数据库
$sql = "SELECT * FROM employees WHERE id=$id";
$result = mysql_query($sql);
$myrow = mysql_fetch_array($result);
?>
"> 
 
">
名:
echo $myrow["first"] ?>">
    姓:$myrow["last"] ?>">
    住址:$myrow["address"] ?>">
    职位:$myrow["position"] ?>">
}
} else {
// 显示员工列表
$result = mysql_query("SELECT * FROM employees",$db);
while ($myrow = mysql_fetch_array($result)) {
printf("%s %s
n", $PATH_INFO,$myrow["id"], $myrow["first"], $myrow["last"]);
}
}
?>

就是这样。在这个程序中已经包含了我们学过所大多数特性。您也已经看到,我们在一个if()条件判别语句中又加了一个if()语句,来检查多重条件。

下面,我们要把所有东西全都加在一起,写出一个很好的程序来。

第六页 完整的程序

在本课结束前,我们要把所有东西加入到一个程序中,使它具有增加、编辑修改、删除记录的功能。这是前面所有内容的一个延伸,也可以作为极好的复习方法。看看下面的程序。

$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
if ($submit) {
// 如果没有ID,则我们是在增加记录,否则我们是在修改记录
if ($id) {
$sql = "UPDATE employees SET first='$first',last='$last',
address='$address',position='$position' WHERE id=$id";
} else {
$sql = "INSERT INTO employees (first,last,address,position)
VALUES ('$first','$last','$address','$position')";
}
// 向数据库发出SQL命令
$result = mysql_query($sql);
echo "记录修改成功!
";
} elseif ($delete) {
// 删除一条记录
$sql = "DELETE FROM employees WHERE id=$id";
$result = mysql_query($sql);
echo "记录删除成功!
";
} else {
// 如果我们还没有按submit按钮,那么执行下面这部分程序
if (!$id) {
// 如果不是修改状态,则显示员工列表
$result = mysql_query("SELECT * FROM employees",$db);
while ($myrow = mysql_fetch_array($result)) {
printf("%s %s n",
$PATH_INFO, $myrow["id"], $myrow["first"], $myrow["last"]);
printf("(DELETE)<
br>", $PATH_INFO, $myrow["id"]);
}
}
?>
">ADD A RECORD
"> 
 
if ($id) {
// 我们是在编辑修改状态,因些选择一条记录
$sql = "SELECT * FROM employees WHERE id=$id";
$result = mysql_query($sql);
$myrow = mysql_fetch_array($result);
$id = $myrow["id"];
$first = $myrow["first"];
$last = $myrow["last"];
$address = $myrow["address"];
$position = $myrow["position"];
// 显示id,供用户编辑修改
?>
">
}
?>
名:">
姓:">
住址:">
职位:">}
?>

这段程序看起来很复杂,但实际上并不难。程序主要有三个部分。第一个if()语句检查我们是否已经按下了那个“输入信息”的数据提交按钮。如果是,程序再检查$id是否存在。如果不存在,那我们就是在增加记录状态,否则,我们是在修改记录状态。

接下来我们检查变量$delete是否存在。如果存在,我们是要删除记录。注意,第一个if()语句检查的是用POST方法发送来的变量,而这一次我们检查的是GET方法中传递过来的变量。

最后,程序默认的动作是显示员工列表和表格。同样,我们要检查变量$id是否存在。如果存在,我们就根据它的值检索出相应的记录显示出来。否则,我们会显示一个空的表格。

现在,我们已经把所学的东西全部都放在一个程序里头了。我们用到了while()循环,用到了if()语句,并且执行了全部的SQL基本操作 - SELECT、INSERT、UPDATE以及DELETE。另外,我们也知道如何在不同的网页之间通过URL和表格输入来互相传递信息。

在第三课里,我们要学习如何为网页增加智能化处理能力。