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; } ?>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。