mysql 留言板_实例:PHP+MySQL开发留言板

2018.04.24,注意时间。

这次写一下使用PHP和MySQL开发留言板的方法,个人认为留言板这个实例是非常适合新手入门的,因为留言板的功能主要就是对数据库的增删改查,比较简单。

做实例之前首先要列一个大纲,根据这个大纲来写代码,写代码的过程中大纲就尽量不要大改了。这样写代码就会有一个方向,也不会代码写一半突然想到忘了写一些东西然后又回过头改代码。等到功能完成的差不多了之后,再进行测试,看看哪些地方需要改善,哪些地方不是特别友好,再改代码。这是目前敲代码所领悟到的经验,献丑了。

列一下留言板的功能:

1.发表留言

2.浏览留言

3.修改留言

4.删除留言

5.置顶留言

6.对留言点赞

7.举报留言

以上就是我要完成的功能,接下来我会根据列出的功能来写代码。

在写功能之前先来列一个数据表,我们回想一下我们平时留言时会需要哪些东西,不需要太复杂,先来个简单的就好。首先我要有一个用户名(mes_username);然后我可以使用我的用户名进行留言(mes_content);留言在显示的时候会有留言的时间(mes_time);上面还列出一些其他功能,置顶(mes_top)、点赞(mes_praise)、举报(mes_report),当然了,我们还要有一个自增主键(mes_id)。所以我们可以列出一个数据表(mes_message):

mes_id INT 无

mes_username VARCHAR(30) 无

mes_content TEXT(300) 无

mes_time TIMESTAMP CURRENT_TIMESTAMP

mes_top TINYINT 0

mes_praise TINYINT 0

mes_report TINYINT 0

建好数据表我们就可以完成功能了。

1.创建数据库连接文件(mysqli_connect.php)

代码:

header('Content-Type:text/html;charset=utf-8');

$servername = 'localhost';//服务器地址

$username = 'root';//mysql用户名

$password = 'root';//mysql密码

$sql_name = 'message';//数据库名

$link = @mysqli_connect('servername', 'username', 'password', 'sql_name') or die('connect error!');

创建好数据库连接文件,我们每次连接数据库的时候就可以直接引用文件,不用再一遍一遍的敲代码了。

2.主页面(index.php)

(1)提交留言的表单

(2)浏览已发布的留言

(3)分页功能

代码:

require ('./mysqli_connect.php');

?>

留言板

//提交留言的表单

用户名:

留言:

//分割线


//分页

$pagesize = 3;//设置每页显示的留言数量

$page = isset($_GET['page']) ? $_GET['page'] : 1 ; //判断当前的页数,如果不知道就默认是第一页

$sql = "SELECT * FROM mes_message WHERE mes_report=0 ORDER BY mes_top DESC,mes_id DESC"; //从数据库中查询留言,首先查看置顶留言,再根据id倒序查询留言

$result = mysqli_query($link, $sql); //将上一步对数据库的查询结果返回给$result

$rows_count = mysqli_num_rows($result); //将留言总条数赋值给$rowa_count

$page_count = ceil($rows_count / $pagesize); //计算留言总页数

$start = ($page-1) * $pagesize; //计算当前页数留言从哪条开始输出

$sql .= " LIMIT $start,$pagesize"; //根据上一条sql语句限制留言数量的输出

$result = mysqli_query($link, $sql); //将上一条对数据库的操作重新赋值给$result

//输出已发布的留言,并且显示删除、修改、置顶、举报、点赞等功能

while($row=mysqli_fetch_assoc($result)){

echo "

{$row['mes_id']}# {$row['mes_username']} 于 {$row['mes_time']}说:
{$row['mes_content']}";

//显示删除功能

echo '删除 |';

//显示修改功能

echo ' 修改 |';

//显示置顶功能

if($row['mes_top']){

echo ' 取消置顶 |';

} else {

echo ' 置顶 |';

}

//显示举报功能

echo ' 举报 |';

//显示点赞功能

echo ' 点赞(' . $row['mes_praise'] . ') ';

echo '

';

}

//打印页码数

for($i=1; $i<=$page_count; $i++) {

echo ''; //传值给$page

echo ' ' .$i. ' ';

echo '';

}

?>

3.发布留言功能文件(mes_insert.php)

发布留言实际上就是对数据库进行插入操作,使用insert关键字。点击index.php文件中留言表单的提交按钮,就可以跳转到这个文件。

代码:

header('Content-Type:text/html; charset=utf-8');

//连接数据库文件

require ('./mysqli_connect.php');

//接收用户提交过来的信息

$mes_username = $_POST['mes_username'];

$mes_content = $_POST['mes_content'];

//简单验证用户提交的信息

if(strlen($mes_username)>=30 || strlen($mes_username)<=4){

echo '请输入2-9个汉字之间的用户名!';

exit;

}

if(strlen($mes_content)<1){

echo '留言内容不能为空!';

exit;

}

//数据库插入语句

$sql = "INSERT INTO mes_message (mes_username, mes_content, mes_time) VALUES ('$mes_username', '$mes_content', now())";

//将上一步对数据库进行插入操作的结果返回并赋值给$result

$result = mysqli_query($link, $sql);

//如果成功跳转到主页面,失败报错

if($result){

echo '';

} else {

echo "留言失败!
";

echo mysqli_error($link);

echo '回到首页!';

}

4.删除留言功能文件(mes_delete.php)

删除留言就是对数据库进行删除操作,使用delete关键字。点击index.php文件中留言后面的“删除”超链接,就会跳转到这个文件。

代码:

header('Content-Type:text; charset=utf-8');

//连接数据库

require ('./mysqli_connect.php');

//接收从index.php传过来的mes_id

$mes_id = $_GET['mes_id'];

//对传过来的mes_id进行简单的验证

if(!is_numeric($mes_id)){

echo "id不是数字!";

exit;

}

//对数据库进行删除操作

$sql = "DELETE FROM mes_message WHERE mes_id={$mes_id}";

//将上一步对数据库进行操作的结果返回并赋值给$result

$result = mysqli_query($link,$sql);

//如果成功跳转到主页面,失败报错

if($result){

echo '';

} else {

echo '删除失败!
';

echo mysqli_error($link);

echo '回到首页!';

}

5.修改留言功能文件(mes_modify.php和mes_modify2.php)

修改留言使用update关键字,修改留言分为两个文件:当用户点击主页面的‘修改’链接的时候,跳转到第一个文件(modify.php),用户会看到一个修改表单,如果用户想要修改留言可以点击修改留言按钮;当用户点击修改留言按钮后,跳转到第二个文件(modify2.php),第二个文件就是使用sql进行修改操作。

modify.php代码:

header('Content-Type:text; charset=utf-8');

//连接数据库

require ('./mysqli_connect.php');

//接收从index.php文件传过来的mes_id

$mes_id = $_GET['mes_id'];

//通过mes_id查询用户的留言信息

$sql = "SELECT * FROM mes_message WHERE mes_id=$mes_id";

//将上一步对数据库进行查询操作的结果返回并赋值给$result

$result = mysqli_query($link, $sql);

//从结果集中取得某一行作为关联数组,并将值赋给$row

$row = mysqli_fetch_assoc($result);

?>

//修改留言表单,默认值是用户想要修改的留言

修改留言//通过"?",将mes_id的值传给modify2.php文件

用户名:

留言:

modify2.php代码:

header('Content-Type:text; charset=utf-8');

//连接数据库

require ('./mysqli_connect.php');

//接收从modify.php传过来的值

$mes_username = $_POST['mes_username'];

$mes_content = $_POST['mes_content'];

$mes_id = $_GET['mes_id'];

//对数据库进行删除操作

$sql = "UPDATE mes_message SET mes_username='$mes_username',mes_content='$mes_content' WHERE mes_id=$mes_id";

//将上一步对数据库删除操作的结果返回并赋值给$result

$result = mysqli_query($link, $sql);

//如果成功跳转到主页面,失败报错

if($result){

echo '';

} else {

echo '修改失败!
';

echo mysqli_error($link);

echo '回到首页!';

}

6.其他功能:点赞、置顶、举报(mes_action.php)

点赞、置顶、举报是额外加的功能,如果只是想要实现简单的留言板功能,这个可以忽略。

(1)点赞

我们在创建数据表的时候,添加了一个mes_praise字段,并且将它的默认值设置为"0",如果用户点击主页面中的"点赞"链接,就会跳转到mes_action.php文件,通过sql语句将默认值+1。

(2)置顶

创建数据表的时候,添加了一个mes_top字段,并且将它的默认值设置为"0",如果用户点击主页面中的"置顶"链接,就会跳转到mes_action.php文件,通过sql语句将默认值改为"1",同理,点击"取消置顶"后,会将默认值重新设置为"0"。同时修改index.php文件中的留言输出语句,就可以实现置顶功能了(上面的index.php文件是已经修改好了的)。

(3)

创建数据表的时候,添加了一个mes_report字段,并且将它的默认值设置为"0",如果用户点击主页面中的"举报"链接,就会跳转到mes_action.php文件,通过sql语句将默认值改为"1",同时设置index.php文件中的留言输出语句,就可以实现举报功能了(上面的index.php文件是已经设置好了的)。

代码:

header('Content-Type:text; charset=utf-8');

//连接数据库

require ('./mysqli_connect.php');

//接收从index.php文件传过来的值

$mes_act = $_GET['mes_act'];

/* 置顶 */

//如果接收的字符串是'settop',对留言置顶

if($mes_act == 'settop'){

//接收mes_id

$mes_id = $_GET['mes_id'];

//将mes_top的值修改为"1"

$sql = "UPDATE mes_message SET mes_top=1 WHERE mes_id=$mes_id";

//将上一步的操作结果返回

$result = mysqli_query($link, $sql);

//如果成功跳转到主页,失败报错

if($result){

header('Location: index.php');

} else {

echo '置顶失败!
';

echo mysqli_error($link).'
';

echo '回到首页!';

}

}

/* 取消置顶 */

//如果接收的字符串是'canceltop',对留言取消置顶

if($mes_act == 'canceltop'){

//接收mes_id

$mes_id = $_GET['mes_id'];

//将mes_top的值设置为"0"

$sql = "UPDATE mes_message SET mes_top=0 WHERE mes_id=$mes_id";

//将上一步的操作结果返回

$result = mysqli_query($link, $sql);

//如果成功跳转到主页,失败报错

if($result){

header('Location: index.php');

} else {

echo '取消置顶失败!
';

echo mysqli_error($link).'
';

echo '回到首页!';

}

}

/* 举报 */

//如果接收的字符串是'report',对留言举报

if($mes_act == 'report'){

//接收mes_id

$mes_id = $_GET['mes_id'];

//将mes_report设置为"1"

$sql = "UPDATE mes_message SET mes_report=1 WHERE mes_id=$mes_id";

//将上一步的操作结果返回

$result = mysqli_query($link, $sql);

//如果成功跳转到首页,失败报错

if($result){

echo '';

} else {

echo '举报失败!
';

echo mysqli_error($link).'
';

echo '回到首页!';

}

}

/* 点赞 */

//如果接收的字符串是'praise',对留言点赞

if($mes_act == 'praise'){

//接收mes_id

$mes_id = $_GET['mes_id'];

//将mes_praise的值+1

$sql = "UPDATE mes_message SET mes_praise=mes_praise+1 WHERE mes_id=$mes_id";

//将上一步的操作结果返回

$result = mysqli_query($link, $sql);

//如果成功跳转到首页,失败报错

if($result){

header('Location: index.php');

} else {

echo '点赞失败!
';

echo mysqli_error($link).'
';

echo '回到首页!';

}

}

以上就是留言板的所有代码。

还有一个至关重要的知识就是"?传值",不会的同学可以百度,以上几乎所有功能都用到了这个知识点。

以上代码都是运行成功后才贴的,如果有错误可能是复制粘贴出现失误,欢迎指正。——佛系程序员

你可能感兴趣的:(mysql,留言板)