在学习php的时候,成功开发一个简单的,如留言板之类的系统,常常作为php初级入门的标志,鉴于此,作为一个php初级菜鸟,同样开发了一个微型博客系统,下面将各项技术细节分享给大家,以供学习交流。
一、系统开发思路
微型博客系统的开发,不外乎php配合mysql来实现增删改查的功能,在正式分解技术细节前,先来看一下,开发系统前的思维导图:
在本地搭建Apache、php运行环境、mysql数据库,数据库为"weibo",数据表为"news"。
二、系统开发各项目介绍
通过上图,我们发现,该系统的开发主要实现以下几个模块:首页列表页index.php,添加博文页add.php,删除博文页del.php,修改博文页edit.php,博文内容页view.php,共五个模块(页面),下面来做每个页面的技术细节分解。
1.公共模块(页面)conn.php
以上五个页面的开发,都需要进行对mysql数据库的连接操作,因此,这段代码我们可以直接写进一个公共页面conn.php,以供调用,代码如下:
<?php
@mysql_connect("localhost:3306","数据库用户名","密码")or die("mysql连接失败");
@mysql_select_db("weibo")or die("db连接失败");
/*@mysql_set_charset("gbk");*/
mysql_query("set names 'gbk'");
?>
注解:
- 上边用到了mysql及具体数据库的连接,分别用到了mysql_connect()、mysql_select_db()这两个函数,分别用于连接mysql、数据库weibo。
- mysql_set_charset()用于指定数据库编码,mysql_query是数据库sql语句执行函数,可直接在括号内写sql语句。
- 值得注意的是"@"符号,它用于屏蔽mysql报错时的提示,避免用户体验不友好及安全性方面的考虑;
- die(),该函数用于数据库连接失败时给与错误提示。
2.添加博文页add.php
向mysql数据库添加记录的功能页,插入sql语句是该页面的主体语句,具体代码如下:
<?php
include("conn.php");
if(!empty($_POST['sub'])){
$title=$_POST['title'];
$con=$_POST['con'];
$sql="insert into `news` (`id`,`title`,`dates`,`contents`,`hits`) values (null,'$title',now(),'$con','0')";
mysql_query($sql);
echo "<script>alert('添加成功');location.href='index.php';</script>"
}
?>
<div class="con">
<form action="add.php" method="post">
标题 <input type="text" name="title"><br/>
内容 <textarea rows="5" cols="50" name="con"></textarea><br/>
<input type="submit" name="sub" value="发表">
</form>
</div>
注解:
- inclucde("conn.php"),调用指定文件;
- empty(),判断值是否为空;
- $_POST[],获取表单post提交方式的值;
- insert into `表名` (`字段1`,`字段2`,`字段3`,`字段4`,...) values ('值1','值2','值3','值4',...),sql插入语句;
- location.href="",js页面跳转
3.首页index.php
首页为博文列表页,主要实现从mysql数据库提取数据的功能,查询sql语句是该页面的主题代码,此外,还有搜索功能的实现,具体代码如下:
//导航部分
<div class="nav">
<button><a href="add.php">发博文</a></button>
<form action="" method="get">
<input type="text" name="keys" />
<input type="submit" name="subs" value="搜索"/>
</form>
</div>
//php代码主体
<?php
include("conn.php");
if(!empty($_GET['keys'])){
$w=" `title` like '%".$_GET['keys']."%'";
}else{$w=1;}
$sql="select * from `news` where $w order by id desc limit 10";
$query=mysql_query($sql);
while(mysql_fetch_array($query)){
?>
//页面html主体
<div class="main">
<h1>
<a href="view.php?id=<?php $rs['id'] ?>"><?php echo $rs['title'] ?></a>
</h1>
<p><?php echo $rs['contents'] ?></p>
<span><?php echo $rs['dates'] ?></span>
<p class="oper">
<a href="edit.php?id=<?php echo $rs['id'] ?>">编辑</a>
<a href="del.php?del=<?php echo $rs['id'] ?>">删除</a>
</p>
</div>
<?php
} // 循环while下括号
?>
注解:
- select * from `表名` [where] [order] [limit],sql查询语句;
- $_GET[],表单get提交方式,不同于post,适用于查询,运行效率较高,但安全性较差;
- mysql_fetch_array(),将数据库资源类型转换为数组。
4.删除博文页del.php
删除博文页核心代码为,删除sql语句,PHP代码如下:
<?php
include("conn.php");
if(!empty($_GET['del'])){
$d=$_GET['del'];
$sql="delete from `news` where `id`='$d'";
mysql_query($sql);
echo "<script>alert('删除成功');location.href='index.php';</script>";
}
?>
注解:
- delete from `表名` [where] ...,删除sql语句;
5.修改博文页面edit.php
修改博文页面核心代码为,修改sql语句,代码如下:
<?php
include("conn.php");
//get从index.php来的id参数
if(!empty($_GET['id'])){
$id=$_GET['id'];
$sql="select * from `news` where `id`='$id'";
$query=mysql_query($sql);
$rs=mysql_fetch_array($query);
}
//POST从本页面来的隐藏id
if(!empty($_POST['hid'])){
$title=$_POST['title'];
$con=$_POST['contents'];
$hid=$_POST['hid'];
$sql="update `news` set `title`='$title',`contents`='$con' where `id`='$hid' limit 1";
mysql_query($sql);
echo "<script>alert('更新成功');location.href='index.php';</script>"
}
?>
<div class="con">
<form action="edit.php" method="post">
<input type="hidden" name="hid" value="<?php echo $rs['id'] ?>">
标题<input type="text" name="title" value="<?php echo $rs['title'] ?>"><br/>
内容<textarea rows="5" cols="50" name="con"><?php echo $rs['contents'] ?></textarea><br/>
<input type="submit" name="sub" value="发表">
</form>
</div>
注解:
- 更新指定id的数据,需要获取对应指定id,因此需要设置隐藏id以供调取
6.博文内容页view.php
博文内容页核心代码为sql查询语句,另外还有点击量功能的实现。具体代码如下:
//导航部分
<div class="nav">
<button><a href="index.php">回到主页</a></button>
</div>
//php代码主体
<?php
include("conn.php");
if(!empty($_GET['id'])){
$sql="select * from `news` where `id`='".$_GET['id']."'";
$query=mysql_query($sql);
$rs=mysql_fetch_array($query);
$sqlup="update `news` set hits=hits+1 where `id`='".$_GET['id']."'";
mysql_query($sqlup);
}
?>
//页面html主体
<div class="main">
<h1><?php echo $rs['title'] ?></h1>
<span><?php echo $rs['dates'] ?></span>
<span>点击量:<?php echo $rs['hits'] ?></span>
<hr>
<p>
<?php echo $rs['contents'] ?>
</p>
</div>```
注解:
- 点击量的实现,可在phpmyadmin设置hits字段,利用update语句,做hits=hits+1,在正文中直接调用提取即可。
以上为整个微型博客系统基本功能的实现,作为php的菜鸟,一定要稳扎稳打,巩固好基础,达到熟练编写增删改查,及php基本语法,能顺利的开发出相关的简单系统,平日多练,水平才会不断提高,逐步进阶。
网友评论
代码的运行都需要环境的支持,mysql_connect()函数好像现在5.6以上的php都不支持了吧。
这做法很容易有SQL注入, 请使用Prepared Statement