• php+ajax+jquery分页并显示数据


    参考https://www.helloweba.com/view-blog-195.html

    html页面

    1         <div class="weui-cells" id="more">
    2             <!--  把class="sin"的页面数据追加append到id=“more”里面        -->
    3         </div>
    4         <div>
    5             <button></button>
    6         </div>

    上面的第一个div是显示帖子列表的地方,包括帖子的标题,作者昵称。

    第二个div是个按钮,显示下一页。


    jquery

    我们先声明变量,后面的代码要用到以下变量。

     var curPage = 1; //当前页码
     var total,pageSize,totalPage;
    

    接下来,我们自定义一个函数:getData(),用来获取当前页数据。函数中,我们利用$.ajax()向后台list_1test.php发送POST异步请求,将当前页码以JSON格式传递给后台。

     1                  function getData(page){ 
     2                     $.ajax({
     3                         type: "post",
     4                         url: "list_1test.php",
     5                         dataType:"json",
     6                         data: {'pageNum':page-1},
     7                         success: function(data) {
     8                             console.log(data);
     9                             total = data.num; //总记录数
    10                             pageSize = data.fnum; //每页显示条数
    11                             curPage = page; //当前页
    12                             totalPage = data.$pagenum; //总页数
    13                             var html = '';//定义html变量,他就是每次要加的代码
    14                             for (var i = 0; i < data.length; i++) {//在php后台我定义的每页有5条帖子,data.length=5
    15                                 html += '<div class="sin">' +
    16                                     '<a class="weui-cell weui-cell_access" href="aritle.php?id='+data[i]['postid']+'">' +
    17                                     //'<div class="postid">' +data[i]['postid']+ '</div>' +
    18                                     '<div class="weui-cell__bd">' +
    19                                     '<p class="title">' + data[i]['title'] + '</p>' +
    20                                     '</div>' +
    21                                     '<div class="weui-cell__ft">' +
    22                                     '<div class="nickname">'+data[i]['nickname']+'</div>' +
    23                                     '</div>' +
    24                                     '</a>' +
    25                                     '</div>';
    26                             }
    27                             $('#more').append(html);//追加
    28 
    29                         },
    30                         complete:function(){ //点击得到下一页
    31                             getPageBar();
    32                         },
    33                     });    
    34             }

    主要是获取下一页,rel的值

    1 function getPageBar(){
    2                 pageStr = "";
    3                 pageStr += "<span><a href='javascript:void(0)' rel='"+(parseInt(curPage)+1)+"'>点击加载更多</a>";
    4                 $("button").html(pageStr);
    5             }

    当页面第一次加载时,我们加载第一页数据即getData(1),当点击分页条中的下一页按钮时,调用getData(page)加载对应页码的数据。我们通过getPageBar()函数已预先在翻页连接的属性rel中在埋入了数字页码。

    1            $(function(){
    2                 getData(1);
    3                 $("button  span a").live('click',function(){
    4                     var rel = $(this).attr("rel");
    5                     if(rel){
    6                         getData(rel);
    7                     }
    8                 });
    9             });

    php

     1 <?php
     2 require ("mysql_class.php");
     3 $db = new Mysql("localhost", "root", "201122", "userdb");
     4 define("TABLENAME", "user_post");
     5 $select = $db -> selectsql(TABLENAME);
     6 $num = $db -> num($select);//总记录数
     7 $fnum = 5;//每页显示条数
     8 $pagenum = ceil($num / $fnum);//总页数
     9 $tmp = intval($_POST['pageNum']);//html页面传过来的,当前页数-1
    10 //防止恶意翻页
    11 if ($tmp+1 > $pagenum)
    12     echo "<script>window.location.href='list_1test.php'</script>";
    13 //计算分页起始值
    14 if ($tmp == 0) {
    15     $num1 = 0;
    16 } else {
    17     $num1 = $tmp * $fnum;
    18     
    19 }
    20 $query=mysql_query("SELECT *  FROM  user_post ORDER BY id DESC LIMIT " . $num1 . ",$fnum");// user_post帖子数据库
    21 while($row=mysql_fetch_array($query)){
    22     $userid = $row['user_id'];
    23     $result = mysql_query("select * from user_nickname where user_id='$userid'");//存有用户昵称的数据库user_nickname
    24     $roww = mysql_fetch_array($result);
    25     $data[] = array(
    26         'title'=>$row['title'],
    27         'nickname'=>$roww['nickname'],
    28         'postid'=>$row['id']
    29       );
    30       
    31   
    32 }
    33 
    34      die(json_encode($data));
    35 ?>

    点击帖子之后显示文章的aritle.php

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>
     6             文章
     7         </title>
     8         <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
     9         <link rel="stylesheet" href="https://weui.io/weui.css" />
    10     </head>
    11     <body>
    12     </body>
    13 </html>
    14 <?php
    15 //$id=$_GET['id'];
    16 
    17 require ("mysql_class.php");
    18 $db = new Mysql("localhost", "root", "201122", "userdb");
    19 //$id1 = intval($_GET['id']);
    20 $postid = intval($_GET['id']);//list_1.html传过来的帖子数据库里的帖子的id
    21 define("TABLENAME", "user_post");
    22 $select = $db -> selectsql(TABLENAME);
    23 $num = $db -> num($select);
    24 for ($i = 0; $i < $num; $i++) {
    25     $row = $db -> arr($select);
    26     $id = $row['id'];
    27     $title = $row['title'];
    28     $aritle = $row['aritle'];
    29     if ($id == $postid) {
    30         echo '<article class="weui-article">
    31             <h1>' . $title . '</h1>
    32             <section>
    33                 <section>
    34                     <p>' . $aritle . '</p>
    35                 </section>
    36             </section>
    37         </article>';
    38     }
    39 
    40 }
    41 ?>

    最后汇总

    要在谷歌浏览器中显示,否则一些样式不管用。

    1.list_1.html

      1 <!DOCTYPE html>
      2 <html>
      3 
      4     <head>
      5         <meta charset="UTF-8">
      6         <title>
      7             帖子列表
      8         </title>
      9         <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
     10         <link rel="stylesheet" href="https://weui.io/weui.css" />
     11         <script type="text/javascript" src="jquery.min.js"></script>
     12         <script type="text/javascript" src="jquery.more.js"></script>
     13         <script src="https://weui.io/zepto.min.js"></script>
     14         <script type="text/javascript">
     15             var curPage = 1; //当前页码
     16             var total,pageSize,totalPage;
     17             //$(document).ready(function() { 
     18             function getData(page){ 
     19                     $.ajax({
     20                         type: "post",
     21                         url: "list_1test.php",
     22                         dataType:"json",
     23                         data: {'pageNum':page-1},
     24                         success: function(data) {
     25                             console.log(data);
     26                             total = data.num; //总记录数
     27                             pageSize = data.fnum; //每页显示条数
     28                             curPage = page; //当前页
     29                             totalPage = data.$pagenum; //总页数
     30                              var html = '';
     31                             for (var i = 0; i < data.length; i++) {
     32                                 html += '<div class="sin">' +
     33                                     '<a class="weui-cell weui-cell_access" href="aritle.php?id='+data[i]['postid']+'">' +
     34                                     //'<div class="postid">' +data[i]['postid']+ '</div>' +
     35                                     '<div class="weui-cell__bd">' +
     36                                     '<p class="title">' + data[i]['title'] + '</p>' +
     37                                     '</div>' +
     38                                     '<div class="weui-cell__ft">' +
     39                                     '<div class="nickname">'+data[i]['nickname']+'</div>' +
     40                                     '</div>' +
     41                                     '</a>' +
     42                                     '</div>';
     43                             }
     44                             $('#more').append(html);
     45 
     46                         },
     47                         complete:function(){ //点击得到下一页
     48                             getPageBar();
     49                         },
     50                     });    
     51             }
     52             
     53             function getPageBar(){
     54                 pageStr = "";
     55                 pageStr += "<span><a href='javascript:void(0)' rel='"+(parseInt(curPage)+1)+"'>点击加载更多</a>";
     56                 $("button").html(pageStr);
     57             }
     58             
     59             $(function(){
     60                 getData(1);
     61                 $("button  span a").live('click',function(){
     62                     var rel = $(this).attr("rel");
     63                     if(rel){
     64                         getData(rel);
     65                     }
     66                 });
     67             });
     68         </script>
     69         
     70     </head>
     71 
     72     <body>
     85         <div class="weui-cells__title">
     86             帖子列表
     87         </div>
     88 
     89         <div class="weui-cells" id="more">
     90             <!--  把class="sin"的页面数据追加append到id=“more”里面        -->
     91         </div>
     92         <div>
     93             <button></button>
     94         </div>
     95             
     96         
     97      
     98     </body>
     99 
    100 </html>
    101 
    102 
    103 104 
    105

    2.list_1test.php

     1 <?php
     2 require ("mysql_class.php");
     3 $db = new Mysql("localhost", "root", "201122", "userdb");
     4 define("TABLENAME", "user_post");
     5 $select = $db -> selectsql(TABLENAME);
     6 $num = $db -> num($select);//总记录数
     7 $fnum = 5;//每页显示条数
     8 $pagenum = ceil($num / $fnum);//总页数
     9 $tmp = intval($_POST['pageNum']);//html页面传过来的,当前页数-1
    10 //防止恶意翻页
    11 if ($tmp+1 > $pagenum)
    12     echo "<script>window.location.href='list_1test.php'</script>";
    13 //计算分页起始值
    14 if ($tmp == 0) {
    15     $num1 = 0;
    16 } else {
    17     $num1 = $tmp * $fnum;
    18     
    19 }
    20 $query=mysql_query("SELECT *  FROM  user_post ORDER BY id DESC LIMIT " . $num1 . ",$fnum");
    21 while($row=mysql_fetch_array($query)){
    22     $userid = $row['user_id'];
    23     $result = mysql_query("select * from user_nickname where user_id='$userid'");
    24     $roww = mysql_fetch_array($result);
    25     $data[] = array(
    26         'title'=>$row['title'],
    27         'nickname'=>$roww['nickname'],
    28         'postid'=>$row['id']
    29       );
    30       
    31      
    32 }
    33 
    34      die(json_encode($data));
    35 ?>

    3.aritle.php

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>
     6             文章
     7         </title>
     8         <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
     9         <link rel="stylesheet" href="https://weui.io/weui.css" />
    10     </head>
    11     <body>
    12     </body>
    13 </html>
    14 <?php
    15 //$id=$_GET['id'];
    16 
    17 require ("mysql_class.php");
    18 $db = new Mysql("localhost", "root", "201122", "userdb");
    19 //$id1 = intval($_GET['id']);
    20 $postid = intval($_GET['id']);
    21 define("TABLENAME", "user_post");
    22 $select = $db -> selectsql(TABLENAME);
    23 $num = $db -> num($select);
    24 for ($i = 0; $i < $num; $i++) {
    25     $row = $db -> arr($select);
    26     $id = $row['id'];
    27     $title = $row['title'];
    28     $aritle = $row['aritle'];
    29     if ($id == $postid) {
    30         echo '<article class="weui-article">
    31             <h1>' . $title . '</h1>
    32             <section>
    33                 <section>
    34                     <p>' . $aritle . '</p>
    35                 </section>
    36             </section>
    37         </article>';
    38     }
    39 
    40 }
    41 ?>

    4.mysql_class.php

     1 <?php
     2 header("content-type:text/html;charset=utf-8");
     3 class Mysql {
     4     private $host;
     5     //服务器地址
     6     private $root;
     7     //用户名
     8     private $password;
     9     //密码
    10     private $database;
    11     //数据库名
    12 
    13     //通过构造函数初始化类
    14     function Mysql($host, $root, $password, $database) {
    15         $this -> host = $host;
    16         $this -> root = $root;
    17         $this -> password = $password;
    18         $this -> database = $database;
    19         $this -> connect();
    20     }
    21 
    22     function connect() {
    23         $this -> conn = mysql_connect($this -> host, $this -> root, $this -> password);
    24         //        if($this->conn){
    25         //            echo "连接mysql成功";
    26         //        }else{
    27         //            echo "连接mysql失败";
    28         //        }
    29         //        $this->conn=
    30         mysql_select_db($this -> database, $this -> conn);
    31         //        if($this->conn){
    32         //            echo "连接db成功";
    33         //        }else{
    34         //            echo "连接db失败";
    35         //        }
    36         mysql_query("set names utf8");
    37     }
    38 
    39     function dbClose() {
    40         mysql_close($this -> conn);
    41     }
    42 
    43     function query($sql) {
    44         return mysql_query($sql);
    45     }
    46 
    47     function row($result) {
    48         return mysql_fetch_row($result);
    49 
    50     }
    51 
    52     function arr($result) {
    53         return mysql_fetch_array($result);
    54     }
    55     function ass($result) {
    56         return mysql_fetch_assoc($result);
    57     }
    58     function num($result) {
    59         return mysql_num_rows($result);
    60     }
    61 
    62     function select($tableName, $condition) {
    63         return $this -> query("SELECT COUNT(*) FROM $tableName $condition");
    64     }
    65 
    66     function selectsql($tableName) {
    67         return $this -> query("SELECT * FROM $tableName");
    68     }
    69 
    70     function selectcon($tableName, $condition) {
    71         return $this -> query("SELECT * FROM $tableName $condition");
    72     }
    73 
    74     function insert($tableName, $fields, $value) {
    75         $this -> query("INSERT INTO $tableName $fields VALUES$value");
    76     }
    77 
    78     
    79 
    80 }
    81 ?>

    l两个数据表

    帖子发布的数据表

    存有用户昵称的数据表

    两个表中的user_id是外键。主键user_id在user_register里面。自行设置。也可以只做一个表。把mysql语句改了就行。

     

  • 相关阅读:
    Apache 虚拟主机 VirtualHost 配置
    ajax无线级刷新
    Apache中 RewriteRule 规则参数介绍
    用户注册
    用户登录
    Android 侧滑菜单
    PhontoShop CS6 视频
    ArcGis地图
    Android 汉子转换成拼音
    UTF-8 转 GBK
  • 原文地址:https://www.cnblogs.com/tanyongli/p/7418546.html
Copyright © 2020-2023  润新知