一、 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>
原文轉自:http://www.anti-gravitydesign.com