这是一个模仿QQ空间里面的留言板,所写的一个简单留言板。运用的知识有PHP,mysql,还有一些简单的编程思想,这个里面没有管理员的功能。希望和大家一起交流一下。
首先建立一个Message的文件,里面有一个Public文件夹,用来存放CSS,JS,和Image。再就是核心的PHP文件。
一.public文件夹里面的CSS文件,JS文件。
1.message.css文件代码如下:
/*
留言板的css样式设计
*/
/*
Created on : 2015-8-20, 11:04:46
Author : 鑫鑫
*/
.div1{
margin: 10px 200px;
border:2px solid orange;
background: palegoldenrod;
}
.div2{
background-image:url("../public/51.png");
height: 250px;
}
.div3{
background: palegoldenrod;
height: 60px;
border-top:1px solid orange;
border-bottom:1px solid orange;
}
.div4{
background: palegoldenrod;
height: 100px;
border-bottom:1px solid orange;
}
.div5{
height: 1075px;
}
.div6{
background: palegoldenrod;
height: 40px;
}
.div7{
border-top:0.3px solid olive;
border-bottom:0.3px solid olive;
height: 100px;
}
img{
height: 200px;
}
span{
font-size: 18px;
font-weight: 700px;
}
#span1{
text-align: center;
}
#span2{
border:1px solid orange;
}
#span3{
font-size: 15px;
font-weight: 500px;
}
2.JS文件代码如下:
/*
留言板js文件
*/
function dte() {
if (window.confirm("删除操作不可恢复,您确认继续操作?") == true) {
return true;
} else {
return false;
}
}
二.login.php留言板首页面的显示的,代码如下:
Message board add($info); } if (!empty($_GETT['num'])) { $info = $_GET['num']; $user = new handle(); $user->delete($info); } ?>
三.sql_server.class.php封装一个对数据库处理的类。核心处理函数是对数据进行分页处理,代码如下:
四.handle.class.php 封装对留言信息的操作类(增加,删除,显示等处理)代码如下:mysqli = new mysqli($this->host, $this->user, $this->password, $this->db); if ($this->mysqli->connect_error) { die("连接失败" . $this->mysqli->conecct_error); } } //设置编码 function set_character() { $this->mysqli->query("set names utf8"); } //执行sql语句 function execute_dql($sql) { $res = $this->mysqli->query($sql) or die("操作失败" . $this->mysqli->error); return $res; } //返回一个数组 function execute_dqls($sql) { $arr = array(); $res = $this->mysqli->query($sql) or die("操作失败" . $this->mysqli->error); $i = 0; while ($row = $res->fetch_row()) { $arr[$i++] = $row; } $res->free(); return $arr; } //分页操作函数 function show_page() { //创建一个handle类对象 $handle = new handle(); $sql = "select * from m_liuyan"; $res = $this->mysqli->query($sql) or die("操作失败" . $this->mysqli->error); $count = $res->num_rows; //总的留言数 $page_size = 10; //每页显示的留言数 $page_count = ceil($count / $page_size); //总的页数 $page_len = 3; //显示的总的页码数 $init = 1; $max_p = $page_count; //最大的页码 $pages = $page_count; //总页数 $space = ' '; //判断当前的页码 if (empty($_GET['page']) || $_GET['page'] < 0) { $page = 1; } else { $page = $_GET['page']; } //对最后一页和其他页做两个不同情况来处理 if ($page == $pages) { $offset = 0; $max_offset = $count - ($pages - 1) * $page_size; $sql1 = "select * from m_liuyan limit $offset,$max_offset"; } elseif ($page == 1) { $offset = $count - $page_size; //每一页开始的留言坐标 $sql1 = "select * from m_liuyan limit $offset,$page_size"; //每一页留言的开始坐标与末坐标的控制 } else { $offset = $page_size * ($pages - $page) - 1; //每一页开始的留言坐标 $sql1 = "select * from m_liuyan limit $offset,$page_size"; //每一页留言的开始坐标与末坐标的控制 } $result = $this->mysqli->query($sql1) or die("操作失败" . $this->mysqli->error); $i = 0; //把查询的结果都放在一数组中去,然后再次获取即可 while ($row = $result->fetch_row()) { $arr[$i++] = $row; //把获取的记录存放在$arr数组中去 } $res->free(); $num = count($arr); for ($i = $num - 1; $i >= 0; $i--) { $nums = rand(0, 4); switch ($nums) { case 0:$color = 'red'; break; case 1:$color = 'blue'; break; case 2:$color = 'black'; break; case 3:$color = 'green'; break; case 4:$color = 'purple'; break; default: break; } echo '
'; $num = $arr[$i][3]; $res1 = $handle->get_nickname($num); echo ' ' . $res1[0][0] . ' ◀卍▶ 第' . $arr[$i][0] . '楼'; echo ' ' . @$arr[$i][1] . '' . $space . '删除'; echo ''; } //对上下爷与首页,尾页进行操作 $key = " 批量管理" . " 第" . $page . "页/共" . $pages . "页 "; if ($page != 1) { //当前页面不是首页的时候显示首页与上一页的超链接 $key.="首页 "; $key.="上一页 "; } else { //当前页面是首页的时候,不显示首页与上一页的超链接 $key.="首页 "; $key.="上一页 "; } //对当前数字页码显示效果的处理 //对当前数字页码显示效果的处理 $num = min($count, $page_len); if ($page > $count || $page < 1) { //处理非法页号的情况 return; } $end = $page + floor($num / 2) <= $count ? $page + floor($num / 2) : $count; //计算结束页码 $start = $end - $num + 1; //计算开始页码 if ($start < 1) { //处理开始页号小于1的情况 $end -= $start - 1; $start = 1; } for ($i = $start; $i <= $end; $i++) { //输出分页条,请自行添加链接样式 if ($i == $page) { $key.='' . $i . ''; } else { $url = $_SERVER['PHP_SELF']; $key.="" . "{$i}" . " "; } } if ($page != $pages) { //当前页面不是最后一页的时候,显示下一页和尾页的超链接 //$_SERVER['PHP_SELF']是当前页面的路径 $key.=" 下一页 "; $key.="尾页"; } else { //当前页面是最后一页的时候,则下一页和尾页的超链接没有作用 $key.=" 下一页 "; $key.="尾页"; } return $key; } //关闭连接 function close_connect() { if (!empty($this->mysqli)) { $this->mysqli->close(); } } }
五.数据的设计:execute_dql($sql); $sql_ser->close_connect(); } //删除留言 function delete($info) { $sql = "delete from m_liuyan where l_id=$info"; $sql_ser = new sql_server(); $sql_ser->execute_dql($sql); $sql_ser->close_connect(); } //显示留言 function show() { $user = new sql_server(); $sql = "select * from m_liuyan"; $arr = $user->execute_dqls($sql); return $arr; } //显示印象 function show_impression() { $user = new sql_server(); $sql = "select * from m_impression"; $arr = $user->execute_dqls($sql); for ($i = 0; $i <= count($arr) - 1; $i++) { echo ' '; echo $arr[$i][1]; echo ""; } } //获取留言人的昵称函数封装 function get_nickname($num) { $user = new sql_server(); $sql = "select u_nickname from m_user where u_id=$num"; $arr = $user->execute_dqls($sql); return $arr; } }
创建一个message数据库,建立三个数据表m_impression,m_liuyan,m_user。
1.m_impression 好友印象表
DROP TABLE IF EXISTS `m_impression`; CREATE TABLE `m_impression` ( `m_id` int(11) NOT NULL, `m_content` varchar(126) NOT NULL, PRIMARY KEY (`m_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.m_liuyan 留言表
DROP TABLE IF EXISTS `m_liuyan`; CREATE TABLE `m_liuyan` ( `l_id` int(11) NOT NULL AUTO_INCREMENT, `l_content` varchar(256) NOT NULL, `l_time` datetime NOT NULL, `l_user` int(11) DEFAULT NULL, PRIMARY KEY (`l_id`), KEY `l_user` (`l_user`), CONSTRAINT `m_liuyan_ibfk_1` FOREIGN KEY (`l_user`) REFERENCES `m_user` (`u_id`) ) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8;
3.m_user 留言好友表
六.调试成功后的实体图DROP TABLE IF EXISTS `m_user`; CREATE TABLE `m_user` ( `u_id` int(11) NOT NULL, `u_name` varchar(20) NOT NULL, `u_nickname` varchar(50) NOT NULL, PRIMARY KEY (`u_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;