微型博客系统的开发(php+mysql)技术细节

在学习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基本语法,能顺利的开发出相关的简单系统,平日多练,水平才会不断提高,逐步进阶。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,930评论 2 89
  • MySQL技术内幕:InnoDB存储引擎(第2版) 姜承尧 第1章 MySQL体系结构和存储引擎 >> 在上述例子...
    沉默剑士阅读 7,417评论 0 16
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,811评论 5 116
  • 今天数学老师带我们看了海底世界,里面有好多种鱼。还做了那一页的题。语文课上写了生字表中的字。科学老师讲了身...
    韩策阅读 147评论 0 0
  • 如果有来生,要做一棵树, 站成永恒。没有悲欢的姿势, 一半在尘土里安详, 一半在风里飞扬; 一半洒落荫凉, 一半沐...
    无梦也无冬朝阅读 5,629评论 3 14