Web开发的平民英雄:PHP+MySQL
上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 添加联系人后的界面