A-A+

30分钟学会用PHP写带数据库的简单通讯录

2008年12月23日 未分类 暂无评论 阅读 1 次

  我接触PHP也不是很久,所以有什么不足的地方,欢迎各位指正,让大家见笑了。

  这篇小教程的对象是PHP初学者,都是些最简单、最基本的东西,因此高手们可以略过哦。

  为了让各位初学者提起兴趣、尽快入门,这里写的是将是最简单,最基本的PHP程序,相信你只要有一点点的PHP基础知识,10分钟之内就能把它学会。没有PHP基础知识也没有关系,只要耐心的看,学会它也不会超过一个小时的。

  我写这篇文章的目的是,和大家一起共同学习、共同进步,然后将PHP初学者们对PHP的恐惧心理驱赶到十万八千里之外,让大家增强自学PHP的信心,其实PHP并不难学,只要静下心来学,一定能够学有所成的。好了,说了这么多废话,赶快开始吧,不然被骂的,呵呵。

[设计思路]
  实现:添加、查看、修改、删除,这几个基本功能,为从简单入手,我们就只做这些吧。

[程序规划]
  呵呵,不要紧张,我们这里不会搞什么软件工程,做什么需求分析啊,画什么流程图啊之类令人吐血的事情了,呆会我被扁的。当然正规的开发这些是必须的哦,因此有空一定要去了解一下。

  input.php  ---------- 用来添加联系人信息的表单 (当然这个可以用html咯,但为了避免混淆,就全部统一为PHP格式吧)
  post.php   ---------- 用来处理表单数据
  conn.php  ---------- 用来连接数据库
  show.php  ---------- 用来显示数据
  edit.php    ---------- 用来修改数据
  edited.php ---------- 用来处理修改数据
  del.php      ---------- 用来删除数据

[数据规划]
  也就是数据库设计了,为了好看点就写成四个字了。不要介意。我们这里也不搞什么扯蛋的建模了,也会吐血的,呵呵。好,我们开始,痛苦了一点,没落伍不能截图,我用字符画了一个其丑无比的表格,没办法,就这水平了,大家将就着看下吧,呵呵,哭吧。

  ____________________________________________________________________________
  |     字段     |       类型        |          整理          |      属性      |      NULL     |          额外         |
  |       id       |      int(10)     |                          |  UNSIGNED  |        否       | auto_increment  |
  |     name    |  varchar(10)   |  utf8_general_ci  |               |        否       |                         |
  |      sex      |   tinyint(1)     |                         |               |        否       |                         |
  |     mobi     |  varchar(11)   |  utf8_general_ci  |               |        否       |                         |
  |     email     |  varchar(50)   |  utf8_general_ci  |               |        否       |                         |
  |     addr      |  varchar(50)   |  utf8_general_ci  |               |        否       |                         |
  |__________|____________|______________|___________|__________|______________|

  关于数据库,我大概的讲一下哦:
  id 大家再熟悉不过了吧?一组数据的唯一的标识。比如说你在落伍的ID咯,点你的ID就出现一堆关于你的信息,这就是唯一的标识。
    int(10)就是数据类型了,代表10位的整数,UNSIGNED是非负的意思,auto_increment 是自动添加。由于id设置为自动添加,因此我    们建好它后就不用再管了,让它自生自灭吧,呵呵。

  name 这个字段用来储存名字,注意字段名可以随便命名的,比如现在“name”,但为了方便后面的讲解,大家暂时委屈一下跟我命名吧。      建议命名规则为小写字母哦,中间加下划线也可以。varchar(10)储存中国人,10个字应该够了吧?呵呵,不管了,就这样吧。varcha     r和char,前者省空间,后者省时间……扯远了,这些数据类型,还是大家自己google了解一下吧。utf8_general_ci,字符集,这个很     重要哦,你一定要清楚自己的数据库用的什么字符集,不然会出现一堆乱码哦。说到字符集,我大力推荐大家使用utf8了。

  sex 用来储存性别,为什么类型是tinyint(1),1位小整数够用吗?当然够用了,模仿下二进制,用0表示女,用1表示男就OK了,刚才忘记说    了一点,可能有人还不明白,NULL,否,就是不为空的意思。

  mobi 我取得名字也都很直观了,下面就快速带过吧,mobi用来储存手机号码,当然是11位咯。

  email 用来储存电子邮件,50位应该绰绰有余了。

  addr 用来储存通讯地址,宇宙、地球、国家、省、市、乡、镇、村都写进去,50位也应该够了吧,呵呵。

  那么我们现在就来创建数据库咯,建议大家使用phpMyadmin用SQL方式导入下列语句,因为这样是最方便的了:

复制内容到剪贴板 

代码:

  CREATE TABLE `addr_list` (
    `id`      int(10) unsigned NOT NULL auto_increment,
    `name` varchar(10) NOT NULL,
    `sex`    tinyint(1) NOT NULL,
    `mobi`  varchar(11) NOT NULL,
    `email`  varchar(50) NOT NULL,
    `addr`   varchar(50) NOT NULL,
    PRIMARY KEY  (`id`)
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

 

  当然你用MySQL Command Line Client手工输入也可以哦,如果你不嫌累的话,呵呵,不过要注意一点,就是把所有的 `` 符号去掉。也就是TAB键上面那颗诡异的按键。不然可能会出现意外哦。

  好了,那就等大家先把数据库搞定了再说吧,打了半天字,手好酸,肚子也好饿,呵呵。先去吃饭,一会再继续了,还有4分就落伍了,希望尽快吧,那样就可以截图了,不过用字符画表格还是蛮有意思的,呵呵。

  恩,下面我们就将一个一个的做网页,一个一个的写程序了:

我们接着来。需要对上面进行点补充:要先创建一个数据库才能导入哦!

  为了区分和方便讲解,我把数据库命名为list,把数据表命名为addr_list,还是把完整的SQL语句写出来吧。

  首先创建数据库 list:

复制内容到剪贴板

代码:

  CREATE DATABASE `list` ;

  然后创建数据表 addr_list:

复制内容到剪贴板

代码:

  CREATE TABLE `addr_list` (
    `id`      int(10) unsigned NOT NULL auto_increment,
    `name` varchar(10) NOT NULL,
    `sex`    tinyint(1) NOT NULL,
    `mobi`  varchar(11) NOT NULL,
    `email`  varchar(50) NOT NULL,
    `addr`   varchar(50) NOT NULL,
    PRIMARY KEY  (`id`)
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

  好,我们现在来做网页+写程序吧:

input.php 文件代码:

复制内容到剪贴板

代码:

<form id="form1" name="form1" method="post" action="post.php">
  <p>姓名:<input name="name" type="text" id="name" /></p>
  <p>
  性别:<input type="radio" name="sex" value="0" />女士 
           <input type="radio" name="sex" value="1" />先生
  </p>
  <p>手机:<input name="mobi"  type="text" id="mobi"  /></p>
  <p>邮箱:<input name="email" type="text" id="email"  /></p>
  <p>地址:<input name="addr"  type="text" id="addr"  /></p>
  <p>
        <input type="submit" name="Submit" value="添加" />
        <input type="reset" name="Submit2" value="重写" />
  </p>
</form>

说明:因为只有HTML代码,所以你要存成html格式的话也是可以的。不要被那些乱七八糟的<p></p>迷惑哦,我们要看的关键字是form还 有input。form主要看method和action,method是方法,有post和get等,关于这个你可以自己去了解一下;action是动作,也就是传送值得的目标页。通俗一点就是点按钮会跑到的页面。那么,input要注意的是name和id,要定义一些好记的名字。为了方便记忆,我把表单名和数据库的字段名定义成一样的了,这并不是必须的,但还是很有必要的。最后注意的是sex,别想歪了,我说的是性别了。一定要注意它的name是一样的,但是value不同哦。我们前面已经说过,用0表示女,用1表示男。这个表单建议用些工具去做,比如DW等,几秒种就可以搞定了。用手写的话,需要有一定的html语言基础。如果使用utf8,一定要记得用工具把所有网页都另存为utf8的哦。

post.php 文件代码:(不完整)

复制内容到剪贴板

代码:

<?php
//设置表单变量
$name  = $_POST['name'];
$sex     = $_POST['sex'];
$mobi   = $_POST['mobi'];
$email   = $_POST['email'];
$addr    = $_POST['addr'];

//测试是否传值
echo $name  . '<br>';
echo $sex     . '<br>';
echo $mobi   . '<br>';
echo $email   . '<br>';
echo $addr    . '<br>';
?>

说明:这是一个不完整的post.php代码,我们先写一些简单的脚本来测试input.php的值是否成功的传到post.php页。“设置表单变量”不是必须的,但也是很有必要的,以免发生意外状况,呵呵。你现在所看到的变量,如$name,就是前面input.php里的name了。比如说:<input name="mobi"  type="text" id="mobi"  />  (input.php页),里面的name="mobi",  就是这里的$mobi  (post.php页 )这个应该没什么问题吧?那么就运行input.php页,随便填写些信息,然后按“添加”,如果按了“添加”之后,转到了post.php页,并且正确的显示了你所填写的内容,那么就表示传值就成功了,我们就可以接着网下做了。小提示:echo为打印输出,类似$name以$开头的都是变量,<br>换行。echo是一个语言结构,并非函数,这点要记得哦。

  OK,传值成功了,那么我们要做的就把值写进数据库吧。在改进post.php之前,我们的先写一个conn.php文件,并且调用它进行数据库的一些操作。那么我们来看看这段简陋的代码吧:

conn.php 文件代码:

复制内容到剪贴板

代码:

<?php
//设置数据库变量
$db_host   = 'localhost';  //数据库主机名称,一般都为localhost
$db_user   = 'root';        //数据库用户帐号,根据个人情况而定
$db_passw = '123456';   //数据库用户密码,根据个人情况而定
$db_name  = 'list';         //数据库具体名称,以刚才创建的数据库为准

//连接数据库
$conn = mysql_connect($db_host,$db_user,$db_passw) or die ('数据库连接失败!');

//设置字符集,如utf8和gbk等,根据数据库的字符集而定
mysql_query("set names 'utf8'");

//选定数据库
mysql_select_db($db_name,$conn) or die('数据库选定失败!');

//执行SQL语句(查询)
$result = mysql_query($sql) or die('数据库查询失败!');
?>

说明:这段代码本身并没有什么作用,因为它要经常用到,所以只是为了减少工作量不必重复写它,所以把它专门放在一个文件里,这样就可以随时调用了。这里并不需要多讲解什么,你只需要根据个人情况改一下“设置数据库变量”和“设置字符集”的部分就可以了。不要尝试单独的运行conn.php这个脚本,肯定会出错的,因为我们还没开始设置$sql呢

  OK,数据库的基本操作搞定了。我们来开始写完整版的post.php吧,呵呵。

post.php 文件代码:(完整版)

复制内容到剪贴板

代码:

<?php
//设置表单变量
$name  = $_POST['name'];
$sex     = $_POST['sex'];
$mobi   = $_POST['mobi'];
$email   = $_POST['email'];
$addr    = $_POST['addr'];

//需要执行的SQL语句(这里是插入数据功能)
$sql = "INSERT INTO `addr_list`
                ( `id` , `name` , `sex` , `mobi` , `email` , `addr` )
                VALUES
                (NULL , '$name', '$sex', '$mobi', '$email', '$addr')";

//调用conn.php文件进行数据库操作
require('conn.php');

//提示操作成功信息,注意:$result存在于conn.php文件中,被调用出来
if($result)
{
        echo '恭喜,操作成功!<p>';
}
?>
[<a href="show.php">查看通讯录</a>] [<a href="input.php">继续添加</a>]

说明:终于见到post.php的完整版了,够简陋了吧?呵呵。这里需要注意的是$sql中的SQL语句,如果不会SQL语句的话,可以用phpMyadmin去扣,具体怎么扣,就请各位自己google一下咯,有时间的话再另写了。建议还是学学SQL语法比较好一些。接着看$sql,id对应NULL,前面说过,id建立以后就不用管了,所以可以留空值,接下,数据库的name字段对应$name变量,以此类推就可以咯。写出你需要执行的语句,然后调用conn.php执行就可以了。就这么简单。为了使界面人性化一点,我们应该加些操作提示和相关链接。这样我们的post.php就算完成了,呵呵,超简陋。不过用来学习,应该追求简陋比较好,呵呵。

  OK,现在我们就来做show.php,显示页吧。已经完成奖将近一半的工作咯,再坚持下就大功告成了。

show.php 文件代码:

复制内容到剪贴板

代码:

[<a href="input.php">继续添加</a>]
<?php
//这里是PHP代码
$sql = "SELECT * FROM `addr_list`";//需要执行的SQL语句(这里是浏览数据功能)
require('conn.php');               //调用conn.php文件,执行数据库操作
?>

        <!---这里HTML代码,创建一个表格--->
        <table width="100%" border="1">
         <tr>
             <th bgcolor="#CCCCCC" scope="col">姓名</th>
             <th bgcolor="#CCCCCC" scope="col">性别</th>
             <th bgcolor="#CCCCCC" scope="col">手机</th>
             <th bgcolor="#CCCCCC" scope="col">邮箱</th>
           <th bgcolor="#CCCCCC" scope="col">地址</th>
         </tr>

<?php
//这里是PHP代码
while($row = mysql_fetch_row($result)) //循环开始
{

                //判断性别
        if($row[2]==0)
        {
                $sex = '女士';
        }
        else
        {
                $sex = '先生';
        }
?>

        <!---被循环的HTML表格中带有PHP代码--->
            <tr>
              <td><?php echo $row[1]; ?></td>
              <td><?php echo $sex;      ?></td>
              <td><?php echo $row[3]; ?></td>
              <td><?php echo $row[4]; ?></td>
                <td><?php echo $row[5]; ?></td>
            </tr>

<?php
}
?>

</table>

说明:这段代码就极度扯蛋了,因为这里我们不可能讲到诸如Smarty和PHPlib之类的模板引擎,所以只能是PHP夹着HTML丢在同一个文件里面了,但是真正开发的时候可千万不能这么干啊,不然我就成千古罪人了。形势所迫,形势所迫,大家将就一下吧。也不是很难看懂,抓住一个原则 <?php 这里里面的就是PHP代码 ?>,反之,外面的就是HTML代码咯。着重讲一下while($row = mysql_fetch_row($result)) 吧,在这里mysql_fetch_row($result)将我们执行SQL语句获得结果集保存为数组。当然你不需要急着去了解什么叫做数组,你只需要知道,它帮我们的字段排好队了,记得从0开始排的哦:0->id;  1->name;  2->sex;  3->mobi;   4->email;   5->addr   这样一目了然了,我们需要调用的时候就用$row[X]来调用,X就是队列号,比如调用name,就是$row[1],因为我们不要求显示id,所以上面的代码中没有$row[0],那为什么多了$sex呢?因为我们不能用数字来显示性别吧,所以加了个条件句:如果$row[2]等于0,那么就显示"女士",否则就显示"先生"。当然你可以随便改这个性别的称呼了,比如0显示夏娃,1显示亚当,呵呵。

  OK,那么就先到这里吧。还剩下两部分:修改和删除,我们下次搞定它们。看起来快,写起来就不是那么容易了,我手都快脱臼了,呵呵。

 

  OK,我们开始写编辑和删除功能吧。我们先来改一下show.php页面,让它有个操作区,并且添加[编辑]和[删除]的连接。让用户去操作,具体代码我帖出来先,我已经把格式尽量弄得方便看了,如何各位还看不明白的话,可以对比上面的show.php看哦。

input.php 文件代码:(更新版)

复制内容到剪贴板

代码:

[<a href="input.php">继续添加</a>]
<?php
//这里是PHP代码
$sql = "SELECT * FROM `addr_list`";//需要执行的SQL语句(这里是浏览数据功能)
require('conn.php');               //调用conn.php文件,执行数据库操作
?>

        <!---这里HTML代码,创建一个表格--->
        <table width="100%" border="1">
         <tr>
             <th width="13%" bgcolor="#CCCCCC" scope="col">姓名</th>
             <th width="13%" bgcolor="#CCCCCC" scope="col">性别</th>
             <th width="13%" bgcolor="#CCCCCC" scope="col">手机</th>
             <th width="13%" bgcolor="#CCCCCC" scope="col">邮箱</th>
             <th width="29%" bgcolor="#CCCCCC" scope="col">地址</th>

             <th width="19%" bgcolor="#CCCCCC" scope="col">操作</th>

         </tr>

<?php
//这里是PHP代码
//判断性别
while($row = mysql_fetch_row($result)) //循环开始
{
        if($row[2]==0)
        {
                $sex = '女士';
        }
        else
        {
                $sex = '先生';
        }
?>

        <!---被循环的HTML表格中带有PHP代码--->
            <tr>
              <td><?php echo $row[1]; ?></td>
              <td><?php echo $sex;      ?></td>
              <td><?php echo $row[3]; ?></td>
              <td><?php echo $row[4]; ?></td>
              <td><?php echo $row[5]; ?></td>

                          <td><div align="center">
                          [<a href="edit.php?id=<?php echo $row[0]; ?>">编辑</a>]
                          [<a href="del.php?id=<?php echo $row[0]; ?>">删除</a>]
                          </div></td>

            </tr>

<?php
}
?>

</table>

说明:我们的两个链接[编辑]和[删除]指向的 edit.php 和 del.php 页面,现在这两个页还没做,我们先来搞清楚为什么要这样写它。我们可以看到它的形式为:edit.php?id=xxx,那么xxx是什么?前面讲过,不能忘记哦,$row[0]代表调用id嘛,我们用PHP语句写到链接里,所以它就长成那样子了,呵呵。转换出来后,它应该会在地址栏里显示类似 edit.php?id=1 的地址,这是一种传值方式,如果你要研究下,呵呵,google咯,我这里就不多讲了。好,那么我们试看它们到底有没有把值传到 edit.php 和 del.php 页面了,所以我们先来写这两个页面测试,记得是测试哦,所以不是完整版了,呵呵。

edit.php 文件代码:(不完整)

复制内容到剪贴板

代码:

<?php
echo $id;
?>

del.php 文件代码:(不完整)

复制内容到剪贴板

代码:

<?php
echo $id;
?>

说明:两个双胞胎长一模一样,呵呵。好,大家可以测试一下了,运行show.php,点[编辑]或[删除],看看$id的值是否能显示或变换,如果成功的话,我们就可以继续咯。

  OK,现在我们来正式写edit.php和del.php,如果前面你已经搞清楚post.php和show.php怎么写,那么这两个也就不成问题了,大同小异,所以不要太紧张。先来写edit.php吧。

edit.php 文件代码:(完整版)

复制内容到剪贴板

代码:

<?php
$sql = "SELECT * FROM `addr_list`
                WHERE `id`='$id'";         //需要执行的SQL语句(这里是浏览数据功能)
                                                    //要注意ID哦,这个语句和show.php有些不同
               
require('conn.php');                       //调用conn.php文件,执行数据库操作
$row = mysql_fetch_row($result);   //将SQL执行语句的结果集保存为数组(排队咯)
?>

<!---我们把input.php的表单扣来加入PHP代码就可以了,只有性别部分要做特殊处理--->
<form id="form1" name="form1" method="post" action="edited.php">
  <p>姓名:<input name="name" type="text" id="name"  value="<?php echo $row[1]; ?>" /></p>
  <p>
  
<?php
//特殊处理性别,如果是0就选中女士,否则选种先生,checked="checked"就是选中哦
if($row[2]==0)
{
        echo '性别:<input type="radio" name="sex" value="0" checked="checked" />女士 
                         <input type="radio" name="sex" value="1" />先生';
}
else
{
        echo '性别:<input type="radio" name="sex" value="0" />女士 
                         <input type="radio" name="sex" value="1" checked="checked" />先生';
}
?>

  </p>
  <p>手机:<input name="mobi"  type="text" id="mobi"  value="<?php echo $row[3]; ?>" /></p>
  <p>邮箱:<input name="email" type="text" id="email" value="<?php echo $row[4]; ?>" /></p>
  <p>地址:<input name="addr"  type="text" id="addr"  value="<?php echo $row[5]; ?>" /></p>
  <p>
        <input type="submit" name="Submit" value="添加" />
        <input type="reset" name="Submit2" value="重写" />
  </p>
</form>

说明:其实就是把input.php复制过来修改一下了,呵呵,这里要注意的就是$sql语句,这里有个SQL的条件句,用来识别ID的,还有就是性别处理部分。checked="checked"表示单选按钮已被选中,知道这些,这部分就搞顶了。我们还要做一个edited.php页面用来发送处理修改的数据,它的功能跟post.php差不多了。呵呵,我们抓紧做吧,就快完工咯!

edited.php 文件代码:

复制内容到剪贴板

代码:

<?php
//需要执行的SQL语句(这里是修改数据功能)
$sql = "UPDATE `addr_list` SET
               
                `name`  = '$name',
                `sex`     = '$sex',
                `mobi`   = '$mobi',
                `email`   = '$email',
                `addr`    = '$addr'
               
                WHERE `addr_list`.`id` =12 ";

//调用conn.php文件,执行数据库操作               
require('conn.php');

//显示操作提示,注意$result也是conn.php里的哦
if($result)
{
        echo '恭喜,修改成功!<p>';
}
?>
[<a href="show.php">查看通讯录</a>] [<a href="input.php">继续添加</a>]

说明:这里要注意的也是$sql的SQL语句,我这里缩进处理了,方便大家看清楚,大家自己写的时候没有必要这么写了,呵呵。跟post.php八九不离十了,所以也不用多讲咯,大家测试一下吧。最后剩下del.php了,胜利就在眼前!呵呵。

del.php 文件代码:(完整版)

复制内容到剪贴板

代码:

<?php
//需要执行的SQL语句(这里是删除数据功能)
$sql = "DELETE FROM `addr_list` WHERE `id`='$id'";

//调用conn.php文件,执行数据库操作               
require('conn.php');

//显示操作提示,注意$result也是conn.php里的哦
if($result)
{
        echo '恭喜,删除成功!<p>';
}
?>
[<a href="show.php">查看通讯录</a>] [<a href="input.php">继续添加</a>]

说明:这个也是一个模子里造出来的,呵呵,很简单,就是$sql的SQL删除语句有点不同,不管怎么说,还是建议大家去学一下SQL语法,很有用处的,因为它运用的很广泛嘛。

  好了,到这里,这篇文章就全部结束啦。我就不上传源代码让大家下载咯,免得某些人跟我一样喜欢偷懒,呵呵,这招比较绝,逼着想学的人去看,有好处的了。

  那么,还是用老的闭幕式来结束吧,呵呵:

  重要说明,一定要看哦,这个只是最简单、最基础的东西,只是用来学习的,不能投入使用哦,不然出什么问题可不要怪我啊,呵呵。如果你要自己用的话,还要进行大量完善,比如加入些验证功能、优化代码之类的,还是那句话:有什么不足的地方,欢迎各位指正,让大家见笑了。

  写这篇文章最根本的目的:希望能给需要的人一些微薄的帮助。我PHP也是自学的,知道其中的辛苦,所以自己虽然很菜菜,但是也要懂得去分享,也希望每个人都能这样:共同学习、共同进步。

给我留言

Copyright © 浩然东方 保留所有权利.   Theme  Ality 07032740

用户登录