- Web開發的平民英雄:PHP+MySQL
- 丁月華 王鈞玉 孫更新等編著
- 783字
- 2018-12-27 18:50:29
第2章 PHP常用模塊設計
2.1 通訊錄模塊
本節我們先學習一個簡單的MySQL數據庫應用的例程,將使用數據庫存儲一個通訊錄。
2.1.1 創建數據庫
首先我們需要分析通訊錄的數據結構,通常來講,一個通訊錄需要保存聯系人的姓名、單位、地址、郵編、電話、手機、電子郵箱、QQ號碼、MSN號碼等,我們可以依次設計數據庫結構如表2-1所示。
表2-1 通訊錄數據結構

2.1.2 實現通訊錄
數據庫表我們已經設計完畢,接下來分析系統需求,我們應該實現至少四個頁面:通訊錄瀏覽頁、添加新的聯系人頁、修改聯系人資料頁和刪除聯系人頁。這四個頁面分別對應著數據庫的SELECT查詢、INSERT添加、UPDATE修改和DELETE刪除四個典型應用。其實PHP程序設計絕大部分工作都是組合成各種各樣的SQL語句到MySQL數據庫中去執行。
(1) 聯系人添加頁add.php
<?php if($_POST['name']) {//有表單數據提交 //MySQL服務器地址 $host = "localhost:3306"; //MySQL用戶名 $user = "root"; //MySQL密碼 $pass = ""; //要使用的數據庫 $dbname = "phpbook"; //建立和數據庫的連接 $id = mysql_connect($host, $user, $pass); //使用GBK編碼 mysql_query("set names gbk"); //選擇數據庫 mysql_select_db($dbname); //執行SQL查詢,讀出用戶表 $sql = "insert into addressbook (email, name, sex, birthday, unit, address, post, msn, qq, office_phone, home_phone, mobile_phone) values ('" . $_POST['email'] . "', '" . $_POST['name'] . "', '" . $_POST['sex'] . "', '" . $_POST['birthday'] . "', '" . $_POST['unit'] . "', '" . $_POST['address'] . "', '" . $_POST['post'] . "', '" . $_POST['msn'] . "', '" . $_POST['qq'] . "', '" . $_POST['office_phone'] . "', '" . $_POST['home_phone'] . "', '" . $_POST['mobile_phone'] . "')"; if($result = mysql_query($sql)) { echo "聯系人:" . $_POST['name'] . "已添加。"; } } else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb18030" /> <title>添加新聯系人</title> </head> <body> 添加聯系人 <form name="form" action="add.php" method="post"> <table border="1" cellpadding="3" cellspacing="1"> <tr><td>姓名</td><td><input type="text" name="name" size="60"></td></tr> <tr><td> 電 子 郵 件 </td><td><input type="text" name="email" size="60"></td></tr> <tr><td>性別</td><td><select name="sex"><option value="1">男</option><option value="2">女</option></select></td></tr> <tr><td> 出 生 日 期 </td><td><input type="text" name="birthday" size="60"></td></tr> <tr><td>單位</td><td><input type="text" name="unit" size="60"></td></tr> <tr><td>地址</td><td><input type="text" name="address" size="60"></td></tr> <tr><td>郵編</td><td><input type="text" name="post" size="60"></td></tr> <tr><td>MSN</td><td><input type="text" name="msn" size="60"></td></tr> <tr><td>QQ</td><td><input type="text" name="qq" size="60"></td></tr> <tr><td> 工 作 電 話 </td><td><input type="text" name="office_phone" size="60"></td></tr> <tr><td> 家 庭 電 話 </td><td><input type="text" name="home_phone" size="60"></td></tr> <tr><td>手機</td><td><input type="text" name="mobile_phone" size="60"></td></tr> <tr><td colspan="2" align="center"><input type="submit" name="ok" value=" 提交"> <input type="reset" name="cancel" value="重填"></td></tr> </table> </form> </body> </html> <?php } ?>
代碼運行如圖2-1和圖2-2所示。

圖2-1 聯系人添加表單頁

圖2-2 聯系人添加成功頁
(2) 聯系人修改頁edit.php
<?php //MySQL服務器地址 $host = "localhost:3306"; //MySQL用戶名 $user = "root"; //MySQL密碼 $pass = ""; //要使用的數據庫 $dbname = "phpbook"; //建立和數據庫的連接 $id = mysql_connect($host, $user, $pass); //使用GBK編碼 mysql_query("set names gbk"); //選擇數據庫 mysql_select_db($dbname); if($_POST['user_id']) {//有表單數據提交 //執行SQL查詢,讀出用戶表 $sql = "update addressbook set email='" . $_POST['email'] . "', name='" . $_POST['name'] . "', sex='" . $_POST['sex'] . "', birthday='" . $_POST['birthday'] . "', unit='" . $_POST['unit'] . "', address='" . $_POST['address'] . "', post='" . $_POST['post'] . "', msn='" . $_POST['msn'] . "', qq='" . $_POST['qq'] . "', office_phone='" . $_POST['office_phone'] . "', home_phone='" . $_POST['home_phone'] . "', mobile_phone='" . $_POST['mobile_phone'] . "' where user_id='" . $_POST['user_id'] . "'"; if($result = mysql_query($sql)) { echo "聯系人:" . $_POST['name'] . "已修改。"; } } elseif($_GET['user_id']) { $sql = "select * from addressbook where user_id='" . $_GET['user_id'] . "'"; $result = mysql_query($sql); if($result) { $row = mysql_fetch_array($result); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb18030" /> <title>修改聯系人資料</title> </head> <body> 修改聯系人資料 <form name="form" action="edit.php" method="post"> <input name="user_id" type="hidden" value="<?php echo $row['user_id'];?>" /> <table border="1" cellpadding="3" cellspacing="1"> <tr><td>姓名</td><td><input type="text" name="name" size="60" value="<?php echo $row['name'];?>"></td></tr> <tr><td> 電 子 郵 件 </td><td><input type="text" name="email" size="60" value="<?php echo $row['email'];?>"></td></tr> <tr><td> 性 別 </td><td><select name="sex"><option value="1" <?php if($row['sex'] == 1){echo " selected";}?>>男</option><option value="2" <?php if($row['sex'] == 2){echo " selected";}?>>女</option></select></td></tr> <tr><td> 出 生 日 期 </td><td><input type="text" name="birthday" size="60" value="<?php echo $row['birthday'];?>"></td></tr> <tr><td>單位</td><td><input type="text" name="unit" size="60" value="<?php echo $row['unit'];?>"></td></tr> <tr><td> 地 址 </td><td><input type="text" name="address" size="60" value="<?php echo $row['address'];?>"></td></tr> <tr><td>郵編</td><td><input type="text" name="post" size="60" value="<?php echo $row['post'];?>"></td></tr> <tr><td>MSN</td><td><input type="text" name="msn" size="60" value="<?php echo $row['msn'];?>"></td></tr> <tr><td>QQ</td><td><input type="text" name="qq" size="60" value="<?php echo $row['qq'];?>"></td></tr> <tr><td>工作電話</td><td><input type="text" name="office_phone" size="60" value="<?php echo $row['office_phone'];?>"></td></tr> <tr><td>家庭電話</td><td><input type="text" name="home_phone" size="60" value="<?php echo $row['home_phone'];?>"></td></tr> <tr><td> 手 機 </td><td><input type="text" name="mobile_phone" size="60" value="<?php echo $row['mobile_phone'];?>"></td></tr> <tr><td colspan="2" align="center"><input type="submit" name="ok" value=" 提交"> <input type="reset" name="cancel" value="重填"></td></tr> </table> </form> </body> </html> <?php } else { echo "該聯系人不存在。"; } } ?>
修改聯系人的界面和添加新聯系人類似,修改成功保存后的界面如圖2-3和圖2-4所示。

圖2-3 聯系人資料修改

圖2-4 聯系人資料修改成功
(3) 聯系人刪除頁del.php
<?php //MySQL服務器地址 $host = "localhost:3306"; //MySQL用戶名 $user = "root"; //MySQL密碼 $pass = ""; //要使用的數據庫 $dbname = "phpbook"; //建立和數據庫的連接 $id = mysql_connect($host, $user, $pass); //使用GBK編碼 mysql_query("set names gbk"); //選擇數據庫 mysql_select_db($dbname); if($_GET['user_id']) {//有表單數據提交 //執行SQL查詢,刪除指定的聯系人 $sql = "delete from addressbook where user_id='" . $_GET['user_id'] . "'"; if($result = mysql_query($sql)) { echo "聯系人已刪除。"; } } ?>
我們可以在聯系人列表頁單擊其中一個聯系人的“刪除”鏈接,刪除成功后會顯示如圖2-5所示。

圖2-5 聯系人成功刪除
(4) 聯系人列表頁list.php
<?php //MySQL服務器地址 $host = "localhost:3306"; //MySQL用戶名 $user = "root"; //MySQL密碼 $pass = ""; //要使用的數據庫 $dbname = "phpbook"; //建立和數據庫的連接 $id = mysql_connect($host, $user, $pass); //使用GBK編碼 mysql_query("set names gbk"); //選擇數據庫 mysql_select_db($dbname); //執行SQL查詢,讀出用戶表 $sql = "select * from addressbook where user_id > 0 order by user_id"; echo "通訊錄 <a href=add.php>添加新聯系人</a>"; $result = mysql_query($sql); if($result) {//循環顯示每個聯系人資料 echo "<table><tr><td>姓名</td><td>電子郵件</td><td>性別</td><td>出生日 期</td><td>單位</td><td>地址</td><td>郵編</td><td>MSN</td><td>QQ</td><td>工作電話 </td><td>家庭電話</td><td>手機</td><td>操作</td></tr>"; while($row = mysql_fetch_array($result)) { echo "<tr><td>" . $row['name'] . "</td><td>" . $row['email'] . "</td><td>" . ($row['sex'] == 1 ? "男" : ($row['sex'] == 2 ? "女" : "")) . "</td><td>" . $row['birthday'] . "</td><td>" . $row['unit'] . "</td><td>" . $row['address'] . "</td><td>" . $row['post'] . "</td><td>" . $row['msn'] . "</td><td>" . $row['qq'] . "</td><td>" . $row['office_phone'] . "</td><td>" . $row['home_phone'] . "</td><td>" . $row['mobile_phone'] . "</td><td><a href='edit.php?user_id=" . $row['user_id'] . "'> 編 輯 </a> <a href='del.php?user_id=" . $row['user_id'] . "'>刪除</a></td></tr>"; } echo "</table>"; } else {//沒有有效記錄 echo "<p>通訊錄內還沒有聯系人!</p>"; } ?>
列表程序運行界面如圖2-6和圖2-7所示。

圖2-6 還沒有添加聯系人時的界面

圖2-7 添加聯系人后的界面
推薦閱讀
- Learning Spring 5.0
- PHP程序設計(慕課版)
- 算法基礎:打開程序設計之門
- QGIS:Becoming a GIS Power User
- Java程序設計:原理與范例
- AIRIOT物聯網平臺開發框架應用與實戰
- Struts 2.x權威指南
- IBM Cognos TM1 Developer's Certification guide
- Maven for Eclipse
- jQuery Mobile Web Development Essentials(Second Edition)
- 軟件再工程:優化現有軟件系統的方法與最佳實踐
- Java網絡編程實用精解
- Neo4j Graph Data Modeling
- C#面向對象程序設計(微課版)
- Ext JS源碼分析與開發實例寶典