0

テンプレートで AJAX を使用してニュース ブロックを作成しようとしています。だから私はHTML部分に簡単なコードを書いた:

<a href="javascript:ShowPost();">Show Posts</a>
<div id="result"></div>

jQuery の部分:

function ShowPost(){
  $.post(dir + 'engine/ajax/posts.php', {action:"showpost"},
    function(data) {
      $("#result").html(data);
});
};

PHP 部分:

if ($_POST['action'] == "showpost") {    
 $db->query( "SELECT title FROM post LIMIT 0,5 " );
  while ( $row = $db->get_row() ) {
   echo $row['title']."<br>";
  }    
}

質問は、最初のクリックでより多くの結果を得るにはどうすればよいですか? たとえば、 [投稿の表示] リンクを最初にクリックした後、データベースから 5 つのニュースを表示できます。[投稿の表示] リンクを2 回クリックした後、6 から 10 のニュースを表示する必要があり、 3 回目のクリックで 11 から 15 の結果を取得して続行します ...

私の質問を理解していただければ幸いです。

4

3 に答える 3

1

urクエリにページネーション制限を実装するだけです

var offset = -5;
function ShowPost(){
offset = offset + 5;
  $.post(dir + 'engine/ajax/posts.php', {action:"showpost",offset:offset},
    function(data) {
      $("#result").html(data);
});
};

PHP part

if ($_POST['action'] == "showpost") {

$vOffset = $_POST['offset'];    
 $db->query( "SELECT title FROM post LIMIT $vOffset,5 " );
  while ( $row = $db->get_row() ) {
   echo $row['title']."<br>";
  }    
}
于 2013-07-03T08:17:20.903 に答える
1

実装に基づいて、表示したアイテムの数を追跡し、ページ番号を渡す必要があります。次に例を示します。

jQuery の部分:

var pageNumber = 0; 
function ShowPost() {   
   pageNumber++;   
   $.post(dir+ 'engine/ajax/posts.php', {action:"showpost", pageNum: pageNumber},
      function(data) {
       $("#result").html(data); 
   }); 
};

免責事項: 私は PHP 開発者ではないので、以下のコードは疑似コードとして扱ってください。

PHP 部分:

if ($_POST['action'] == "showpost") {    
var pageSize = 5;  
var pageNumber = $_POST['pageNumber'];    
var from = (pageNumber - 1) * pageSize;   
var to = pageNumber * pageSize;  
$db->query( "SELECT title FROM post LIMIT " + from + "," + pageSize);   
while ( $row = $db->get_row()) {    echo $row['title']."<br>";   }     
}
于 2013-07-03T08:13:44.513 に答える
0

html の非表示フィールドを取得し、呼び出しが成功するたびにその値を更新し、次に次のレコードを呼び出したときにその値をポストに送信します。

<input type="hidden" name="limit" value="5">
<a href="javascript:ShowPost();">Show Posts</a>
<div id="result"></div>
于 2013-07-03T08:14:17.080 に答える