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文件用户名:
留言:<?php echo $row['mes_content'] ?>
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 '回到首页!';
}
}
以上就是留言板的所有代码。
还有一个至关重要的知识就是"?传值",不会的同学可以百度,以上几乎所有功能都用到了这个知识点。
以上代码都是运行成功后才贴的,如果有错误可能是复制粘贴出现失误,欢迎指正。——佛系程序员