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

   这是一个模仿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] . '"  οnclick="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;
六.调试成功后的实体图







  • 11
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值