CodeIgniterのページネーションでリンクが切り替わらない問題について

このQ&Aのポイント
  • CodeIgniterのページネーションを使用して10件ずつの一覧を表示しようとしていますが、11件目から20件目を表示するときに2ページ目の数字が黒のリンクなしに切り替わらず、「1」がリンクなしになっています。
  • 同様に21件目から30件目を表示するときに3ページ目の数字が黒のリンクなしに切り替わらず、「1」がリンクなしのままです。
  • 上記のソースコードでどこが間違っているのか教えていただきたいです。URLはhttp://hogehoge.com/mypage/(オフセット値)です。
回答を見る
  • ベストアンサー

codeigniterのページネーションについて

<?php class Test extends CI_Controller { public function __construct(){ parent::__construct(); // これ以降にコードを書いていく $this->load->model('rmodel'); $this->load->helper(array('form', 'url')); } public function index(){ $data["mlist"] = $this->my_list($this->uri->segment(2)); $data["page_link"] = $this->set_page_link(); //View $this->load->view('mypage',$data); } //ページめくり function set_page_link(){ $this->load->library('pagination'); $config['base_url'] = base_url().'mypage/'; $config['total_rows'] = $this->rmodel->Get_Count(); $config['per_page'] = 10; $config['cur_tag_open'] = '<strong>'; $config['cur_tag_close'] = '</strong>'; $this->pagination->initialize($config); return $this->pagination->create_links(); } function my_list($prm){ if($prm==""){ $prm=0; } $conv = $this->rmodel->Get_list(); $list = ""; for($i=$prm;$i<=$prm+9;$i++){ $list .= '<div class="nr">'."\n"; $list .= $conv[$i]["hoge"];              ・              ・              ・      $list .= '</div>'; } return $list; } } ?> として10件づつの一覧をページめくりする形で表示しようとしています。 ところが、11件目から20件目を表示するときに2ページ目のページめくりの数字が黒のリンクなしに切り替わらず、「1」がリンクなしになっています。 同様に21件目から30件目を表示するときに3ページ目のページめくりの数字が黒のリンクなしに切り替わらず、「1」がリンクなしのままです。 上記のソースでどこが悪いんでしょうか? URLはhttp://hogehoge.com/mypage/(offセット値) よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

次のいずれかで解決すると思います。 1. 「 set_page_link() 」メソッド内に「 $config['uri_segment'] = 2; 」を追加する。 2. 「 $config['base_url'] 」の値を「 base_url().'mypage/index/'; 」にして、 public function index($page=0){ $data["mlist"] =$this->my_list($page); とする。  「2.」の方をお勧めします・・・ ちなみに、クラス名は「Mypage」でしょうか。 class Test extends CI_Controller { => class Mypage extends CI_Controller {

参考URL:
http://www.ci-guide.info/practical/library/pagination/

関連するQ&A

  • codeigniterのsessionについて

    codeigniterで、管理画面を作っていて、今認証画面に取り掛かってますが、sessionが引き継がれません。 ※以下のコードは、session以外は省いてます。 controller側のtop.phpで、 class Top extends MY_Controller { public function __construct() { parent::__construct(); $this->load->library('session'); } public function index() { $superuser = array( 'superuser' => 'yes' ); $this->session->set_userdata($superuser); redirect('show'); } $this->load->view('admin/top', $page); } とし、controller側のshow.phpで、 class Show extends MY_Controller { public function __construct() { parent::__construct(); $this->load->library('session'); } public function index() { var_dump($this->session->userdata('superuser')); $this->load->view('admin/show'); } } としてますが、show.phpで、var_dumpがfalseを返してしまい、sessionが引き継がれません。 ご教授下さい。

    • 締切済み
    • PHP
  • PHPでページネーション

    よくあるページネーションで、効率的な方法を探しています。 知恵をお持ちの方、ご教授くださいませ。自分でもやってみましたがこんがらがってわかんなくなってしまいました。 ←(一つ前のページ) 1 2 3 4 5 6 7 8 9 (次のページ)→ 形はこんな感じです。ヤフーとかグーグルの形です。 現在のページはリンク無し、現在のページが1の時は前へ行く矢印←はリンク無し、同様に最終ページの場合もそのページと→にリンク無しです。 現在のページより前後5ページを出力しますが、1ページ目の時は前が無いため後ろに10ページを出力、同様に最終ページの時は前に10ページ出力します。 つまり、常に当該ページも入れて11ページ出力します。しかしリストすべきページが10ページに満たない場合はこの限りではありません。 またこれはヤフーとかには無い機能ですが、前(または後ろ)に行く矢印と数字の間に、最後のページに行くリンクを作ります。 ←(一つ前のページ) ←←(TOP=1件目) 5 6 ~ 10 ~ 14 15  →→  → このような感じです。 現在考えた(参考にした)のはループで回してページ数とリンクを出力という感じですが、これだと要望をうまく満たせません。 $sql = (略; $result = $sql; $resultcount = $result->numRows();//結果件数 $limit = 10;//1ページに表示する件数 $TOTALresultcount = ($resultcount % $limit);//結果ページ数算出 $NOWPAGE = 1; if($TOTALresultcount >= 1){ for($PAGE_COUNTER = 0 ; $PAGE_COUNTER < $resultcount ; ){ $PAGE_COUNTER++; if($NOWPAGE = = $PAGE_COUNTER){ echo "$PAGE_COUNTER"; }else{ echo '<a href="xxx">'.$PAGE_COUNTER.'</a>'; } } php4です。よろしくお願いします。

    • ベストアンサー
    • PHP
  • 「このページはリンクフリーです」を英語でいうと?

    こんにちは。 よく日本語のサイトには「このページはリンクフリーです。This Page is link-free.」などと書かれていますね。 海外のサイトでは、この英語を見かけたことが無い気がするのですが…(私だけ?) サーチエンジンで海外のサイトを探しても見つかりません。 英語で正しくは何と記述したら良いですか?

  • CodeIgniterでエラー

    CodeIgniterというフレームワークを利用してサイトを作成しようとしているのですが、うまく行きません。 index.phpというファイルに class Index extends CI_Controller { public function index() { $this->load->view('index'); } } としてviewフォルダにindex.phpというHTML主体のファイルを格納しました。 意図したページの表示が出ません。 色々調べたのですが、URLを簡素化する .htaccessの内容も RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?$1 [L] (A PHP Error was encountered Severity: Notice Message: Undefined property: Index::$load Filename: controllers/index.php Line Number: 7 というエラーが出ます) という例と RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L] (No input file specified.というエラーが出ます) という例があり2パターンがありますが、どちらが正解でしょうか? まだはじめたばかりでわからない事ばかりで教えて下さい。

    • ベストアンサー
    • PHP
  • event量産

    はじめまして! さっそくですが以下を <script type="text/javascript"> function $(e) { return document.getElementById(e); } function $$(n) { return $(n).childNodes[0].href; } function lh(u) { top.location.href = $$(u); } function addevent(node,evt,func){ if(node.addEventListener){ node.addEventListener(evt,func,false); } else if(node.attachEvent){ node.attachEvent("on"+evt,func); } } addevent( window,"load", function(){ //↓ここからが質問です addevent($("css_link"), "click", function(){ lh("css_link"); }); //↑これがうまくいったので var doo = "other_link"; addevent($(doo), "click", function(){ lh(doo); }); //↑次に向けてのテスト これもうまくいきました for(i=1;i<20;i++) { var names = "page"+i; addevent($(names), "click", function(){ lh(names); }); } //↑しかしこれがうまくいかない } ); </script> やっていることは<DIV>の中にある<A>のhref内容を読み取り、<DIV>と<A>の隙間をクリックしても同じURLにジャンプさせたいということです。 上記の"css_link"や"other_link"などの固定URLは羅列するつもりです。 これは問題なく動作します。 問題の ループさせている部分は"page1"~"page19"まで可変でPHPで書き出す部分です。 この部分の処理方法を教えてください。 もうひとつ質問です とりあえず19回ループさせていますが、ページ内に存在しないidを指定しても(実際はpage1,page2だけとか)現在はエラーにならないようですが、問題点などありましたら教えてください。 よろしくお願いします!

  • WordPress 検索結果ページのページ送り

    よろしくお願い致します。 WordPress 3.2.1を使用しています。 検索結果ページにページ送りを付けたく、下記URLを参考にさせて頂きました。 http://d.hatena.ne.jp/appakumaturi/20110528/1306585716 <?php function my_paginate(){ global $wp_query, $paged; $p_base = get_pagenum_link(1); $p_format = 'page/%#%'; //?の有無確認、有る場合は場所を特定 if($word = strpos($p_base, '?')){ //?がある場合(検索結果) $p_base = get_option(home).(substr(get_option(home), -1 ,1) === '/' ? '' : '/') .'%_%'.substr($p_base, $word); } else{ //?が無い場合(カテゴリ、タグ等) $p_base .= (substr($p_base, -1 ,1) === '/' ? '' : '/') .'%_%'; } echo paginate_links(array( 'base' => $p_base, 'format' => $p_format, 'total' => $wp_query->max_num_pages, 'current' => ($paged ? $paged : 1), )); } ?> ■表示結果 << 前ページへ 1 2 3 4 5 6 7 次ページへ >> これでも問題なく動作しているのですが、「1、2、3…」といったページ番号(?)リストを表示せず、「前ページへ」、「次ページへ」の中のリンク先のURLだけ(http://www.hogehoge.com/page/2?s=検索文字など)を取得したいときはどのようにコードを書けばよいのでしょうか?

    • ベストアンサー
    • PHP
  • Rubyでwebページを取得するとき

    Rubyでwebページを取得してtxtファイルに出力したいと考えています。 URLリストを別ファイルで用意して、それを片っ端から読み込んで表示させるものです。 require 'open-uri' require 'kconv' while url=gets next if url=="\n" page=URI(url).read page=Kconv.tosjis(page) puts(page) end これで成功するのですが、「URLリストにのっているwebページが見つからなかったら飛ばして次のページを取得しにいく」ことを追加したいです。 どう書けばいいでしょうか? 教えていただければ幸いです。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • ページランク認識について

    ページランクを上げたくて相互リンクなどがんばってやっているのですがページランクが全く上がりません。認識まで時間がかかるとのことですが結構何ヶ月も上がらないのです。 またlink:http://・・・で検索してもリンク先が一軒も認識されていないようです。ちなみに相互リンク50件ほどと検索エンジンに1000件ほど登録しています。 詳しい方ご回答よろしくお願いいたします。

  • google検索でlink:URLで検索の件です。

    google検索でlink:URLで検索すると、「該当するページが見つかりませんでした」となります。 site:URL、cache:URL、info:URLに関してはいくつか結果が出てくれます。 ウェブマスターツールで外部からのサイトへのリンクには登録したキーワードが表示されています。 外部リンクのあるページも内部リンクのあるページも数字が出るのですが、サンプルリストは表示されません。リンクは見つかりませんでしたとなってしまいます。 どうしたら表示されるか教えてください。お願いします。 ちなみにYahooではlink:URLで検索結果が表示されます。

  • fuelphpのpagination

    こんにちは fuelphp初心者です。 fuelphpのpaginationクラスのpagination_url属性にGETパラメーターを付加したいのですが やり方がわからず困っております。 知ってらっしゃる方がおりましたら、ご教授お願いできますでしょうか やりたいことですが、 $config = array( 'pagination_url'=>'search/type/', 'uri_segment'=>2, 'total_items' => 50, 'per_page' => 20, 'num_links'=>5, 'template' => array( のpagination_urlの後ろに「?param1=hoge」を付加させたいのです。 'pagination_url'=>'search/type/'.'?param1=hoge', とやってしまうと作成されたpaginationのURLが http://www.hoge.com/search/type?param1=hoge/2 という感じにGETパラムの後ろにセグメント情報が付加されてしまいます。 理想としては、 http://www.hoge.com/search/type/2?param1=hoge http://www.hoge.com/search/type/3?param1=hoge http://www.hoge.com/search/type/4?param1=hoge という感じになるとうれしいです。 ご教授お願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう