Ajax与mysql数据交互制作留言板功能(全)
最近自己做了一个小demo,实现了Ajax与MySQL的数据交互,js部分用的是jq,后台用的是php,数据库是mysql,过时间再来一个node+mongodb版的。
关于mysql的使用和安装,就不多讲了,自行百度xampp,Apache服务器和mysql数据库集成,非常好用。
首先打开服务器和数据库,我这里先建立了一个“eleven”的数据库,下面建立了一个叫做microblog的表(请注意:我这里使用的是高版本的mysql,里面php链接数据库的方法使用的都是mysqli_ 如果版本过低,请使用mysql_方法,自行修改代码)
以下是代码部分:
html页面和js部分:
<!DOCTYPEhtml>
<html>
<head>
<metacharset="UTF-8">
<title>微博留言板</title>
<styletype="text/css">
*{
margin:0;
padding:0;
}
#box{
width:600px;
/*height:500px;*/
border:2pxsolidrgb(85,85,85);
border-radius:15px;
margin:50pxauto;
padding:20px10px15px;
background-color:rgb(85,85,85);
}
#content{
display:block;
resize:none;
width:550px;
height:200px;
margin:0auto;
border:2pxsolidrgb(225,225,225);
border-radius:10px;
text-align:center;
font-size:30px;
background-color:rgb(225,225,225);
}
#content:focus{
outline:none;
border:2pxsolidrgb(225,225,225);
box-shadow:0015pxrgb(225,225,225);
}
#btn{
border:2pxsolidrgb(255,204,0);
width:80px;
height:40px;
border-radius:5px;
margin-top:30px;
font-size:17px;
cursor:pointer;
outline:none;
background-color:rgb(255,204,0);
}
.list{
list-style:none;
background-color:rgb(249,249,249);
margin-top:20px;
}
.list>li{
padding:20px10px10px;
border-bottom:2pxsolidrgb(68,68,68);
font-size:20px;
color:rgb(200,214,225);
position:relative;
word-break:break-word;
word-wrap:break-word;
background-color:rgb(85,85,85);
}
.list>li>.control{
position:absolute;
bottom:3px;
right:5px;
font-size:14px;
}
.list>li>p{
margin-bottom:25px;
}
.controlspan,.controlem{
display:inline-block;
margin-right:15px;
}
.controlem{
color:darkblue;
cursor:pointer;
}
a{
text-decoration:none;
color:darkred;
}
#page>a{
display:inline-block;
width:40px;
height:30px;
margin-top:10px;
text-align:center;
line-height:30px;
font-size:20px;
border-radius:5px;
color:white;
background-color:rgb(51,21,70);
}
#head{
color:rgb(200,214,225);
font-size:30px;
height:50px;
border-bottom:2pxsolidrgb(68,68,68);
margin-bottom:20px;
}
</style>
</head>
<body>
<divid="box">
<divid="head">
留言板
</div>
<divid="fill_in">
<textareaid="content"></textarea>
<buttonid="btn">提交留言</button>
</div>
<!--留言列表-->
<divid="message_text">
<ulclass="list">
</ul>
</div>
<!--分页-->
<divid="page">
<ahref="javasript:void(0)"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow">1</a>
<ahref="javasript:void(0)"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow">2</a>
</div>
</div>
</body>
<scriptsrc="Jq/jquery-3.1.1.min.js">
</html>
代码显示不完,下面是php部分代码。
接01部分,jq的ajax请求:
<scripttype="text/javascript">
$(function(){
$("#btn").on("click",function(){
if($("#content").val()==""){
alert("~~客官,说一句再走呗~~");
return;
}
else{
$.ajax({
type:"get",
url:"http://localhost/phpStudy/ajax03/message.php",
async:true,
dataType:"json",
data:{
content:$("#content").val(),
act:"add"
},
success:function(data){
//varresult=JSON.parse(data);
if(data.error==0){
createLi(data.id,$("#content").val(),data.time);
}else{
alert(data.msg);
}
}
});
}
});
//创建节点
functioncreateLi(id,content,time){
varhtml=$('<li><p>'+content+'</p><divclass="control"><span>时间:'+time+'</span>顶:<em>0</em>踩:<em>0</em><aclass="remove"href="javasript:void(0)"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow">删除</a></div></li>');
$(".list").prepend(html);
varh=html.height();
html.height(0);
html.stop().animate({
height:h
},300);
//删除
html.find(".remove").on("click",function(){
html.stop().animate({
height:0
},300,function(){
html.remove();
})
});
}
})
</script>
这部分是php代码部分:
<?php
header("Content-type:text/html;charset=utf8");
date_default_timezone_set("PRC");
//链接数据库
$link=mysqli_connect("localhost","root","","eleven");
//设置数据库编码格式
mysqli_query($link,"setnamesutf8");
?>
注意:这部分我写成了公共代码,因为我在学习做其他东西时调用了,所以下面的代码会有
include_once"comment.php";
这一行是引用其他代码
<?php
/*
*开发文档
*1.用于提交的留言留言进行存储
*url:http://localhost/phpStudy/ajax03/message.php
*提交方式:get
*提交参数说明:
*content必须留言板内容
*act必须借口标识
*返回参数说明
*成功:{"error":"0","id":1,"time":"2016-11-30"}
*失败:{"error":1,"msg":"留言失败,请重试"}
*
*2.up
*id必须留言的id编号
*act必须接口标识up
*返回声明
*成功:{"error":"0"}
*失败:{"error":"1","msg":"点赞失败"}
*
*3.分页(获取页码的接口);
*act必须接口标识count
*返回参数说明:
*成功:{"error":"0","countPage":"3"};
*失败:{"error":"1","msg":"请求数据失败,请重试!"}
*
*4.分页(点击页码跳转)
*url:http://localhost/phpStudy/ajax03/message.php
*提交方式:get
*提交参数说明:
*starPage必须参数页码索引值
*act必须接口标识page
*返回参数说明
*成功:{"error":"0","data":[{},{},{},{},{}]}
*失败:{"error":"1","msg":"数据查询失败,请重试!"}
*
*/
include_once"comment.php";
$act=$_GET["act"];//接口请求标识
switch($act){
case'add'://提交留言
$content=$_GET["content"];
$time=time();
$times=date("Y-m-dH:i:s",$time);
$query="INSERTINTOmicroblog(id,content,time)VALUES(null,'{$content}','{$times}')";
mysqli_query($link,$query);
$insertId=mysqli_insert_id($link);
if($insertId>0){
$arr=["error"=>0,"id"=>$insertId,"time"=>$times];
echojson_encode($arr);//将数组转化为json,方便前端使用
}
else{
$arr=["error"=>1,"msg"=>"留言失败,请重试!"];
echojson_encode($arr);//将数组转化为json,方便前端使用
}
break;
case'up':
$id=$_GET['id'];
$search="SELECTupFROMmicroblogWHEREid=$id";
$result=mysqli_query($link,$search);
$upNum=mysqli_fetch_row($result)[0];
$upNum++;
$query="UPDATEmicroblogSETup='{$upNum}'WHEREid='{$id}'";
mysqli_query($link,$query);
if(mysqli_affected_rows($link)){//更新数据成功
echo'{"error":"0"}';
}
else{//更新失败
echo'{"error":"1","msg":"点赞失败!"}';
}
break;
case'down':
$id=$_GET['id'];
$search="SELECTdownFROMmicroblogWHEREid=$id";
$result=mysqli_query($link,$search);
$downNum=mysqli_fetch_row($result)[0];
$downNum++;
$query="UPDATEmicroblogSETdown='{$downNum}'WHEREid='{$id}'";
mysqli_query($link,$query);
if(mysqli_affected_rows($link)){//更新数据成功
echo'{"error":"0"}';
}
else{//更新失败
echo'{"error":"1","msg":"踩失败!"}';
}
break;
case'remove':
$id=$_GET['id'];
$query="DELETEFROMmicroblogWHEREid='{$id}'";
mysqli_query($link,$query);
if(mysqli_affected_rows($link)>0){//删除数据成功
echo'{"error":"0"}';
}
else{
echo'{"error":"1","msg":"删除失败!"}';
}
break;
case'count'://返回总页码
$query="SELECTcount(id)FROMmicroblog";
$result=mysqli_query($link,$query);
$count=mysqli_fetch_row($result)[0];//以索引数组形式返回查询结果
$countPage=ceil($count/5);
echo'{"error":"0","countPage":"'.$countPage.'"}';
break;
case'page'://点击分页或者是页面第一次加载
$index=$_GET["num"]*5;
$search="SELECT*FROMmicroblogORDERBYidDESCLIMIT{$index},5";//倒叙查询留言
$result=mysqli_query($link,$search);
$arr=[];//存查询出来的数据
while($row=mysqli_fetch_assoc($result)){
array_unshift($arr,$row);
}
//print_r($arr);
//{"error":"0","info":[{},{},{},{},{}]}
$resultArr=["error"=>"0","info"=>$arr];
echojson_encode($resultArr);
break;
}
?>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。