MySQL 之留言板的功能的实现

MySQL 之留言板的功能的实现


实验环境

  • CentOS -LAMP 环境
  • Chrome
  • xshell

0x01 创建数据表

实现的功能:发布留言、显示留言列表、修改留言、删除留言

1.创建一个数据库

名为 fengzilin

MariaDB [(none)]> create database fengzilin;

image-20210305091942256

2.选择数据库

MariaDB [(none)]> use fengzilin;

image-20210305092028442

3.创建留言表

字段

创建一个数据表名为: guestbook

字段(Field)类型(Type)是否为空(NULL)主键(primary Key)默认值(Default)自动增长(auto_increment)
idint(10) (整型)NOPRINULLauto_increment
txtTitle (留言标题)varchar(100) (字符串)yesNULL
txtContent (内容)varchar(500)yesNULL
addtime (留言时间)int(10)yes0
null|not null     是否为空
primary key       主键,主键的值不能重复,不能为空,每个表必须只能有一个主键
default:          默认值
auto_increment    自动增长,默认从1开始,每次递增1

语句:

create table guestbook(
     id int(10) auto_increment primary key,
     txtTitle varchar(100),
     txtContent varchar(500),
     addtime int(10)
     default 0) DEFAULT CHARSET=utf8;

image-20210305110321553

MariaDB [fengzilin]> desc guestbook;

image-20210305110652474

0x02 创建留言页面

新建guestbook.php 文件

新建一个终端

[root@localhost ~]# vim guestbook.php
<html>
<head>
	<meta charset="UTF-8">
	<title>留言板</title>
</head>
<h2 align="center">留言板</h2>
	<hr>
<font color="#6A6A6A">笔者:fengzilin</font>	
<body>
<!-- 此部分是显示列表,用表格的形式体现出来,暂时用静态的文字占位,后面要从数据表里读出来-->
	<table width="50%" align="center" border="1" style="margin-bottom: 15px;" rules="all">
		<tr>
			<td>标题</td>
		</tr>
		<tr>
			<td>留言内容</td>
		</tr>
		</talbe>
	<table width="50%" align="center" border="1" style="margin-bottom: 15px;" rules="all">
		<tr>
			<td>标题</td>
		</tr>
		<tr>
			<td>留言内容</td>
		</tr>
		</talbe>

	<table width="50%" align="center" border="1" style="margin-bottom: 15px;" rules="all">
		<tr>
			<td>标题</td>
		</tr>
		<tr>
			<td>留言内容</td>
		</tr>
		</talbe>
<!--此部分是留表单,用于填写留言并进行提交的-->
	<table width="50%" align="center" border="1" rules="all">
		<form action="save_add.php" method="post">
			<tr>
				<td>标题</td>
				<td><input type="text" name="txtTitle" value="" /></td>
			</tr>
				<td>留言内容</td>
				<td><textarea name="txtContent" cols="100" rows="10"></textarea></td>
			</tr>
			<tr>
				<td></td>
				<td><input type="submit" name="submit" value="点击提交" /></td>
			</tr>
		</form>
	</table>
</body>
</html>

效果图

访问 http://192.168.37.164/guestbook.php

image-20210305123113523

0x03 留言功能实现

修改guestbook.php

[root@localhost ~]# vim guestbook.php
<form action="save_add.php" method="post">   //将留言提交到服务器的当前目录下save_add.php 将这个文件进行处理

image-20210305143652681

新创建文件 save_add.php

[root@localhost ~]# vim save_add.php

连接数据库代码

<?php
$result = mysql_connect('localhost','root','123456');
if(!$result){
	echo "数据库连接失败";
}
mysql_query("set names 'utf8'");
$select_db = mysql_select_db("fengzilin");
if (!$select_db) {
	echo "不能连接到此数据库:\n" .  mysql_error();
}

if(!empty($_POST['submit']) ){
	$txtTitle = $_POST['txtTitle'];
	$txtContent = $_POST['txtContent'];
	$sql = "insert into guestbook(txtTitle,txtContent,addtime) values('".$txtTitle."','".$txtContent."',".time().")";
	$result = mysql_query($sql);
	if($result){
		echo "<script>alert('留言成功!');location.href='guestbook.php';</script>";
	}else{
		echo "<script>alert('留言失败!请重试!');location.href='guestbook.php';</script>";
	}
} 

访问:http://192.168.37.164/guestbook.php

image-20210305143122996

image-20210305143132811

查询数据库

看到我们提交的内容,证明添加成功

MariaDB [fengzilin]> select * from guestbook;

image-20210305144538513

0x04 显示留言功能

修改 guestbook.php 文件

[root@localhost html]# vim guestbook.php

在源码顶部添加

<?php
$result = mysql_connect('localhost', 'root', '123456');
if (!$result) {
	echo "数据库连接失败";
}
mysql_query("set names 'utf8'");
$select_db = mysql_select_db("fengzilin");
if (!$select_db) {
	echo "不能连接到此数据库:\n" .  mysql_error();
}
?> 

image-20210305145103470

将 22-46 行代码替换

image-20210305145428971

替换成如下代码

	<?php
	$sql = "select id,txtTitle,txtContent,addtime from guestbook order by addtime desc";
	$result = mysql_query($sql);
	while ($row = mysql_fetch_array($result)) {
	?>
		<table width="50%" align="center" border="1" style="margin-bottom:15px;" rules="all">
			<tr>
				<td><?php echo $row['txtTitle']; ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo date('Y-m-d H:i:s', $row['addtime']); ?></td>
			</tr>
			<tr>
				<td><?php echo $row['txtContent']; ?></td>
			</tr>
		</table>
	<?php } ?>

访问 http://192.168.37.164/guestbook.php

image-20210305150347021

0x05 修改留言

1.增加修改留言链接

修改 guestbook.php 文件

[root@localhost html]# vim guestbook.php

修改第31行

<td><?php echo $row['txtTitle']; ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo date('Y-m-d H:i:s', $row['addtime']); ?></td>
<td><?php echo $row['txtTitle']; ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo date('Y-m-d H:i:s', $row['addtime']); ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<a href="edit.php?id=<?php echo $row['id'];?>">修改</a>]</td>

image-20210305155743999

说明:

edit.php?id=<?php echo $row['id'];?>

其中 edit.php 是修改留言的页面,id是要修改留言的ID,通过此 ID 可以在修改页面将要修改的留言数据显示出来,同时也作为留言修改保存的条件

2.创建留言修改页面

[root@localhost html]# vim edit.php
<html>
	<head>
		<meta charset="utf-8"/>
		<title>留言板-修改留言</title>
	</head>
	<body>
		<table width="50%" align="center" border="1" rules="all">
			<form action="" method="POST">
				<tr>
					<td>标题</td>
					<td><input type="text" name="txtTitle" value=""/></td>
				</tr>
				<tr>
					<td>留言内容</td>
					<td><textarea name="txtContent" cols="100" rows="6"></textarea></td>
				</tr>
				<tr>
					<td></td>
					<td><input type="submit" name="submit" value="提交" /></td>
				</tr>
			</form>
		</table>
	</body>
</html>

点击 某条留言的 修改 链接,显示如下

image-20210305162137220

修改 edit.php 设置留言修改处理程序

[root@localhost html]# vim edit.php
<form action="save_edit.php" method="POST">

action=“save_edit.php” 将留言提交到服务端当前目录下 save_edit.php 这个文件进行处理,文件名可以自己定义。

image-20210305161733300

当我们点击某条留言的 修改 链接 看,首先让留言标题和内容显示在

image-20210305162437616

这个表单中,修改后,点击提交,此条留言会被修改

在浏览器访问 http://192.168.37.164/guestbook.php

image-20210305162607827

点击第一条留言的 修改,发现地址栏 URL 多了个参数 ?id=2,点击不同留言的修改链接,传递的 id值是不一样的,因为每条留言的 id 是唯一且不一样的,但是下面的表单没有显示出留言标题和内容。

我们需要修改下代码,当点击修改链接的时候,让留言显示在下面表单里

修改 edit.php

在头部插入以下代码

[root@localhost html]# vim edit.php
<?php
 //插入数据库连接代码
$result = mysql_connect('localhost','root','123456');
if(!$result){
echo "数据库连接失败";
}
mysql_query("set names 'utf8'");
$select_db = mysql_select_db("fengzilin");
if (!$select_db) {
    echo "不能连接到此数据库:\n" .  mysql_error();
}
//插入 获取留言内容代码
$id = $_GET['id'];
$txtTitle = "";
$txtContent = "";
if(isset($id)){
	$sql = "select * from guestbook where id=$id";
	$result = mysql_query($sql);
	$data = mysql_fetch_array($result);
	if($data){ 
		$txtTitle = $data['txtTitle'];
		$txtContent = $data['txtContent'];
	}
}
?>

添加显示内容部分

修改 32-43行代码为

				<tr>
					<td>标题</td>
					<td><input type="text" name="txtTitle" value="<?php echo $txtTitle; ?>"/></td>
				</tr>
				<tr>
					<td>留言内容</td>
					<td><textarea name="txtContent" cols="100" rows="6"><?php echo $txtContent; ?></textarea></td>
				</tr>
				<tr>
					<td><input type="hidden" name="id" value="<?php echo $id; ?>" /></td>
					<td><input type="submit" name="submit" value="提交" /></td>
				</tr>

说明:

<?php echo $txtTitle;?>  //要显示的留言标题
<?php echo $txtContent; ?> //要显示的留言内容
<input type="hidden" name="id" value="<?php echo $id; ?>" />       //是一个隐藏域,在修改完留言,点击提交的时候,隐藏域中的 id 值会被提交到服务端,通过 id 作为条件可以实现对提交的留言内容进行保存,也就是实现修改 id 为隐藏域中的值的留言内容。 

image-20210305164549221

保存并退出,打开浏览器

image-20210305163501902

内容已经显示在表单中。

当修改完留言,点击 提交 按钮的时候将留言保存到数据表中

3.新创建 文件 save_edit.php

<?php
//连接数据库代码
$result = mysql_connect('localhost','root','123456');
if(!$result){
echo "数据库连接失败";
}
mysql_query("set names 'utf8'");
$select_db = mysql_select_db("fengzilin");
if (!$select_db) {
    echo "不能连接到此数据库:\n" .  mysql_error();
}
//保存修改留言的代码
if(!empty($_POST['submit'])){
	$txtTitle = $_POST['txtTitle'];
	$txtContent=$_POST['txtContent'];
	$id=$_POST['id'];
	$sql = "update guestbook set txtTitle='".$txtTitle."',txtContent='".$txtContent."' where id=$id";			
	$result = mysql_query($sql);
	if($result){
        	echo "<script>alert('留言修改成功!');location.href='guestbook.php';</script>";
	}else{
		echo "<script>alert('留言修改失败!请重试!');location.href='edit.php?id=$id;'</script>";
      	}
} 
?>

保存并退出

访问 http://192.168.37.164/guestbook.php

image-20210305165603868

修改内容

image-20210305165632430

image-20210305165641751

修改成功

image-20210305165655878

0x06 删除留言

增加删除留言链接

修改 guestbook.php文件

修改 31行文件

[root@localhost html]# vim guestbook.php
<td><?php echo $row['txtTitle']; ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo date('Y-m-d H:i:s', $row['addtime']); ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<a href="edit.php?id=<?php echo $row['id'];?>">修改</a>]</td>

修改为

<td><?php echo $row['txtTitle']; ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo date('Y-m-d H:i:s', $row['addtime']); ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<a href="edit.php?id=<?php echo $row['id'];?>">修改</a>][<a href="javascript:if(confirm('是否确认删除')){location.href='del.php?id=<?php echo $row['id'];?>'}">删除</a>]</td>

image-20210305171517020

说明

del.php? id=<?php echo $row['id'];?>  //点击删除链接,跳转到 del.php 文件根据通过 GET 方式传递的参数 id 进行删除留言操作。 新创建文件 del.php 

返回浏览器

image-20210305170230663

新建 del.php 文件

[root@localhost html]# vim del.php
<?php
//连接数据库
$result = mysql_connect('localhost','root','123456');
if(!$result){
echo "数据库连接失败";
}
mysql_query("set names 'utf8'");
$select_db = mysql_select_db("fengzilin");
if (!$select_db) {
    echo "不能连接到此数据库:\n" .  mysql_error();
}
//加入处理删除留言的代码
$id=$_GET['id'];
if(isset($id)){
	$sql = "delete from guestbook where id=$id";
	$result = mysql_query($sql);
	if($result){
             echo "<script>alert('留言删除成功!');location.href='guestbook.php';</script>";
	}else{
	     echo "<script>alert('留言删除失败!');location.href='guestbook.php';</script>";
	}
} 
?>

保存退出

浏览器访问 http://192.168.37.164/guestbook.php

image-20210305170637055

二次确认删除

image-20210305171417663

删除留言

image-20210305170730871

留言没了

image-20210305170749602

0x07 总结

本章学习了,留言板的基本功能,从创建、到更改、到删除、并且和数据库交互,实现了一个简单的web交互网站

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用 JSP 和 MySQL 实现留言板功能,需要完成以下步骤: 1. 创建数据库和数据MySQL创建一个数据库和一个数据,用于存储留言信息。示例 SQL 语句如下: ```sql CREATE DATABASE message_board; USE message_board; CREATE TABLE message ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL, content TEXT NOT NULL, create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ); ``` 2. 编写 JSP 页面 创建一个 JSP 页面,用于显示留言和添加留言。示例代码如下: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>留言板</title> </head> <body> <h1>留言板</h1> <h2>添加留言</h2> <form method="post" action="add_message.jsp"> <p> 姓名:<input type="text" name="name"> </p> <p> 邮箱:<input type="text" name="email"> </p> <p> 内容:<textarea name="content"></textarea> </p> <p> <input type="submit" value="提交"> </p> </form> <h2>留言</h2> <% // 从数据库中查询留言 String url = "jdbc:mysql://localhost:3306/message_board"; String username = "root"; String password = "123456"; Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, username, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM message ORDER BY create_time DESC"); // 显示留言 while (rs.next()) { out.println("<p>"); out.println("姓名:" + rs.getString("name") + "<br>"); out.println("邮箱:" + rs.getString("email") + "<br>"); out.println("内容:" + rs.getString("content") + "<br>"); out.println("时间:" + rs.getTimestamp("create_time") + "<br>"); out.println("</p>"); } // 关闭数据库连接 rs.close(); stmt.close(); conn.close(); %> </body> </html> ``` 在上面的代码中,使用 JSP 内置对象 `out` 显示留言和添加留言单。同时,使用 JDBC 连接数据库,查询留言并将查询结果显示在页面上。 3. 编写添加留言的 JSP 页面 创建一个 JSP 页面,用于处理添加留言的请求。示例代码如下: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% // 获取单参数 String name = request.getParameter("name"); String email = request.getParameter("email"); String content = request.getParameter("content"); // 将留言信息插入到数据库中 String url = "jdbc:mysql://localhost:3306/message_board"; String username = "root"; String password = "123456"; Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, username, password); PreparedStatement pstmt = conn.prepareStatement("INSERT INTO message (name, email, content) VALUES (?, ?, ?)"); pstmt.setString(1, name); pstmt.setString(2, email); pstmt.setString(3, content); pstmt.executeUpdate(); pstmt.close(); conn.close(); // 跳转回留言页面 response.sendRedirect("message_board.jsp"); %> ``` 在上面的代码中,获取单提交的参数,然后使用 JDBC 将留言信息插入到数据库中。最后,使用 `response.sendRedirect()` 方法跳转回留言页面。 完成上述步骤后,就可以在浏览器中访问留言板页面,实现留言板功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值