开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

首页   >   博客   >   aiw-520

空间留言吧 php+mysql留言板(模仿qq空间留言板)

2017-1-12 17:18
标签:javascript mysql php
0 个评论 | 阅读 83 | 收藏 | 举报

空间留言吧

   这是一个模仿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; } } </pre><p></p><p>二.login.php留言板首页面的显示的,代码如下:</p><p></p><pre name="code" class="php"><pre name="code" class="php"><!-- 留言板的主页面 --> <?php require_once 'handle.class.php'; ?> <html> <head> <title>Message board</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <link href="./public/message.css" rel="stylesheet" type="text/css"/> <script language='javascript' type='text/javascript' src="./public/message.js"></script> </head> <body> <?php require_once 'handle.class.php'; header("Content-type:text/html;charset=utf-8"); if (!empty($_POST['liuyan'])) { $info = $_POST['liuyan']; $user = new handle(); $user->add($info); } if (!empty($_GETT['num'])) { $info = $_GET['num']; $user = new handle(); $user->delete($info); } ?> <div class="div1"> <form action="login.php" method="post"> <span >主人寄语</span></br> <div class="div2"> </div> <div class="div3"><span>好友印象</span></br> <?php require_once 'handle.class.php'; header("Content-type:text/html;charset=utf-8"); $user = new handle(); $user->show_impression(); ?> </div> <div class="div4"> <span>发表留言</span></br> <textarea name="liuyan" rows="2" cols="100"></textarea> <input type="submit" value="发表"></input> </div> <div class="div5"> <span>留言</span> <?php require_once 'sql_server.class.php'; header("Content-type:text/html;charset=utf-8"); $user = new sql_server(); echo $user->show_page(); ?> </div> </form> </div> </body> </html>

三.sql_server.class.php封装一个对数据库处理的类。核心处理函数是对数据进行分页处理,代码如下: <?php /* 封装一个对数据库操作的类 */ require_once 'handle.class.php'; class sql_server { private $mysqli; private $host = "localhost:3306"; private $user = "root"; private $password = ""; private $db = "message"; function __construct() { $this->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 '<div class="div7"><font color="' . $color . '">'; $num = $arr[$i][3]; $res1 = $handle->get_nickname($num); echo '   <span>' . $res1[0][0] . '</span>  ◀卍▶  <span>第' . $arr[$i][0] . '楼</span></br></br></br>'; echo '     ' . @$arr[$i][1] . '' . $space . '<span id="span3"><a href="controller.php?num=' . $arr[$i][0] . '" onclick="return dte()">删除</a></span>'; echo '</font></div>'; } //对上下爷与首页,尾页进行操作 $key = "  <font size='3px'><b>批量管理</b></font></br>" . "                    <span>第" . $page . "页/共" . $pages . "页</span>   "; if ($page != 1) { //当前页面不是首页的时候显示首页与上一页的超链接 $key.="<a href=\"" . $_SERVER['PHP_SELF'] . "?page=1\">首页</a>   "; $key.="<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . ($page - 1) . "\">上一页</a>   "; } 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.='<span>' . $i . '</span>'; } else { $url = $_SERVER['PHP_SELF']; $key.="<a href='{$url}?page=" . $i . "'>" . "{$i}" . "</a>  "; } } if ($page != $pages) { //当前页面不是最后一页的时候,显示下一页和尾页的超链接 //$_SERVER['PHP_SELF']是当前页面的路径 $key.="   <a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . ($page + 1) . "\">下一页</a>   "; $key.="<a href=\"" . $_SERVER['PHP_SELF'] . "?page={$pages}\">尾页</a>"; } else { //当前页面是最后一页的时候,则下一页和尾页的超链接没有作用 $key.="   下一页   "; $key.="尾页"; } return $key; } //关闭连接 function close_connect() { if (!empty($this->mysqli)) { $this->mysqli->close(); } } } 四.handle.class.php 封装对留言信息的操作类(增加,删除,显示等处理)代码如下: <?php /* 封装所有对留言板的内容的操作方法 */ header("Content-type:text/html;charset=utf-8"); require_once 'sql_server.class.php'; class handle { //添加留言 function add($info) { $dat = date('Y-m-d H:i:s'); $nums = rand(0, 8); $sql = "insert into m_liuyan values('null','$info','$dat','$nums')"; $sql_ser = new sql_server(); $sql_ser->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 '   <span id="span2"><font color="red">'; echo $arr[$i][1]; echo "</font></span>"; } } //获取留言人的昵称函数封装 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;六.调试成功后的实体图





转自:点击查看

0 0

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号

个人分类

标签

阅读排行

评论排行

推荐博客

最新博客

返回顶部