使用MySQL和PHP创建一个公告板

news2024/12/26 21:49:47

目录

一、创建表

二、制作首页(创建主题以及显示列表)

三、制作各个主题的页面(输入回帖和显示列表)

四、制作消息的查询界面

五、制作读取数据库信息的原始文件

六、制作数据重置页面

七、效果图

八、问题

1、目前无法处理此请求HTTP ERROR 500

2、The requested URL was not found on this server


一、创建表

tbj0(主题表)

tbj1(消息表)

表tbj0的列

列名内容
group_c用于输入主题的组号。列为INT类型且具有自动连续编号功能
topic_c

用于输入主题名,数据类型为VARCHAR(30)

date_c用于输入创建主题的日期和时间。通过MySQL的NOW函数自动输入。数据类型为DATETIME
ip_c用于存储发送信息的客户端的IP地址。不显示在浏览器上,而是作为出现特殊情况时的记录保留下来。这里暂且将数据类型设置为20个字符的字符串类型VARCHAR(20)

表tbj1的列

列名内容
empid用于存储所有主题中的回帖的编号
name用于输入执行操作的人的姓名。数据类型为VARCHAR(30)
mess用于输入消息。数据类型为TEXT
date_c用于输入插入记录时的日期和时间,通过MySQL的NOW函数自动输入
group_c用于存储主题的编号。作为和表tbj0连接时的键使用。数据类型为INT
ip_c和表tbj0一样,用于存储发送信息的客户端的IP地址

二、制作首页(创建主题以及显示列表)

/**************bulletin_top.php*******************/

<?php

/******** 读取数据库信息等 **************/
require_once("data/db_info.php");

/********** 连接数据库,选择数据库 ***********/
$s=new pdo("mysql:host=$SERV;dbname=$DBNM",$USER,$PASS);

/************* 显示标题、图片等 **********/
print <<<eot1
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>"海贼王的页面</title>
</head>
<body style="background-color:silver">
<img src="pic/jk.gif" alt="小路飞">
<span style="color:purple;font-size:35pt">
海贼王的公告板!
</span>

<p>请点击要查看的主题编号</p>
<hr>
<div style="font-size:20pt">(主题列表)<div>
eot1;

/**************** 获取客户端IP地址 ******************/
$ip=getenv("REMOTE_ADDR");


/********** 如果主题名的变量$su_d有数据,则将其插入表tbj0***********/
$su_d=isset($_GET["su"])?htmlspecialchars($_GET["su"]):null;
if($su_d<>""){
  $s->query("INSERT INTO tbj0 (topic_c,date_c,ip_c) VALUES ('$su_d',now(),'$ip')");
}

$re=$s->query("SELECT * FROM tbj0");
while($result=$re->fetch()){
  print <<<eot2
  <a href="bulletin.php?gu=$result[0]">$result[0] $result[1]</a>
  <br>
  $result[2]创建<br><br>
  eot2;
}

/************** 用于创建主题的表单,以及查询页面的链接 *************/
print <<<eot3
  <hr>
  <div style="font-size:20pt">(创建主题)</div>
  请在这里创建新主题!
  <br>
  <form method="GET" action="bulletin_top.php">
  新创建主题的标题
  <input type="text" name="su" size="50">
  <div><input type="submit" value="创建"></div>
  </form>
  <hr>
  <span style="font-size:20pt">(查询消息)</span>
  <a href="bulletin_search.php">点击这里查询</a>
  <hr>
  </body>
  </html>
eot3;
?>

三、制作各个主题的页面(输入回帖和显示列表)

/**************bulletin.php*******************/

<?php

/*************** 读取数据库信息等 ***********/
require_once("data/db_info.php");

/**************** 连接数据库,选择数据库 *********/
$s=new PDO("mysql:host=$SERV;dbname=$DBNM",$USER,$PASS);

/*************** 获取主题的组号(gu),将其赋给$gu_d **********/
$gu_d=$_GET["gu"];

/*************** 如果$gu_d中包含数字以外的字符,则停止处理**********/
if(preg_match("/[^0-9]/",$gu_d)){
  print <<<eot1
  输入了非法的值<br>
  <a href="bulletin_top.php">请点击这里回到主题列表</a>
eot1;

/************** 如果$gu_d中不包含数字以外的字符,则按普通值处理 **********/
}elseif(preg_match("/[0-9]/",$gu_d)){

/************** 获取姓名和消息并删除标签 ****************/
$na_d=isset($_GET["na"])?htmlspecialchars($_GET["na"]):null;
$me_d=isset($_GET["me"])?htmlspecialchars($_GET["me"]):null;

/************** 获取IP地址 **************************/
$ip=getenv("REMOTE_ADDR");

/**************** 显示与主题组号(gu)相匹配的记录 **************/
$re=$s->query("SELECT topic_c FROM tbj0 WHERE group_c=$gu_d");
$result=$re->fetch();

/***************** 创建显示主题内容的字符串$topic_c_com **********/
$topic_c_com="「".$gu_d." ".$result[0]."」";

/**************** 输出主题显示的标题 *************/
print <<<eot2
  <!DOCTYPE html>
  <html>
  <head>
  <meta charset="UTF-8">
  <title>海贼王 $topic_c_com 主题 </title>
  </head>
  <body style="background-color:silver">
  <div style="color:purple;font-size:35pt">
  $topic_c_com 主题!
  </div>
  <br>
  <div style="font-size:18pt">$topic_c_com 的消息</div>
eot2;

/************ 如果输入了姓名($na_d),则将记录插入tbj1 **************/
if($na_d<>""){
  $re=$s->query("INSERT INTO tbj1 VALUES (0,'$na_d','$me_d',now(),$gu_d,'$ip')");
}

/*************** 显示出水平线 ***************/
print "<hr>";

/************** 按时间顺序显示回帖数据 *************/
$re=$s->query("SELECT * FROM tbj1 WHERE group_c=$gu_d ORDER BY date_c");

$i=1;
while($result=$re->fetch()){

  print "$i($result[0]):$result[1]:$result[3] <br>";
  print nl2br($result[2]);
  print "<br><br>";
      $i++;
}

print <<<eot3
  <hr>
  <div style="font-size:18pt">
  请在这里向 $topic_c_com 中写消息
  </div>
  <form method="GET" action="bulletin.php">
  <div>姓名 <input type="text" name="na"></div>
  消息
  <div>
  <textarea name="me" rows="10" cols="70"></textarea>
  </div>
  <input type="hidden" name="gu" value=$gu_d>
  <input type="submit" value="发送">
  </form>
  <hr>
  <a href="bulletin_top.php">返回主题列表</a>
  </body>
  </html>
eot3;

/************ 当$gu_d中不包含数字也不包含数字以外的字符时的处理 *************/
}else{
  print "请选择主题。<br>";
  print "<a href='bulletin_top.php'>点击这里返回主题列表</a>";
}
 ?>

四、制作消息的查询界面

/**************bulletin_search.php*******************/

<?php

/************ 读取数据库信息等 ****************/
require_once("data/db_info.php");


/************* 连接数据库,选择数据库 **************/
$s=new PDO("mysql:host=$SERV;dbname=$DBNM",$USER,$PASS);

/*************** 显示标题等 **************/
print <<<eot1
  <!DOCTYPE html>
  <html>
  <head>
  <meta charset="UTF-8">
  <title>海贼王的查询页面</title>
  </head>
  <body style="breakground-color:aqua">
  <hr>
  <div style="font-size:18pt">(查询结果如下)</div>
eot1;

/****************** 获取查询字符串并删除标签 ************/
$se_d=isset($_GET["se"])?htmlspecialchars($_GET["se"]):null;

/************* 如果查询字符串($se_d)中有数据,则执行查询处理 *********/
if($se_d<>""){

/************ 查询的SQL语句,连接表tbj1和表tbj0 ********************/
$str=<<<eot2
  SELECT tbj1.empid,tbj1.name,tbj1.mess,tbj0.topic_c
    FROM tbj1
  JOIN tbj0
  ON
      tbj1.group_c=tbj0.group_c
  WHERE tbj1.mess LIKE "%$se_d%"
eot2;

/************* 执行查询 ****************/
$re=$s->query($str);
while($result=$re->fetch()){
  print " $result[0] : $result[1] : $result[2] ($result[3])";
  print "<br><br>";
}
}

/************ 用于输入查询字符串的页面,以及指向首页的链接 **************/
print <<<eot3
  <hr>
  <div>请输入消息中含有的字符!</div>
  <form method="GET" action="bulletin_search.php">
  查询字符串
  <input type="text" name="se">
  <div>
  <input type="submit" value="查询">
  </div>
  </form>
  <br>
  <a href="bulletin_top.php">返回主题列表</a>
  </body>
  </html>
eot3;
 ?>

五、制作读取数据库信息的原始文件

/**************db_info.php*******************/

<?php
$SERV="localhost";
$USER="root";
$PASS="root";
$DBNM="db1";
 ?>

六、制作数据重置页面

/**************bulletin_reset.php*******************/

<?php
require_once("data/db_info.php");
$s=new PDO("mysql:host=$SERV;dbname=$DBNM",$USER,$PASS);

$s->query("DELETE FROM tbj0");
$s->query("DELETE FROM tbj1");
$s->query("ALTER TABLE tbj0 AUTO_INCREMENT=1");
$s->query("ALTER TABLE tbj1 AUTO_INCREMENT=1");

print "将海贼王的表初始化了";
 ?>

七、效果图

八、问题

1、目前无法处理此请求HTTP ERROR 500

找到对应版本的php.ini,将下面的值由off改为on,然后重启服务器。

display_errors = On
display_startup_errors = On

2、The requested URL was not found on this server

找到Apache文件下的httpd.conf配置文件,将下面的值由none改为all,然后重启服务器。

AllowOverride All

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1559595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLM大语言模型(八):ChatGLM3-6B使用的tokenizer模型BAAI/bge-large-zh-v1.5

背景 BGE embedding系列模型是由智源研究院研发的中文版文本表示模型。 可将任意文本映射为低维稠密向量&#xff0c;以用于检索、分类、聚类或语义匹配等任务&#xff0c;并可支持为大模型调用外部知识。 BAAI/BGE embedding系列模型 模型列表 ModelLanguageDescriptionq…

python实战之宝塔部署flask项目

一. 项目 这个demo只是提供了简单的几个api接口, 并没有前端页面 # -*- coding: utf-8 -*- import flask as fk from flask import jsonify, requestapp fk.Flask(__name__)app.route(/api/hello, methods[GET]) def get_data():return hello world# 假设我们要提供一个获取用…

练习3-2 计算符号函数的值

对于任一整数n&#xff0c;符号函数sign(n)的定义如下&#xff1a; 请编写程序计算该函数对任一输入整数的值。 输入格式: 输入在一行中给出整数n。 输出格式: 在一行中按照格式“sign(n) 函数值”输出该整数n对应的函数值。 输入样例1: 10输出样例1: sign(10) 1输入样…

PyQt6实战4-Terminal

实现一个简单的终端执行器 功能&#xff1a; 执行命令 显示结果 效果&#xff1a; 代码&#xff1a; from PyQt6.QtWidgets import * from PyQt6.QtCore import * from PyQt6.QtGui import * import sys import subprocessclass JTerminal(QMainWindow):def __init__(self, …

【Django开发】前后端分离美多商城项目第4篇:用户部分,1. 判断用户名是否存在【附代码文档】

美多商城项目4.0文档完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;美多商城&#xff0c;项目准备1.B2B--企业对企业,2.C2C--个人对个人,3.B2C--企业对个人,4.C2B--个人对企业,5.O2O--线上到线下,6.F2C--工厂到个人。项目准备&#xff0c;配置1. 修改set…

UniFace:深度人脸识别的统一交叉熵损失

UniFace: Unified Cross-Entropy Loss for Deep Face Recognition softmax损失 缺点&#xff1a;不能保证最小正样本类相似度大于最大负样本类相似度 问题&#xff1a;没有统一的阈值可用于将正样本与类对与负样本与类对分开 创新点 设计了用于人脸识别模型训练的UCE&#xf…

1695. 删除子数组的最大得分-力扣(滑动窗口)

给你一个正整数数组 nums &#xff0c;请你从中删除一个含有 若干不同元素 的子数组。删除子数组的 得分 就是子数组各元素之 和 。 返回 只删除一个 子数组可获得的 最大得分 。 如果数组 b 是数组 a 的一个连续子序列&#xff0c;即如果它等于 a[l],a[l1],…,a[r] &#xff0…

T-Dongle-S3开发笔记——idf事件

参考事件循环库 - ESP32 - — ESP-IDF 编程指南 v5.2 文档 (espressif.com) 事件标识符由两部分组成&#xff1a;事件根基 和 事件 ID。 事件根基标识独立的事件组&#xff1b; 事件 ID 标识组中的特定事件。 默认事件循环 默认事件循环是一种特殊循环&#xff0c;用于处理…

练习所学文件操作的相关函数

上上篇文章&#xff0c;我们介绍了文件和文件操作函数&#xff0c;现在我们来练习一下所学文件操作的相关函数吧&#xff01; 实践出真知~ 文件的打开和关闭 我们首先练习一下文件的打开和关闭&#xff1a; 每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区&#xff…

数据结构(六)——图的遍历

6.3 图的遍历 6.3.1 图的广度优先遍历 ⼴度优先遍历&#xff08;Breadth-First-Search, BFS&#xff09;要点&#xff1a; 1. 找到与⼀个顶点相邻的所有顶点 2. 标记哪些顶点被访问过 3. 需要⼀个辅助队 FirstNeighbor(G,x)&#xff1a;求图G中顶点x的第⼀个邻接点&#xff…

Windows 11 专业版 23H2 Docker Desktop 下载 安装 配置 使用

博文目录 文章目录 Docker Desktop准备系统要求 (WSL 2 backend)在 Windows 上打开 WSL 2 功能先决条件开启 WSL 2 WSL下载安装启动配置使用镜像 Image卷积 Volumes容器 Containers 命令RedisMySQLPostGreSQL Docker Desktop Overview of Docker Desktop Docker Desktop 疑难解…

SSTI 服务器端模板注入(Server-Side Template Injection)

1.Web_python_template_injection {{}}是变量包裹标识符&#xff0c;里面存放的是一个变量&#xff0c;当你输入 http://61.147.171.105:55121/{{8*8}} 执行成功&#xff0c;说明存在模版注入。接下来&#xff0c;开始想办法编代码拿到服务器的控制台权限 。 首先&#xff0c…

用于网站域名备案的服务器最便宜多少钱?30元备案5个网站

用于备案的服务器多少钱&#xff1f;阿里云30元3个月&#xff0c;腾讯云62元一年&#xff0c;符合ICP备案的服务器只要满足3个月时长就够用&#xff0c;并且一台云服务器可以备案5个网站域名或APP。云服务器吧yunfuwuqiba.com分享阿里云最便宜备案服务器价格和腾讯云ICP备案服务…

MES_ENT_STD

生产执行系统&#xff08;企业标准版&#xff09;MES_ENT_STD ERP_ENT_STD_59438.ieqq.ent-CSDN博客 OAMS_ENT_STD-CSDN博客

笔试——3.31腾讯笔试

整体难度尚可&#xff0c;ac了三道半&#xff0c;第四题没什么时间了没怎么看。 第一题 #include<bits/stdc.h> using namespace std;vector<vector<pair<int, int>>>arr; vector<int>visited; //res 1 white 0 int cnt 0;void dfs(int x) {if…

基于OrangePi Zero2的智能家居项目(开发阶段)

智能家居项目的软件实现 紧接上文 基于OrangePi Zero2的智能家居项目&#xff08;准备阶段&#xff09;-CSDN博客 目录 一、项目整体设计 1.1项目整体设计 1.2具体划分 二、开发工作的前期准备 1、进行分类&#xff0c;并用Makefile文件进行管理 参考&#xff1a;自己创…

pajamas 0 publish repo fst in gitee

0. 好久没有blog了&#xff0c;真的好久了&#xff0c;先交代一波 因为半年来发生了很多&#xff0c;计划有变&#xff0c;辞工作&#xff0c;出去耍&#xff0c;找工作&#xff0c;重新计划… 从半年前开始&#xff0c;就想好了&#xff0c;最近这两年应该优先会写代码 &…

一篇讲明白 Hadoop 生态的三大部件

文章目录 每日一句正能量前言01 HDFS02 Yarn03 Hive04 HBase05 Spark及Spark Streaming关于作者推荐理由后记赠书活动 每日一句正能量 黎明时怀着飞扬的心醒来&#xff0c;致谢爱的又一天&#xff0c;正午时沉醉于爱的狂喜中休憩&#xff0c;黄昏时带着感恩归家&#xff0c;然后…

python实现模糊神经网络(pytorch版)

1 理论 模糊神经网络是一种基于模糊逻辑的神经网络模型&#xff0c;其主要用于处理模糊信息和不确定性的问题。模糊神经网络可以将输入数据映射到一个模糊集合中&#xff0c;然后通过一系列的模糊规则进行求解&#xff0c;最终输出一个模糊集合。 模糊神经网络的基本原理是将…

AMD GPUs - Radeon™ PRO W7900与NVIDIA 4000系列GPU性能

文心一言 RTX 4090的性能高于AMD Radeon PRO W7900。 RTX 4090具有760亿个晶体管、16384个CUDA核心和24GB高速镁光GDDR6X显存&#xff0c;在4K分辨率的游戏中持续以超过100FPS运行。RTX 4090采用全新的DLSS 3技术&#xff0c;相比3090TI&#xff0c;性能提升可达2~4倍&#x…