私は簡単なブログを作っています。ページにn
の投稿を表示し、さらに表示する投稿がある場合は、次のページへのナビゲートボタンを作成し、ユーザーがクリックすると次のページにn
の投稿を表示します。私は持っている私のindex.phpでPHPがn個の投稿をページに表示
class PageManager {
private $post_id;
// id of the latest post in the db
public function __construct() {
$this->post_id = PostManager::getLatestPostID();
}
public function displayPage() {
if (isset($_GET['page'])) {
$page_id = $_GET['page'] + 0;
}
else {
$page_id = 1;
}
$this->post_id = PostManager::displayNPosts(10, $this->post_id);
// $1 -> number of posts to display, $2 -> first post to display
// returning the last displayed post id or false if we displayed all posts from the db
// if there are still posts to display -> create navigation button to the next page
if ($this->post_id) {
echo '<div class = "container">';
echo '<ul class = "pager">';
echo '<li onclick = "show('.($page_id + 1).')"><a href = "index.php?page='.($page_id + 1).'">Next page</a></li>';
echo '</ul>';
echo '</div>';
}
}
:
$pm = new PageManager();
$pm->displayPage();
あなたが簡単に推測できるとおり、毎回私はOOPでそれをやっている
は、私はこのようになりますクラスPageManager
を持っていますユーザーが「次のページ」ボタンをクリックすると、index.phpがロードされるたびに新しい$pm
が作成されるため、同じn
の投稿が表示されます。私はそれを行うための素敵で簡単な方法を探しています。
教えてください、私を責めないでください。 ありがとうございます。
答えとparamsを送信して検証する良い方法をありがとう。しかし、不幸にも私の問題は解決されませんでした。なぜなら、index.phpが読み込まれるたびに新しい '$ pm'オブジェクトを作り続けているから、同じ記事を何度も何度も表示しているということです。 – RaspberryJam
入手しました。 $ this-> post_id = PostManager :: displayNPostsコールにページパラメータを渡す必要があります。パラメータを送信しない限り、常に同じ投稿を取得します。 page_idパラメータを取得しますが、ナビゲーションリンクにのみ使用します。 displayNPosts関数の仕組みは?私は最初のパラメータ-10-は限界であり、第2のパラメータはオフセットされていると思います。したがって、ページ番号に10を掛けて2番目のパラメータとして使用する必要があります。 –