前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP教程之简易论坛的实战

PHP教程之简易论坛的实战

作者头像
老雷PHP全栈开发
发布2020-07-02 15:04:33
2.3K1
发布2020-07-02 15:04:33
举报
文章被收录于专栏:老雷PHP全栈开发

功能

用户登录 注册

发布主题

发布跟帖

论坛首页

论坛详情页

论坛的表

代码语言:javascript
复制
CREATE TABLE `sky_bbs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(50) DEFAULT '' COMMENT '主题',
  `userid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '用户id',
  `catid` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '类型',
  `status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态',
  `createtime` datetime NOT NULL DEFAULT '2019-01-17 08:08:01' COMMENT '留言时间',
  `content` text COMMENT '留言内容',
  `view_num` int(10) unsigned NOT NULL DEFAULT '0',
  `comment_num` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `catid` (`catid`),
  KEY `userid` (`userid`,`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=68 DEFAULT CHARSET=utf8 COMMENT='论坛';


CREATE TABLE `sky_bbs_comment` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `topicid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '主题',
  `userid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '用户id',
  `status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态',
  `createtime` datetime NOT NULL DEFAULT '2019-01-17 08:08:01' COMMENT '评论时间',
  `content` text COMMENT '评论内容',
  PRIMARY KEY (`id`),
  KEY `userid` (`userid`,`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=68 DEFAULT CHARSET=utf8 COMMENT='论坛评论';

新知识

in_array 判断一个字符串是否在数组中

header("Location: user.php?a=login"); 跳转页面

explode(".",$str) 将字符串分割成数组

implode(",",$ids) 将数组转为字符串

代码语言:javascript
复制
<?php
session_start();
$a=isset($_GET["a"])?htmlspecialchars($_GET["a"]):"index";
require "db.class.php";
if(in_array($a,array("add","save","reply_save"))){
  if(!isset($_SESSION["ssuser"])){
    header("Location: user.php?a=login");
    exit;
  }
}
$bbs=new bbs($db);
$bbs->$a();
class bbs{
    public $db;
    public function __construct($db){
        $this->db=$db;
    }
    public function index(){
   
        $sql="select * from sky_bbs where status<4 order  by id DESC";
        $list=$this->db->getall($sql);
        if(!empty($list)){
      $uids=array();
      foreach($list as $v){
        $uids[]=$v["userid"];
      }
      $us=$this->getUserByIds($uids);
      
      foreach($list as $k=>$v){
        $v["nickname"]=$us[$v["userid"]]["nickname"];
        $list[$k]=$v;
      }
    }
        require "tpl/index.php";
    }
    public function add(){
        require "tpl/add.php";
    }

    public function save(){
    $title=$_POST["title"];
    $content=$_POST["content"];
    $createtime=date("Y-m-d H:i:s");
    $userid=$_SESSION["ssuser"]["userid"];
    $sql=" insert into sky_bbs set 
      title='".$title."',
      content='".$content."',
      createtime='".$createtime."',
      userid=".$userid." 
    ";
    $id=$this->db->insert($sql);
        require "tpl/save.php";
    }

    public function show(){
        $id=$_GET["id"];
        $sql="select * from sky_bbs where id=".$id;
        $data=$this->db->getRow($sql);
    if(empty($data)){
      $msg="当前帖子已经被删除了";
      require "tpl/msg.php"; 
      exit;
    }
    $author=$this->db->getRow("select userid,nickname from sky_user where userid=".$data["userid"]);
    //获取评论
    $sql="select * from sky_bbs_comment where topicid=".$id." order by id ASC";
    $list=$this->db->getAll($sql);
    if(!empty($list)){
      foreach($list as $v){
        $uids[]=$v["userid"];
      }
      $us=$this->getUserByIds($uids);
      
      foreach($list as $k=>$v){
        $v["nickname"]=$us[$v["userid"]]["nickname"];
        $list[$k]=$v;
      }
    }
    //刷新人气
    $sql="update sky_bbs set view_num=view_num+1 where id=".$id;
    $query=$this->db->query($sql);
        require "tpl/show.php";
    }

    public function reply_save(){
       $topicid=$_POST["topicid"];
       $content=$_POST["content"];
     $userid=$_SESSION["ssuser"]["userid"];
       $createtime=date("Y-m-d H:i:s");
       //查询主题
       $sql="select * from sky_bbs where id=".$topicid;
       $topic=$this->db->getRow($sql);
       //插入评论
       $sql=" insert into sky_bbs_comment set 
       content='".$content."',
       createtime='".$createtime."',
       userid=".$userid." ,
       topicid=".$topicid."
     ";
       $query=$this->db->query($sql);
       //更新主题
       $sql="update sky_bbs set comment_num=comment_num+1 where id=".$topicid;
       $query=$this->db->query($sql);
       require "tpl/reply_save.php";
    }
  public function del(){
    $id=$_GET["id"];
    $sql="delete from sky_bbs where id=".$id;
    $sql="update   sky_bbs set status=11 where id=".$id;
    $this->db->query($sql);
    $msg="删除成功";
    require "tpl/msg.php"; 
  }
  public function getUserByIds($ids){
    $sql="select userid,nickname from sky_user where userid in(".implode(",",$ids).") ";
    $res=$this->db->getAll($sql);
    if($res){
      $list=array();
      foreach($res as $v){
        $list[$v["userid"]]=$v;
      }
      return $list;
    }
    return false;
  }
  
  
  
  

}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老雷PHP全栈开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档