わかりました、私は過去1時間これに取り組んでいましたが、私の人生ではこれを理解することはできません. それは LIMIT 2, 25 と言っています..もちろん、表示されるべき 2 つの行をスキップしています...私はまだ 1 ページにいますが、リンクも表示されません! 最初のページには、最初のページに表示する必要があるすべての行が表示されるため、0、25 である必要があると思います。
これまでのところ5行しかありませんが、そのうち3行しか表示されていません...最初の2行は、LIMIT句を追加するまでクエリが最初に生成したことを示していません。プログラミングに関して私が持っているものは次のとおりです。
public function category($id, $page = NULL) {
//grab topics
parent::before();
$data['forum_title'] = $this->forum->get_cat($id);
$data['id'] = $id;
$config = array();
$config['base_url'] = base_url() . 'forum/category/';
$config['total_rows'] = $this->forum->topic_count($id);
$config['per_page'] = 25;
$config['uri_segment'] = 4;
$this->pagination->initialize($config);
$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$data['topics_array'] = $this->forum->get_topics($id, $config['per_page'], $page);
$data['links'] = $this->pagination->create_links();
$this->load->view('forum/category', $data);
parent::after();
}
私はURI_SEGMENTの試練を理解していないことを認めます..私はちょっと理解していますが、実際にはそうではありません. これを生成するためのチュートリアルに従っていました。しかし、私は $limit と $start 変数を印刷し、制限は本来あるべきように 25 ですが、開始は 2.. と印刷されますが、最初のページでは 0 であるべきだと思います。まだ 25 件の結果が得られていないため、2 ページ目も存在しないはずです。
これがそれらを生成するための私の関数です。count_all_results() 関数が機能します (合計 5 つの結果が返されます)。しかし、LIMIT 句を追加するたびに get_topics() 関数が正しく機能しません。
//count the topics in a certain category id for pagination
public function topic_count($id) {
$this->db->where('cat_id', $id);
$this->db->from('forum_topic');
return $this->db->count_all_results();
}
//get all topics in a certain category
public function get_topics($id, $limit, $start) {
$this->db->distinct();
$this->db->select('t.id, t.title, t.sticky, t.locked, u.username as author, COUNT(p.id) as postcount, (SELECT u.username
FROM forum_post fp
INNER JOIN user u ON fp.author_id = u.user_id
WHERE fp.topic_id = t.id
ORDER BY fp.date DESC
LIMIT 1) as lposter, (SELECT fp.date
FROM forum_post fp
WHERE fp.topic_id = t.id
ORDER BY fp.date DESC
LIMIT 1) as lastdate');
$this->db->from('forum_topic t');
$this->db->join('user u', 'u.user_id = t.author_id', 'inner');
$this->db->join('forum_post p', 'p.topic_id = t.id', 'inner');
$this->db->where('t.cat_id', $id);
$this->db->group_by('t.id, t.title, t.sticky, t.locked, author, lposter, lastdate');
$this->db->order_by('t.sticky desc, p.date desc');
$this->db->limit($limit, $start);
return $this->db->get()->result();
}
私が現在アクセスしている URL は forum/category/2 です。したがって、ページは次のようになると想定しています。ページ 1 はフォーラム/カテゴリ/2/1、ページ 2 はフォーラム/カテゴリ/2/2など 正しい?? 4 番目の引数の位置にあるため、URI セグメントとして 4 を指定します。
どんな助けでも大歓迎です...
編集TTTTTTTT
わかりました誰かがこれで私を助けてくれました。ただし、ページ 2 をクリックすると (現時点では制限を 5 に下げ、現在 7 つの結果があるため、ページ 2 が生成されます... ID 2 (カテゴリ ID 2) が 5 に置き換えられます。ページ 2 へ??.... ページ 2 は次のようになります。