上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
第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 添加联系人后的界面