私はAjaxとPhpを使って長い投稿にページを設定するコードを見つけようとしています。例えば 私の投稿は2000以上の単語を持っています。次のページをいくつかのページに分割したいと思います。&各ページは500語を有する。合計で4つのリンクを表示する必要があります。Ajax PHP Article Paginator
私が今までに得たのは、データベースレコードをページ付けするプラグインです。
いずれのリードも高く評価されます。
私はAjaxとPhpを使って長い投稿にページを設定するコードを見つけようとしています。例えば 私の投稿は2000以上の単語を持っています。次のページをいくつかのページに分割したいと思います。&各ページは500語を有する。合計で4つのリンクを表示する必要があります。Ajax PHP Article Paginator
私が今までに得たのは、データベースレコードをページ付けするプラグインです。
いずれのリードも高く評価されます。
記事にいくつの文字が含まれているかを確認するには、PHP strlen()
関数を使用できます。それでもしそれが500より大きいなら、$_GET
と新しいリンクを設定することができます...あなたはデータベースを持っているのか分かりませんが、記事をmysqlデータベースに保存することをお勧めします。
コード:
// This first query is just to get the total count of rows
$sql = "SELECT COUNT(id) FROM articles WHERE account_name=?"; // or you can use an strlen function here
$stmt = $conn->prepare($sql);
$stmt->bind_param("s",$u);
$stmt->execute();
$stmt->bind_result($rows);
$stmt->fetch();
$stmt->close();
// Here we have the total row count
// This is the number of results we want displayed per page
$page_rows = 10;
// This tells us the page number of our last page
$last = ceil($rows/$page_rows);
// This makes sure $last cannot be less than 1
if($last < 1){
$last = 1;
}
// Establish the $pagenum variable
$pagenum = 1;
// Get pagenum from URL vars if it is present, else it is = 1
if(isset($_GET['pn'])){
$pagenum = preg_replace('#[^0-9]#', '', $_GET['pn']);
}
// This makes sure the page number isn't below 1, or more than our $last page
if ($pagenum < 1) {
$pagenum = 1;
} else if ($pagenum > $last) {
$pagenum = $last;
}
// This sets the range of rows to query for the chosen $pagenum
$limit = 'LIMIT ' .($pagenum - 1) * $page_rows .',' .$page_rows;
// Establish the $paginationCtrls variable
$paginationCtrls = '';
// If there is more than 1 page worth of results
if($last != 1){
/* First we check if we are on page one. If we are then we don't need a link to
the previous page or the first page so we do nothing. If we aren't then we
generate links to the first page, and to the previous page. */
if ($pagenum > 1) {
$previous = $pagenum - 1;
$paginationCtrls .= '<a href="user.php?u='.$u.'&pn='.$previous.'#posts">Previous</a> '; // here we set up the link
// Render clickable number links that should appear on the left of the target page number
for($i = $pagenum-4; $i < $pagenum; $i++){
if($i > 0){
$paginationCtrls .= '<a href="user.php?u='.$u.'&pn='.$i.'#posts">'.$i.'</a> ';
}
}
}
// Render the target page number, but without it being a link
$paginationCtrls .= ''.$pagenum.' ';
// Render clickable number links that should appear on the right of the target page number
for($i = $pagenum+1; $i <= $last; $i++){
$paginationCtrls .= '<a href="user.php?u='.$u.'&pn='.$i.'#posts">'.$i.'</a> ';
if($i >= $pagenum+4){
break;
}
}
// This does the same as above, only checking if we are on the last page, and then generating the "Next"
if ($pagenum != $last) {
$next = $pagenum + 1;
$paginationCtrls .= ' <a href="user.php?u='.$u.'&pn='.$next.'#posts">Next</a> ';
}
}
私はあなたが、まさにこのビデオを見たいのか分からないので:pagination
Hello Mark Frankli、ありがとうございます。しかし、私が指摘したように、あなたが私に与えたことは、データベースレコードのためのAjaxページネイターです。私が必要としたのは、記事のAJAXページャー、例えばWordpressの投稿に長いブログ投稿のための次と前のボタンがあるような方法でした。 – rkelindungu
非常に長い記事が1つしかない場合は、ページの下部に到達するたびにコンテンツを読み込む自動化された機能を使用することができます。 1つの記事を複数の部分に分割することはお勧めしませんが、実際には、データベースインタラクション部分を削除して書き換えることで、上記のコードで簡単に行うことができます。 –
本をお勧めしますか見つけるために私たちを尋ねる質問、ツール、ソフトウェアライブラリ、チュートリアルや他のオフサイトリソースは、オピニオンレスポンスやスパムを引きつける傾向があるため、スタックオーバーフローのトピックではありません。代わりに、問題を説明し、それを解決するためにこれまでに何が行われているかを記述します。 –
短い - > ajaxのPHPファイルへのポストでは、phpファイルは分割データを取得します(したがって、あなたのクエリのためにlimit/offset変数を渡します)。結果をページに返します。PHPページでは、 prev/next/total pagesボタンの構造は利用可能なすべての情報を持っています – Matt