php+js+mysql+ajax实现简单留言板功能,新手教程

本文介绍了一个简单的留言板系统的实现方法,通过PHP处理后台逻辑,JavaScript与Ajax完成前后端交互,MySQL作为数据库存储留言信息。该系统具备提交留言、显示留言及删除全部留言的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

S# php+js+mysql+ajax实现简单留言板功能,新手教程

文件结构

html文件夹

message.html

message.js

SendMessage.php

ShowMessage.php

DeleteMessage.php

message.html:

<!DOCTYPE html>
<html lang="ch">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
        <title>留言板</title>
    </head>

    <body onLoad="ShowMessage()"><!--初始化显示数据库内容-->

        <script src="message.js"></script>

        留言:<br>
        <input type="text" id="message" name="message" value="">
        <br>
        用户:<br>
        <input type="text" id="id" name="id" value="访客">
        <br>
        <button onClick="SendMessage(document.getElementById('message').value,document.getElementById('id').value)">提交</button>
        <button onClick="DeleteMessage()">删除全部留言</button>

        <p>
        <div id="txtHint"><b>加载内容中...</b></div>
        </p>

    </body>
</html>

message.js:

var xmlHttp

//////////////////////////////////////////////////////////
//提交函数
function SendMessage(str,str2)
{ 
xmlHttp=GetXmlHttpObject();

if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 }

var url="SendMessage.php"//文本发送到SendMessage.php处理
url=url+"?q="+str+"&p="+str2//多个值用“&”分割 留言文本q  用户名文本p get方式传递
url=url+"&sid="+Math.random()//添加一个随机数,以防服务器使用缓存文件
//alert(url)
xmlHttp.onreadystatechange=stateChanged  //onreadystatechange 是一个事件句柄。它的值 (stateChange) 是一个函数的名称,当 XMLHttpRequest 对象的状态发生改变时,会触发此函数。状态从 0 (uninitialized) 到 4 (complete) 进行变化。仅在状态为 4 时,才执行代码
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

//////////////////////////////////////////////////////////////////
//显示函数
function ShowMessage()
{
    xmlHttp=GetXmlHttpObject();

if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 }
var url="ShowMessage.php"//显示ShowMessage.php 没有添加其他参数
url=url+"?sid="+Math.random()//添加一个随机数,以防服务器使用缓存文件

xmlHttp.onreadystatechange=stateChanged 
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

//////////////////////////////////////////////////////////////////
//删除函数
function DeleteMessage()
{
alert("删除所有留言?");
xmlHttp=GetXmlHttpObject();

if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 }
var url="DeleteMessage.php"//删除DeleteMessage.php 没有添加其他参数
url=url+"?sid="+Math.random()//添加一个随机数,以防服务器使用缓存文件

xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

////////////////////////////////////////////////////////////////
function stateChanged() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")

 { 
 document.getElementById("txtHint").innerHTML=xmlHttp.responseText //执行的代码:这里输出文本到"txtHint"
 } 
}

function GetXmlHttpObject()//创建XmlHttp对象
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}

SendMessage.php:

<?php
header("Content-type: text/html; charset=utf-8"); 
$servername = "xx.xx.cn";//数据库地址
$username = "xx";//数据库用户名
$password = "xxx";//密码

$link_id=mysql_connect($servername,$username,$password);
if(!$link_id){
    echo "连接数据库出错"."</br>";
}
else{
    echo "连接数据库成功"."</br>";
}
//////////////////////////////////////////////////////////////////////////////
mysql_select_db("my2467976");//选择数据库

//////////////////////////////////////////////////////////////////////////////
$sql_new = "CREATE TABLE Message (Id varchar(15),Time varchar(15),Message varchar(30))";
//这里设置文本大小,get方式也有限制大小


if (mysql_query($sql_new,$link_id))//新建表 persons
  {
  echo "新建表:".$sql_new."成功</br>";
  }
else
  {
      if(mysql_error()=="Table 'Message' already exists")
      {
        echo "已经存在Message表,无需建立"."</br>";
      }
      else
      {
          echo "其他错误"."</br>";
      }
  }
//////////////////////////////////////////////////////////////////////////////
$q=$_GET["q"];//get传递的留言文本
$p=$_GET["p"];//用户名文本
$sql_new_l="INSERT INTO Message (Id, Time, Message) VALUES ('" . $p ."','".date("Y/m/d")."  ".date("h:i:sa")."', '".$q."')";
mysql_query($sql_new_l);//新建记录
echo "新建记录:".$sql_new_l."</br>";
/////////////////////////////////////////////////////////////////////////////////
$result = mysql_query("SELECT * FROM Message");
echo "<table border='1'>
<tr>
<th>Id</th>
<th>Time</th>
<th>Message</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Id'] . "</td>";
  echo "<td>" . $row['Time'] . "</td>";
  echo "<td>" . $row['Message'] . "</td>";
  echo "</tr>";
  }
echo "</table>";
mysql_close($link_id);//关闭连接
?>

ShowMessage.php:

<?php
header("Content-type: text/html; charset=utf-8"); 
$servername = "xx.xx.cn";//数据库地址
$username = "xx";//数据库用户名
$password = "xxx";//密码

$link_id=mysql_connect($servername,$username,$password);
if(!$link_id){
    echo "连接数据库出错"."</br>";
}
else{
    echo "连接数据库成功"."</br>";
}
//////////////////////////////////////////////////////////////////////////////
mysql_select_db("my2467976");//选择数据库
//////////////////////////////////////////////////////////////////////////////
//显示
$result = mysql_query("SELECT * FROM Message");//选择表中所有记录放在$result
echo "<table border='1'>
<tr>
<th>Id</th>
<th>Time</th>
<th>Message</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Id'] . "</td>";
  echo "<td>" . $row['Time'] . "</td>";
  echo "<td>" . $row['Message'] . "</td>";
  echo "</tr>";
  }
echo "</table>";
mysql_close($link_id);//关闭连接
?>

DeleteMessage.php:

<?php
header("Content-type: text/html; charset=utf-8"); 
$servername = "xx.xx.cn";//数据库地址
$username = "xx";//数据库用户名
$password = "xxx";//密码

$link_id=mysql_connect($servername,$username,$password);
if(!$link_id){
    echo "连接数据库出错"."</br>";
}
else{
    echo "连接数据库成功"."</br>";
}
//////////////////////////////////////////////////////////////////////////////
mysql_select_db("my2467976");//选择数据库
//////////////////////////////////////////////////////////////////////////////
if(mysql_query("DELETE FROM Message")){//删除全部记录
echo "全部记录删除成功";
}
else
{
 echo mysql_error();    
}
/////////////////////////////////////////////////////////////////////////////////
//显示
$result = mysql_query("SELECT * FROM Message");
echo "<table border='1'>
<tr>
<th>Id</th>
<th>Time</th>
<th>Message</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Id'] . "</td>";
  echo "<td>" . $row['Time'] . "</td>";
  echo "<td>" . $row['Message'] . "</td>";
  echo "</tr>";
  }
echo "</table>";
mysql_close($link_id);//关闭连接
?>

序列图:

Created with Raphaël 2.1.0message.htmlmessage.htmlmessage.jsmessage.jsSendMessage.phpSendMessage.phpShowMessage.phpShowMessage.phpDeletMessage.phpDeletMessage.phpSendMessage()ShowMessage()DeletMessage()echo texeecho texeecho texe

部分截图:

提交

删除留言

对初学AJAX的同学会有帮助的。 ----------ajax.js--------------- var request = false; try { request = new XMLHttpRequest(); } catch (trymicrosoft) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (othermicrosoft) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed) { request = false; } } } if (!request) alert("Error initializing XMLHttpRequest!"); function getCustomerInfo() { document.getElementById("output").innerHTML = "Loading..."; document.getElementById("submit").disabled = true; var name = document.getElementById("name").value; var text = document.getElementById("text").value; var key = document.getElementById("key").value; var answer = document.getElementById("answer").value; var poststr = "name="+name+"&text="+text+"&key="+key+"&answer="+answer; var url = "doit.php"; request.open("POST", url, true); request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); request.send(poststr); request.onreadystatechange = updatePage; } function updatePage() { if (request.readyState == 4) if (request.status == 200) document.getElementById("output").innerHTML = request.responseText; else if (request.status == 404) alert("目标地址不存在"); else alert("警告: 错误代码 " + request.status); } function getInfo() { document.getElementById("output1").innerHTML = "Loading..."; var url = "show.php"; var d = new Date().getTime(); request.open("GET", url+"?d="+d.toString(), true); request.onreadystatechange = updatePage1; request.send(); } function updatePage1() { if (request.readyState == 4) if (request.status == 200) document.getElementById("output1").innerHTML = request.responseText; else if (request.status == 404) alert("目标地址不存在"); else alert("警告: 错误代码 " + request.status); }
空间要求: - PHP5 安装说明: 1. 解压下载下来的压缩包. 2. 打开 /inc/config.php 第22行, 修改 'abc12345' 为您的密码. 3. 将修改好的文件上传到你的空间. 4. 确保你的空间有写入 /data_layer/xml/comments.xml 的权利 如果你不用数据库,请保证您的空间对 /htmlpurifier/standalone/HTMLPurifier/DefinitionCache/Serializer 有写入的权利 如果你要用mysql数据空, 复制 /data_layer/mysql/comments.php, 把他复制到 /inc/. 并在那个文件里 enter 输入你的数据库用户名密码,和表的前缀名,他就会自动执行啦. 如果你想用其他的数据空, 只需要修改 /inc/comments.php,按照您的选择修改. 系统使用与设置: 配置文件让你有很多地方可以选择. 你可以修改 (修改inc/config.php,数字代表配置的行数): 12. 留言存储文件. 如果你想换个名字的话,在这里修改 . 13. 留言页面的文件名. 如果你想修改的话,在这里修改. 14. 一次载入留言的数量. 推荐 20-50. 15. 日期格式. 其他的日期格式, 去 http://php.net/manual/en/function.date.php 看看吧 16. 输入风格的文件夹名称. 17. 你所用的语言. 文件在 /localization/ . 18. 表情图片的文件夹地址. 必须是绝对地址. 如果不需要表情的话,设置为 false . 19. 如果你想得到留言的提醒的话,在这里输入你的邮件地址. 不用的话,设置为 false . 22. 后台管理的密码. 25. 设置为 true, HTML Purifier 会帮你屏蔽 HTML 的留言(防止垃圾留言用). 如果设置为 false, all tags will be stripped. For more information on HTML Purifier, go to http://htmlpurifier.org/ 26. 你页面的character encoding . Required by HTML Purifier. 27. 你页面的 doctype . Required by HTML Purifier. 28. 这里填写允许的 HTML 元素. Required by HTML Purifier. 31. 您的 Akismet key. 输入 key 之后, Akismet 就会帮你屏蔽垃圾留言啦. 如果不输入 key, 会自动启用一个简单的垃圾留言过滤系统. 更多关于Akismet: http://akismet.com/ 32. 留言本的url. Required by Akismet. 35. 如果表情功能启用的话, 你输入的字符会替换为表情. 管理留言: 后台管理地址 [您的留言板地址]/admin。 注: 如果你输入Akismet key的话, 当你把一个留言设为垃圾评论的时候Akismet也会收集这些信息. 安装风格: 风格文件请放在"theme"文件夹里。 使用某个风格,修改"config.inc "第16行,写上风格文件夹的名称。 创作风格: 目前,风格修改只需要修改css文件,不需要修改HTML, 风格必须在自己的文件夹里.. 风格里必须包含这些文件: - style.css - style_js.css 如果浏览器支持js的话,style_js.css就会起作用. 关于版权方面的问题请参照文件“LICENSE.txt”,所有资料仅供学习观摩使用,所引起的一切责任与本人无关。 另外这个留言板缺少个回复功能,要是谁加上了回复功能请发给我一份,谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值