2017-09-09 17 views
0

以下のコードは通常のページネーションを行っています。私はAjaxを使ってページ分割をする方法の説明をしたいと思います。私の頭はPHP OOを使っていると混乱していますOOPHP OO - Ajaxページネーション

ページネーションリンクでajaxを使うにはどうすればいいですか? ".$self."?page_no=".$next."

テーブルの末尾に以下のコードである

のindex.php

<?php 
     $query = "SELECT * FROM users ORDER BY id DESC";  
     $records_per_page=7; 
     $newquery = $crud->paging($query,$records_per_page); 
     $crud->dataview($newquery); 
    ?> 
    <tr> 
     <td colspan="7" align="center"> 
      <nav aria-label="Page navigation example"> 
      <?php $crud->paginglink($query,$records_per_page); ?> 
      </nav> 
     </td> 
    </tr> 

class.crud.php

public function paginglink($query,$records_per_page) 
    { 

     $self = $_SERVER['PHP_SELF']; 

     $stmt = $this->db->prepare($query); 
     $stmt->execute(); 

     $total_no_of_records = $stmt->rowCount(); 

     if($total_no_of_records > 0) 
     { 
      ?><ul class="pagination"><?php 
      $total_no_of_pages=ceil($total_no_of_records/$records_per_page); 
      $current_page=1; 
      if(isset($_GET["page_no"])) 
      { 
       $current_page=$_GET["page_no"]; 
      } 
      if($current_page!=1) 
      { 
       $previous =$current_page-1; 
       echo "<li class='page-item'><a class='page-link' href='".$self."?page_no=1'>First</a></li>"; 
       echo "<li class='page-item'><a class='page-link' href='".$self."?page_no=".$previous."'>Back</a></li>"; 

      } 
      for($i=1;$i<=$total_no_of_pages;$i++) 
      { 
       if($i==$current_page) 
       { 
        echo "<li class='page-item'><a class='page-link' href='".$self."?page_no=".$i."' style='color:red;'>".$i."</a></li>"; 
       } 
       else 
       { 
        echo "<li class='page-item'><a class='page-link' href='".$self."?page_no=".$i."'>".$i."</a></li>"; 
       } 
      } 
      if($current_page!=$total_no_of_pages) 
      { 
       $next=$current_page+1; 
       echo "<li class='page-item'><a class='page-link' href='".$self."?page_no=".$next."'>Next</a></li>"; 
       echo "<li class='page-item'><a class='page-link' href='".$self."?page_no=".$total_no_of_pages."'>Last</a></li>"; 
      } 
      ?></ul><?php 
     } 
    } 

私は、Ajaxを埋めるために正確にどのように知りませんヘッダーには

<script> 
function() { $.ajax({ 
    url: url, 
    type: "GET", 
    data: , 
    success: , 
    error:    
    }); 
} 
</script> 

--- --- UPDATE

私はすでに

を進化させることができました助けを借りて、私は2つのブートストラップの列を持って、どのようにAJAXの作品を学ぶ、左の登録フォームとしていますすでに登録されているものとページングを含むもののリストを右に表示します。ページ番号ページ(私は<table #content-of-table>タグ内のテーブルタグにidを入れます)をクリックすると、ページ全体が複製され、ページネーションは機能していますが、画面の内容全体がテーブルタグに表示されます。

私はjqueryの

$('.page-link').click(function (e) { 
    e.preventDefault(); 

    var url = $(this).data('href'); 

    $.ajax({ 
     url: url, 

     success: function (response) { 
       $('#content-of-page').html(response) 
     } 
    }); 
}) 
+0

正確に何をしますか?現時点では何が働いていないのですか?あなたには何をすべきですか? 16件の意見があり、あなたの質問に対するコメントや回答はありません。問題を説明できるかもしれません。ありがとうございました – jagb

答えて

0

開始するにhrefからURLを取り、data-href

"<a href='#' class='page-link' data-href='".$self."?page_no=".$previous."'>Back</a>"; 

に入れます。

厳密に言えば、これはOOP自体とはほとんど関係がありませんが、それは信じられないほど難しいことです。

通常、ajaxはクライアント側でサーバー側と対話できるようにするために使用されます。これは、通常はページがクライアント側でレンダリングされた後ではできません。

これは、実際には、ajaxを使用してデータベースなどのリソースにアクセスし、ページの更新を必要とせずにページの内容を更新できるようにすることがほとんどです。

は、私たちは、PHPのビットを持ってみましょう:

<?php 
//file somephpfile.php 
$somevalueyouwillget = $_POST["somevaryouwanttopass"]; 

echo $somevalueyouwillget; 
?> 

と一部のHTML:

<!-- since we use it below, your include of jquery - but if you do it with js it is not necessary --> 
<div id="somepage"> 
    Some text that was rendered normally on landing. 
    <div id="thecontentsIwanttoupdatewithajax"> 
     Some contents rendered on landing. 
    </div> 
    <button onclick="updateallthethings();">A button that updates stuff</button> 
</div> 

、最終的にはそれをすべての仕事、javascriptやjqueryののビットにするもの。私自身.post $使用したい(単なる一例を、あなたが成功、失敗などを処理する必要があります):

<div id="thecontentsIwanttoupdatewithajax"> 
    duuuude 
</div> 

これは一言で言えば、それであるだろうそのうち

function updateallthethings() { 
    $.post('somephpfile.php', { somevaryouwanttopass: 'duuuude', orsomearrayinstead: { varone : valone, vartwo: valtwo } }, function(out) { 
     console.log(out); //debugging saves millions of lives every year 
     //"out" is ANYTHING that was rendered on the php side of things. 
     //for our example we use that to update the contents of our div - in your case, to replace page 1 with page 2. 
     $("#thecontentsIwanttoupdatewithajax").html(out); 
    }); 
} 

結果。それは理にかなっていますか?

+0

ありがとうございました、それは理にかなっています、私は私の質問を更新してください – Gislef

関連する問題