一、 while循环
在这一课里,我们将会继续深入下去,使用PHP和MySQL来写出一些简单而有用的页面。我们从昨天创建的数据库开始,显示库中的数据,但是会再稍微加以润色。
首先,我们用下面的代码来查询数据库内容。
<html>
<body>
<?php
$db = mysql_connect(\"localhost\", \"root\");
mysql_select_db(\"mydb\",$db);
$result = mysql_query(\"SELECT * FROM employees\",$db);
echo \"<table border=1>\n\";
echo \"<tr><td>姓名</td><td>职位</td></tr>\n\";
while ($myrow = mysql_fetch_row($result)) {
printf(\"<tr><td>%s %s</td><td>%s</td></tr>\n\", $myrow[1], $myrow[2], $myrow[3]);
}
echo \"</table>\n\";
?>
</body>
</html>
您可能已经注意到,我们在这个程序里加进了一些新东西。最明显的是while()循环。该循环是说,只要数据库里还有记录可读(使用mysql_fetch_row()函数),那就把该记录赋给变量$myrow,然后执行大括号({})内的指令。仔细看一下这里,这部分是比较重要的。
我们应该注意一下mysql_fetch_row()函数。这里有一点小问题,它返回的是一个数组,必须以数组下标来访问其中的某个字段。第一个字段下标为0,第二个是1,依此类推。在执行某些复杂查询时,这么做简直实在是太烦琐了。
现在我们更仔细地研究一下循环过程。程序前几行我们在第一课的例子中已经看到过了。然后,在while()循环中,我们从查询结果中读取一条记录并把该记录赋给数组$myrow。接着,我们用printf函数把数据中的内容显示在屏幕上。随后,循环反复执行,读取下一条记录赋给$myrow。这样继续下去,直到所有记录都已被读取完为止。
使用while()循环的一个好处是,如果数据库查询没有返回任何记录,那您也不会收到错误信息。在刚执行循环语句时,循环条件就不满足,不会有任何数据赋给$myrow,程序就直接往下运行了。
但是如果查询未返回任何数据,我们怎么让用户知道这一点呢?我们也许该提供点儿相关的消息给用户吧。这是可以做到的,下面我们就看看怎么做。>>
二、 if-else
请看下面的程序。
<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)) {
echo \"<table border=1>\n\";
echo \"<tr><td>姓名</td><td>住址</td></tr>\n\";
do {
printf(\"<tr><td>%s %s</td><td>%s</tr>\n\", $myrow[\"first\"], $myrow[\"last\"], $myrow[\"address\"]);
}
while ($myrow = mysql_fetch_array($result));
echo \"</table>\n\";
} else {
echo \"对不起,没有找到记录!\";
}
?>
</body>
</html>
<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>
<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>
<html>
<body>
<form method=\"post\" action=\"<?php echo $PATH_INFO?>\">
名:<input type=\"Text\" name=\"first\"><br>
姓:<input type=\"Text\" name=\"last\"><br>
住址:<input type=\"Text\" name=\"address\"><br>
职位:<input type=\"Text\" name=\"position\"><br>
<input type=\"Submit\" name=\"submit\" value=\"输入信息\">
</form>
</body>
</html>
<html>
<body>
<?php
if ($submit) {
// 处理表格输入
while (list($name, $value) = each($HTTP_POST_VARS)) {
echo \"$name = $value<br>\n\";
}
} else{
// 显示表格
?>
<form method=\"post\" action=\"<?php echo $PATH_INFO?>\">
名:<input type=\"Text\" name=\"first\"><br>
姓:<input type=\"Text\" name=\"last\"><br>
住址:<input type=\"Text\" name=\"address\"><br>
职位:<input type=\"Text\" name=\"position\"><br>
<input type=\"Submit\" name=\"submit\" value=\"输入信息\">
</form>
<?php
} // end if,if结束
?>
</body>
</html>
程序现在运行正常,那我们现在就可以取到表格输入的内容,并把它们发送给数据库。
<html>
<body>
<?php
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{
// 显示表格内容
?>
<form method=\"post\" action=\"<?php echo $PATH_INFO?>\">
名:<input type=\"Text\" name=\"first\"><br>
姓:<input type=\"Text\" name=\"last\"><br>
住址:<input type=\"Text\" name=\"address\"><br>
职位:<input type=\"Text\" name=\"position\"><br>
<input type=\"Submit\" name=\"submit\" value=\"输入信息\">
</form>
<?php
} // end if,if结束
?>
</body>
</html>
<html>
<body>
<?php
$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);
?>
<form method=\"post\" action=\"<?php echo $PATH_INFO?>\">
<input type=hidden name=\"id\" value=\"<?php echo $myrow[\"id\"] ?>\">
名:<input type=\"Text\" name=\"first\" value=\"<?php echo
$myrow[\"first\"] ?>\"><br>
姓:<input type=\"Text\" name=\"last\" value=\"<?php echo
$myrow[\"last\"] ?>\"><br>
住址:<input type=\"Text\" name=\"address\" value=\"<?php echo
$myrow[\"address\"] ?>\"><br>
职位:<input type=\"Text\" name=\"position\" value=\"<?php echo
$myrow[\"position\"] ?>\"><br>
<input type=\"Submit\" name=\"submit\" value=\"输入信息\">
</form>
<?php
} else {
// 显示员工列表
$result = mysql_query(\"SELECT * FROM employees\",$db);
while ($myrow = mysql_fetch_array($result)) {
printf(\"<a href=\\"%s?id=%s\\">%s %s</a><br>\n\", $PATH_INFO,
$myrow[\"id\"], $myrow[\"first\"], $myrow[\"last\"]);
}
}
?>
</body>
</html>
<html>
<body>
<?php
$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);
?>
<form method=\"post\" action=\"<?php echo $PATH_INFO?>\">
<input type=hidden name=\"id\" value=\"<?php echo $myrow[\"id\"] ?>\">
名:<input type=\"Text\" name=\"first\" value=\"<?php
echo $myrow[\"first\"] ?>\"><br>
姓:<input type=\"Text\" name=\"last\" value=\"<?php echo
$myrow[\"last\"] ?>\"><br>
住址:<input type=\"Text\" name=\"address\" value=\"<?php echo
$myrow[\"address\"] ?>\"><br>
职位:<input type=\"Text\" name=\"position\" value=\"<?php echo
$myrow[\"position\"] ?>\"><br>
<input type=\"Submit\" name=\"submit\" value=\"输入信息\">
</form>
<?php
}
} else {
// 显示员工列表
$result = mysql_query(\"SELECT * FROM employees\",$db);
while ($myrow = mysql_fetch_array($result)) {
printf(\"<a href=\\"%s?id=%s\\">%s %s</a><br>\n\", $PATH_INFO,
$myrow[\"id\"], $myrow[\"first\"], $myrow[\"last\"]);
}
}
?>
</body>
</html>
<html>
<body>
<?php
$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 \"记录修改成功!<p>\";
} elseif ($delete) {
// 删除一条记录
$sql = \"DELETE FROM employees WHERE id=$id\";
$result = mysql_query($sql);
echo \"记录删除成功!<p>\";
} else {
// 如果我们还没有按submit按钮,那么执行下面这部分程序
if (!$id) {
// 如果不是修改状态,则显示员工列表 $result = mysql_query(\"SELECT * FROM employees\",$db);
while ($myrow = mysql_fetch_array($result)) {
printf(\"<a href=\\"%s?id=%s\\">%s %s</a> \n\",
$PATH_INFO, $myrow[\"id\"], $myrow[\"first\"], $myrow[\"last\"]);
printf(\"<a href=\\"%s?id=%s&delete=yes\\">(DELETE)</a><
br>\", $PATH_INFO, $myrow[\"id\"]);
}
}
?>
<P>
<a href=\"<?php echo $PATH_INFO?>\">ADD A RECORD</a>
<P>
<form method=\"post\" action=\"<?php echo $PATH_INFO?>\">
<?php
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,供用户编辑修改
?>
<input type=hidden name=\"id\" value=\"<?php echo $id ?>\">
<?php
}
?>
名:<input type=\"Text\" name=\"first\" value=\"<?php echo $first ?>\"><br>
姓:<input type=\"Text\" name=\"last\" value=\"<?php echo $last ?>\"><br>
住址:<input type=\"Text\" name=\"address\" value=\"<?php echo $address ?>\"><br>
职位:<input type=\"Text\" name=\"position\" value=\"<?php echo $position ?>\"><br>
<input type=\"Submit\" name=\"submit\" value=\"输入信息\">
</form>
<?php
}
?>
</body>
<`/html>