当前位置: 首页 > 图文教程 > 网络编程 > PHP > 30分钟学会用PHP写带数据库的简单通讯录

PHP
php 多线程上下文中安全写文件实现代码
PHP类的使用 实例代码讲解
用php实现让页面只能被百度gogole蜘蛛访问的方法
php 学习笔记
PHP编程过程中需要了解的this,self,parent的区别
php 操作excel文件的方法小结
使用PHP获取网络文件的实现代码
PHP 巧用数组降低程序的时间复杂度
php下将XML转换为数组
php 文件上传代码(限制jpg文件)
php 无极分类(递归)实现代码
PHP 采集获取指定网址的内容
PHP 将图片按创建时间进行分类存储的实现代码
PHP 存储文本换行实现方法
PHP 批量更新网页内容实现代码
用PHP查询搜索引擎排名位置的代码
用php实现的获取网页中的图片并保存到本地的代码
php实现首页链接查询 友情链接检查的代码
处理php自动反斜杠的函数代码
php实现的遍历文件夹下所有文件,编辑删除

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 94 ::
收藏到网摘: n/a

引用上篇文章的开场白:
  我接触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,那么就先到这里吧。还剩下两部分:修改和删除,我们下次搞定它们。看起来快,写起来就不是那么容易了,我手都快脱臼了,呵呵。

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也是自学的,知道其中的辛苦,所以自己虽然很菜菜,但是也要懂得去分享,也希望每个人都能这样:共同学习、共同进步。
  自知这种文章多如牛毛,再烂好歹也是原创,所以顺便申请了下落伍,所以……各位口下留情,小弟知错了,呵呵。