> 웹 프론트엔드 > JS 튜토리얼 > Ajax+mysql은 메시지 보드 기능을 생성합니다.

Ajax+mysql은 메시지 보드 기능을 생성합니다.

php中世界最好的语言
풀어 주다: 2018-04-02 14:58:10
원래의
1981명이 탐색했습니다.

이번에는 Ajax+mysql로 ​​게시판을 만드는 기능을 가져오겠습니다. Ajax+mysql로 ​​게시판을 만들 때 주의사항은 무엇인가요?

최근 Ajax와 MySQL 간의 데이터 상호 작용을 구현하기 위해 작은 데모를 만들었습니다. js 부분은 jq를 사용하고, 백엔드는 php를 사용하며, 데이터베이스는 mysql입니다. 나중에 node+mongodb 버전을 만들겠습니다.

mysql의 사용 및 설치에 대해서는 자세히 설명하지 않겠습니다. Baidu xampp, Apache 서버 및 mysql 데이터베이스를 직접 통합했는데 매우 사용하기 쉽습니다.

먼저 서버와 데이터베이스를 엽니다. 먼저 여기에 "11" 데이터베이스를 만든 다음 마이크로블로그라는 테이블을 만들었습니다. (참고: 여기서는 높은 버전의 mysql을 사용하고 있으며 데이터베이스에 연결하는 방법은 PHP입니다. 모두 mysqli_ 입니다. 버전이 너무 낮다면 mysql_ 메소드를 이용해서 직접 코드를 수정해주세요.)
코드 부분은 다음과 같습니다:

html 페이지와 js 부분:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

<!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-breakbreak-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> 

    <p id="box"

      <p id="head"

        留言板 

      </p> 

      <p id="fill_in"

        <textarea id="content"></textarea> 

        <button id="btn">提交留言</button> 

      </p> 

      <!--留言列表--> 

      <p id="message_text"

        <ul class="list"

        </ul> 

      </p> 

      <!--分页--> 

      <p 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> 

      </p> 

    </p> 

  </body> 

  <script src="Jq/jquery-3.1.1.min.js"

</html>

로그인 후 복사

코드가 완전히 표시되지 않습니다. 다음은 코드의 PHP 부분입니다.
계속 01부, jq의 ajax 요청:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

<script type="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){ 

//             var result = JSON.parse(data); 

              if (data.error==0) { 

                createLi(data.id,$("#content").val(),data.time); 

              else

                alert(data.msg); 

              

            

          }); 

        

          

      }); 

        

      //创建节点 

      function createLi(id,content,time){ 

        var html = $('<li><p>'+content+'</p><p class="control"><span>时间:'+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></p></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 코드 부분입니다:

1

2

3

4

5

6

7

8

<?php

  header("Content-type:text/html;charset=utf8");

   date_default_timezone_set("PRC");

   //链接数据库

   $link = mysqli_connect("localhost", "root", "", "eleven");

   //设置数据库编码格式

   mysqli_query($link, "set names utf8");

?>

로그인 후 복사

참고: 이 부분은 다른 일을 배울 때 호출했기 때문에 공개 코드로 작성했습니다. 따라서 다음 코드는 will have

1

include_once "comment.php";

로그인 후 복사

이 줄은 다른 코드를 나타냅니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

<?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 &#39;add&#39;://提交留言

      $content = $_GET["content"];

      $time = time();

      $times = date("Y-m-d H:i:s",$time);

      $query = "INSERT INTO microblog(id,content,time) VALUES(null,&#39;{$content}&#39;,&#39;{$times}&#39;)";

      mysqli_query($link,$query);

      $insertId = mysqli_insert_id($link);

      if($insertId>0){ 

        $arr = ["error"=>0,"id"=>$insertId,"time"=>$times]; 

        echo json_encode($arr);//将数组转化为json,方便前端使用 

      

      else

        $arr = ["error"=>1,"msg"=>"留言失败,请重试!"]; 

        echo json_encode($arr);//将数组转化为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)){//更新数据成功 

        echo '{"error":"0"}'

      

      else{//更新失败 

        echo '{"error":"1","msg":"点赞失败!"}'

      

      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)){//更新数据成功 

        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){//删除数据成功 

        echo '{"error":"0"}'

      

      else

        echo '{"error":"1","msg":"删除失败!"}'

      

      break

    case 'count'://返回总页码 

      $query "SELECT count(id) FROM   microblog"

      $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 * FROM microblog ORDER BY id DESC LIMIT {$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]; 

      echo json_encode($resultArr); 

      break

      

   

?>

로그인 후 복사

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사에 주목하세요!

추천 자료:

Ajax를 사용한 동기화와 비동기 구현의 차이점은 무엇입니까?

AJAX 도메인 간 요청 JSONP JSON 데이터를 얻는 자세한 단계(코드 포함)

위 내용은 Ajax+mysql은 메시지 보드 기능을 생성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿