>백엔드 개발 >PHP7 >PHP7 메시지 보드 개발의 Ajax 페이징

PHP7 메시지 보드 개발의 Ajax 페이징

coldplay.xixi
coldplay.xixi앞으로
2020-12-17 10:07:071964검색

php7 tutorial이 칼럼에서는 메시지 보드 개발의 Ajax 페이징을 소개합니다

PHP7 메시지 보드 개발의 Ajax 페이징

권장(무료): php7 tutorial

기본 페이지의 지원으로 사용자를 개선하고 싶습니다. 페이지 경험이 있는 경우 비동기 데이터 로딩이 현재 이를 처리하는 가장 좋은 방법입니다. Ajax 페이징은 연습을 위한 최고의 응용 시나리오입니다. 사용된 지식 포인트는 Friends의 마지막 수업인 PHP7 메시지 보드 개발(Ajax 비동기 제출)에서 어느 정도 소개되었습니다. 이전 섹션의 내용을 읽어보세요.

튜토리얼 분석
  • 1. gotopage(){}함수
    정의 JavaScript에는 함수 기반 범위가 정의되어 있는 한 현재 페이지를 전역적으로 사용할 수 있습니다. 식별자는 gotopage입니다.
  • gotopage(){}函数JavaScript具有基于函数的作用域,只要定义了,当前页面的是全局可用的,标识就是gotopage
  • 2、Ajax异步操作
    上节课的内容,这里最要是异步请求的时候注意是GET方式,ajax.php是异步请求服务端需要处理的逻辑文件,接收用户翻页请求,返回响应页数的数据即可(当然其他格式的内容就行,比如JSON,这里就不讲解)。
  • 3、JS打印数据innerHTML

在指定的页面区域打印翻页数据<ul id="list_box"><u/>,这里的样式结构是要在ul标签内输出内容,所以用JS选择器document.getElementById("list_box"),获取ul标签的对象,然后运用其中的innerHTML属性赋值内容,完成我们想要的结果document.getElementById("list_box").innerHTML = '服务器返回的数据';

  • 4、JS循环for的运用,遍历所有页码并标识当前页码

用选择器获取所有的页面对象var pageno = document.getElementsByClassName('pageno');
计算总页码数量pageno.length
for循环遍历直到匹配到当前用户请求的page页码数即当前页,匹配成功就给当前页数添加样式(标识当前请求成功的页数)。

本教程基于老友记之PHP7留言板开发(分页)内容上改动。

HTML代码list.php
<?php
include &#39;config.php&#39;;

$page = !empty($_GET[&#39;page&#39;])?intval($_GET[&#39;page&#39;]):1;
$keyword = !empty($_GET[&#39;keyword&#39;])?strip_tags($_GET[&#39;keyword&#39;]):&#39;&#39;;
$pagesize = 6;

// 统计总记录数,便于计算出总页数
if(!empty($keyword)){
    $sql = "SELECT * FROM feedback WHERE name LIKE &#39;%{$keyword}%&#39;";
}else{
    $sql = "SELECT * FROM feedback";
}
$result = mysqli_query($mysqli, $sql);
$total = mysqli_affected_rows($mysqli);
$total_page = ceil($total/$pagesize); // 进一法取整获取总页数

// 开始分页查询,根据page计算偏移量
$offset = ($page - 1) * $pagesize;

if(!empty($keyword)){
    $sql = "SELECT * FROM feedback WHERE name LIKE &#39;%{$keyword}%&#39; LIMIT {$offset}, {$pagesize}";
}else{
    $sql = "SELECT * FROM feedback LIMIT {$offset}, {$pagesize}";
}
$result = mysqli_query($mysqli, $sql);

$lists = array();
while($rows = mysqli_fetch_array($result)){
    $lists[] = $rows;
}

?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>异步翻页+列表带搜索功能_留言板_科科分享</title>
        <!-- 2.新建css样式文件并根据效果图编写css代码 -->
        <link rel="stylesheet" href="feedback.css">
        <script>
            function gotopage(page, keyword){
                if(page<0){
                    page = 1;
                }
                // 创建 XMLHttpRequest 对象
                var ajax, url;
                if(window.XMLHttpRequest){
                    ajax = new XMLHttpRequest();
                }else{
                    // 兼容Internet Explorer(IE5 和 IE6)使用 ActiveX 对象
                    ajax = new ActiveXObject("Microsoft.XMLHTTP");
                }
                url = &#39;page.php?page=&#39; + page + &#39;&keyword=&#39; + keyword;
                ajax.open(&#39;GET&#39;, url, true);
                ajax.send();
                ajax.onreadystatechange = function(){
                    // 获取服务器响应状态码
                    if(ajax.readyState == 4 && ajax.status==200){
                        // 获取服务器返回的响应返回的数据
                        var retdata = ajax.responseText;
                        // 如果返回的时候不为空的时候,就输出
                        
                        if(retdata){
                            // 这里是将异步请求的数据 在指定区域(list_box)展示给用户看
                            document.getElementById("list_box").innerHTML = retdata;

                            // 最后将页面中的定位当前分页数,告诉用户当前在哪个分页
                            // 这里相对逻辑会复杂点,慢慢领会
                            // 第一步获取所有分页数的集合
                            var pageno = document.getElementsByClassName(&#39;pageno&#39;);
                            // 这里用到for循环遍历 从多个分页的集合获取当前用户点击的那个分页链接并添加样式active
                            for(var i=0; i<pageno.length; i++){
                                pageno[i].className = &#39;pageno&#39;;
                                // parseInt(i)+1意思是当前分页,
                                if(parseInt(i)+1 == page){
                                    pageno[i].className = &#39;pageno active&#39;;
                                }
                            }
                        }
                    }
                }
            }
        </script>
    </head>
    <body>
        <!-- 工作区,呈现给用户看的 -->
        <!-- 1.开始搭建脚手架 -->
        <p class="container_box">
            <p class="up">
                <h3 class="title">留言板</h3>
                <h5 class="subtitle">LIST</h5>
            </p>
            <p class="down list">
                <p class="search">
                <form action="list.php">    
                关键词:<input type=&#39;text&#39; name="keyword" value="<?php echo $keyword?>" />
                <input type="submit" value="去搜索">
                </form>
                </p>
                <ul id="list_box">
                    <?php
                    foreach($lists as $item){
                    ?>
                    <li>姓名:<?php echo $item[&#39;name&#39;]?> 联系方式:<?php echo $item[&#39;contact&#39;]?> 内容:<?php echo $item[&#39;content&#39;]?></li>
                    <?php
                    }
                    ?>
                </ul>
                <p class="pages">
                    <ul>
                        <?php
                        for($p = 1; $p<=$total_page; $p++){
                        ?>
                        <li class="pageno"><a href="javascript:gotopage(<?php echo $p?>, '<?php echo $keyword?>');"><?php echo $p?></a></li>
                        <?php
                        }
                        ?>
                    </ul>
                </p>
            </p>
        </p>
    </body>
</html
异步分页代码page.php
2. Ajax 비동기 작업 이전 강의 내용 중 여기서 가장 중요한 것은 비동기 요청을 할 때 GET 메서드에 주의하는 것입니다. >ajax.php 비동기 요청 서버에서 처리해야 하는 논리 파일입니다. 사용자의 페이지 넘김 요청을 수신하고 응답 페이지 수(물론 내용은 다음과 같습니다)를 반환하면 됩니다. JSON과 같은 다른 형식은 여기서 설명하지 않습니다.)
3. JS 인쇄 데이터 innerHTML

지정된 페이지 영역의 페이지 넘김 데이터 인쇄

    에서 스타일 구조는 ul 태그 내의 콘텐츠를 출력하는 것이므로 JS 선택기 document.getElementById("list_box")를 사용하여 ul 태그 객체를 얻은 다음 innerHTML 속성을 ​​사용하여 우리가 원하는 결과를 얻기 위해 콘텐츠를 할당합니다. document.getElementById("list_box").innerHTML = '서버에서 반환된 데이터'; code>

    🎜4. JS 루프 for를 사용하여 모든 페이지 번호를 탐색하고 현재 페이지 번호 식별🎜선택기 사용 모든 페이지 객체를 얻으려면var pageno = document.getElementsByClassName('pageno');🎜전체 페이지 번호 계산pageno.length🎜현재 사용자 요청이 일치할 때까지 반복합니다. 페이지 페이지 번호는 현재 페이지입니다. 일치에 성공하면 현재 페이지 번호에 스타일이 추가됩니다(현재 페이지 번호를 식별함). 요청이 성공했습니다). 🎜
    🎜본 튜토리얼은 프렌즈의 PHP7 게시판 개발(페이지네이션) 컨텐츠를 기반으로 제작되었습니다. 🎜
    🎜HTML 코드 list.php🎜
    <?php
    include 'config.php';
    
    $page = !empty($_GET['page'])? intval($_GET['page']):1;
    $keyword = !empty($_GET['keyword'])?addslashes(strip_tags($_GET['keyword'])):'';
    
    $pagesize = 6;
    // 开始分页查询,根据page计算偏移量
    $offset = ($page - 1) * $pagesize;
    
    if(!empty($keyword)){
        $sql = "SELECT * FROM feedback WHERE name LIKE '%{$keyword}%' LIMIT {$offset}, {$pagesize}";
    }else{
        $sql = "SELECT * FROM feedback WHERE 1 LIMIT {$offset}, {$pagesize}";
    }
    
    $result = mysqli_query($mysqli, $sql);
    
    $lists = array();
    $list = '';
    
    while($rows = mysqli_fetch_array($result)){
        $list .= "<li>姓名:". $rows['name']." 联系方式:". $rows['contact']." 内容:".$rows['content']."</li>";
    }
    
    echo $list;
    exit;
    🎜비동기 페이징 코드 page.php🎜rrreee🎜Summary🎜🎜이 섹션은 초보자에게 상대적으로 어렵고 배운 지식 포인트는 이전에 배운 내용을 요약한 것입니다. 시작하기 전에 아이디어를 명확히 하고 단계별로 구현해야 합니다. 🎜생각하는 것이 매우 중요하다는 점을 기억하십시오. 학습만으로는 충분하지 않으며 다른 비슷한 요구 사항이 있을 때 숙달할 수 있어야 합니다. 🎜드디어 코딩을 시작할 시간입니다! ~🎜

    위 내용은 PHP7 메시지 보드 개발의 Ajax 페이징의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jianshu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제