Ajax與mysql數(shù)據(jù)交互制作留言板功能(全)
最近自己做了一個(gè)小demo,實(shí)現(xiàn)了Ajax與MySQL的數(shù)據(jù)交互,js部分用的是jq,后臺(tái)用的是php,數(shù)據(jù)庫(kù)是mysql,過(guò)時(shí)間再來(lái)一個(gè)node+mongodb版的。
關(guān)于mysql的使用和安裝,就不多講了,自行百度xampp,Apache服務(wù)器和mysql數(shù)據(jù)庫(kù)集成,非常好用。
首先打開(kāi)服務(wù)器和數(shù)據(jù)庫(kù),我這里先建立了一個(gè)“eleven”的數(shù)據(jù)庫(kù),下面建立了一個(gè)叫做microblog的表(請(qǐng)注意:我這里使用的是高版本的mysql,里面php鏈接數(shù)據(jù)庫(kù)的方法使用的都是mysqli_ 如果版本過(guò)低,請(qǐng)使用mysql_ 方法,自行修改代碼)
以下是代碼部分:
html頁(yè)面和js部分:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>微博留言板</title> <style type="text/css"> *{ margin: 0; padding: 0; } #box{ width: 600px; /*height: 500px;*/ border: 2px solid rgb(85,85,85); border-radius: 15px; margin: 50px auto; padding: 20px 10px 15px; background-color: rgb(85,85,85); } #content{ display: block; resize: none; width: 550px; height: 200px; margin: 0 auto; border: 2px solid rgb(225,225,225); border-radius: 10px; text-align: center; font-size: 30px; background-color: rgb(225,225,225); } #content:focus{ outline: none; border: 2px solid rgb(225,225,225); box-shadow: 0 0 15px rgb(225,225,225); } #btn{ border: 2px solid rgb(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: 20px 10px 10px; border-bottom: 2px solid rgb(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; } .control span,.control em{ display: inline-block; margin-right: 15px; } .control em{ 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: 2px solid rgb(68,68,68); margin-bottom: 20px; } </style> </head> <body> <div id="box"> <div id="head"> 留言板 </div> <div id="fill_in"> <textarea id="content"></textarea> <button id="btn">提交留言</button> </div> <!--留言列表--> <div id="message_text"> <ul class="list"> </ul> </div> <!--分頁(yè)--> <div id="page"> <a href="javasript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" >1</a> <a href="javasript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" >2</a> </div> </div> </body> <script src="Jq/jquery-3.1.1.min.js"> </html>
代碼顯示不完,下面是php部分代碼。
接01部分,jq的ajax請(qǐng)求:
<script type="text/javascript"> $(function(){ $("#btn").on("click",function(){ if ($("#content").val() == "") { alert("~~客官,說(shuō)一句再走唄~~"); 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){ // var result = JSON.parse(data); if (data.error==0) { createLi(data.id,$("#content").val(),data.time); } else{ alert(data.msg); } } }); } }); //創(chuàng)建節(jié)點(diǎn) function createLi(id,content,time){ var html = $('<li><p>'+content+'</p><div class="control"><span>時(shí)間:'+time+'</span>頂:<em>0</em>踩:<em>0</em><a class="remove" href="javasript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" >刪除</a></div></li>'); $(".list").prepend(html); var h = 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"); //鏈接數(shù)據(jù)庫(kù) $link = mysqli_connect("localhost", "root", "", "eleven"); //設(shè)置數(shù)據(jù)庫(kù)編碼格式 mysqli_query($link, "set names utf8"); ?>
注意:這部分我寫成了公共代碼,因?yàn)槲以趯W(xué)習(xí)做其他東西時(shí)調(diào)用了,所以下面的代碼會(huì)有
include_once "comment.php";
這一行是引用其他代碼
<?php /* * 開(kāi)發(fā)文檔 * 1.用于提交的留言留言進(jìn)行存儲(chǔ) * url:http://localhost/phpStudy/ajax03/message.php * 提交方式:get * 提交參數(shù)說(shuō)明: * content 必須 留言板內(nèi)容 * act 必須 借口標(biāo)識(shí) * 返回參數(shù)說(shuō)明 * 成功:{"error":"0","id":1,"time":"2016-11-30"} * 失?。簕"error":1,"msg":"留言失敗,請(qǐng)重試"} * * 2.up * id 必須 留言的id編號(hào) * act 必須 接口標(biāo)識(shí) up * 返回聲明 * 成功:{"error":"0"} * 失?。簕"error":"1","msg":"點(diǎn)贊失敗"} * * 3.分頁(yè)(獲取頁(yè)碼的接口); * act 必須 接口標(biāo)識(shí) count * 返回參數(shù)說(shuō)明: * 成功:{"error":"0","countPage":"3"}; * 失?。簕"error":"1","msg":"請(qǐng)求數(shù)據(jù)失敗,請(qǐng)重試!"} * * 4.分頁(yè)(點(diǎn)擊頁(yè)碼跳轉(zhuǎn)) * url:http://localhost/phpStudy/ajax03/message.php * 提交方式:get * 提交參數(shù)說(shuō)明: * starPage 必須參數(shù) 頁(yè)碼索引值 * act 必須 接口標(biāo)識(shí) page * 返回參數(shù)說(shuō)明 * 成功:{"error":"0","data":[{},{},{},{},{}]} * 失?。簕"error":"1","msg":"數(shù)據(jù)查詢失敗,請(qǐng)重試!"} * */ include_once "comment.php"; $act = $_GET["act"];//接口請(qǐng)求標(biāo)識(shí) switch ($act) { case 'add'://提交留言 $content = $_GET["content"]; $time = time(); $times = date("Y-m-d H:i:s",$time); $query = "INSERT INTO microblog(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]; echo json_encode($arr);//將數(shù)組轉(zhuǎn)化為json,方便前端使用 } else{ $arr = ["error"=>1,"msg"=>"留言失敗,請(qǐng)重試!"]; echo json_encode($arr);//將數(shù)組轉(zhuǎn)化為json,方便前端使用 } break; case 'up': $id = $_GET['id']; $search = "SELECT up FROM microblog WHERE id = $id"; $result = mysqli_query($link, $search); $upNum = mysqli_fetch_row($result)[0]; $upNum++; $query = "UPDATE microblog SET up='{$upNum}' WHERE id = '{$id}'"; mysqli_query($link,$query); if(mysqli_affected_rows($link)){//更新數(shù)據(jù)成功 echo '{"error":"0"}'; } else{//更新失敗 echo '{"error":"1","msg":"點(diǎn)贊失敗!"}'; } break; case 'down': $id = $_GET['id']; $search = "SELECT down FROM microblog WHERE id = $id"; $result = mysqli_query($link, $search); $downNum = mysqli_fetch_row($result)[0]; $downNum++; $query = "UPDATE microblog SET down='{$downNum}' WHERE id = '{$id}'"; mysqli_query($link,$query); if(mysqli_affected_rows($link)){//更新數(shù)據(jù)成功 echo '{"error":"0"}'; } else{//更新失敗 echo '{"error":"1","msg":"踩失??!"}'; } break; case 'remove': $id = $_GET['id']; $query ="DELETE FROM microblog WHERE id='{$id}'"; mysqli_query($link,$query); if(mysqli_affected_rows($link)>0){//刪除數(shù)據(jù)成功 echo '{"error":"0"}'; } else{ echo '{"error":"1","msg":"刪除失?。?}'; } break; case 'count'://返回總頁(yè)碼 $query = "SELECT count(id) FROM microblog"; $result = mysqli_query($link, $query); $count = mysqli_fetch_row($result)[0];//以索引數(shù)組形式返回查詢結(jié)果 $countPage = ceil($count/5); echo '{"error":"0","countPage":"'.$countPage.'"}'; break; case 'page'://點(diǎn)擊分頁(yè)或者是頁(yè)面第一次加載 $index = $_GET["num"]*5; $search = "SELECT * FROM microblog ORDER BY id DESC LIMIT {$index},5";//倒敘查詢留言 $result = mysqli_query($link, $search); $arr = [];//存查詢出來(lái)的數(shù)據(jù) while($row = mysqli_fetch_assoc($result)){ array_unshift($arr,$row); } // print_r($arr); // {"error":"0","info":[{},{},{},{},{}]} $resultArr = ["error"=>"0","info"=>$arr]; echo json_encode($resultArr); break; } ?>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ajax類AJAXRequest v0.8.01 2008-01-31 最新版附使用幫助
2008-02-02AJAX請(qǐng)求數(shù)據(jù)及實(shí)現(xiàn)跨域的三種方法詳解
ajax跨域這個(gè)問(wèn)題其實(shí)很常見(jiàn),這篇文章主要給大家介紹了關(guān)于AJAX請(qǐng)求數(shù)據(jù)及實(shí)現(xiàn)跨域的三種方法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12關(guān)于異步請(qǐng)求ajax原理以及原生Ajax、$.ajax的基本使用詳解
這篇文章主要介紹了關(guān)于異步請(qǐng)求ajax原理以及原生Ajax、$.ajax的基本使用詳解,ajax現(xiàn)在是前后端交互的重要工具,可以說(shuō),只要從事于it行業(yè),ajax那就是必須要掌握的一名技術(shù),下面我們就來(lái)對(duì)ajax進(jìn)行介紹,需要的朋友可以參考下2023-05-05Ajax 設(shè)置Access-Control-Allow-Origin實(shí)現(xiàn)跨域訪問(wèn)
這篇文章主要介紹了Ajax 設(shè)置Access-Control-Allow-Origin實(shí)現(xiàn)跨域訪問(wèn),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02使用Ajax模仿百度搜索框的自動(dòng)提示功能實(shí)例
今天小編就為大家分享一篇使用Ajax模仿百度搜索框的自動(dòng)提示功能實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02解決AJAX返回狀態(tài)200沒(méi)有調(diào)用success的問(wèn)題
今天小編就為大家分享一篇解決AJAX返回狀態(tài)200沒(méi)有調(diào)用success的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08使用jQuery簡(jiǎn)化Ajax開(kāi)發(fā)
jQuery 是一個(gè)JavaScript 庫(kù),它有助于簡(jiǎn)化 JavaScript™ 以及 Asynchronous JavaScript + XML (Ajax) 編程。與類似的 JavaScript 庫(kù)不同,jQuery 具有獨(dú)特的基本原理,可以簡(jiǎn)潔地表示常見(jiàn)的復(fù)雜代碼。2009-11-11