微型博客系统的开发(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基本语法,能顺利的开发出相关的简单系统,平日多练,水平才会不断提高,逐步进阶。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

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

友情链接更多精彩内容