質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • PHP

    20910questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • HTML

    9325questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • WordPress

    7468questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • CSS

    6040questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

  • API

    1566questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

PHPでページング機能の仕組みを知りたい。

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,234

442ky119

score -91

題名の通り、PHPでページング機能の仕組みを知りたいです。主にページ番号が表示されるページング機能が知りたいです。
wordpressで実装するためです。
どうすればGoogleの1 2 3 4 5…10 次へ»というように「現在地がどこか」とページ番号が表示されるぺージングが作れますか?
pagingについての知識がないため、実装する方法がわかりません。
下記にあるphpコードはwebで調べたものですが、僕が作成したphpコードのどこに挿入すればいいかわかりません。
またpagingを使う際、sqlは利用するのですか?
僕が作成したphpコードも表示します。
ページング処理はできましたが、<<前へ>><<次へ>>が連続して表示されます。原因を教えてください。

function paging($limit, $page, $disp=5){
    //$dispはページ番号の表示数
    $next = $page+1;
    $prev = $page-1;

    //ページ番号リンク用
    $start =  ($page-floor($disp/2) > 0) ? ($page-floor($disp/2)) : 1;//始点
    $end =  ($start > 1) ? ($page+floor($disp/2)) : $disp;//終点
    $start = ($limit < $end)? $start-($end-$limit):$start;//始点再計算

    if($page != 1 ) {
         print '<a href="?my_page='.$prev.'&my_filter='.$area.'">&laquo; 前へ</a>';
    }

    //最初のページへのリンク
    if($start >= floor($disp/2)){
        print '<a href="?my_page=1&my_filter='.$area.'">1</a>';
        if($start > floor($disp/2)) print "..."; //ドットの表示
    }


    for($i=$start; $i <= $end ; $i++){//ページリンク表示ループ

        $class = ($page == $i) ? ' class="current"':"";//現在地を表すCSSクラス

        if($i <= $limit && $i > 0 )//1以上最大ページ数以下の場合
            print '<a href="?my_page='.$i.'&my_filter='.$area.'"'.$class.'>'.$i.'</a>';//ページ番号リンク表示

    }

    //最後のページへのリンク
    if($limit > $end){
        if($limit-1 > $end ) print "...";    //ドットの表示
        print '<a href="?my_page='.$limit.'&my_filter='.$area.'">'.$limit.'</a>';
    }

    if($page < $limit){
        print '<a href="?my_page='.$next.'&my_filter='.$area.'">次へ &raquo;</a>';
    }

    /*確認用
    print "<p>current:".$page."<br>";
    print "next:".$next."<br>";
    print "prev:".$prev."<br>";
    print "limit:".$limit."<br>";
    print "start:".$start."<br>";
    print "end:".$end."</p>";*/

}

$limit = 10;//最大ページ数
$page = empty($_GET["my_page"])? 1:$_GET["my_page"];//ページ番号

paging($limit, $page);
« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »
function paging($limit, $page, $disp=5){
    //$dispはページ番号の表示数
    $next = $page+1;
    $prev = $page-1;

    //ページ番号リンク用
    $start =  ($page-floor($disp/2) > 0) ? ($page-floor($disp/2)) : 1;//始点
    $end =  ($start > 1) ? ($page+floor($disp/2)) : $disp;//終点
    $start = ($limit < $end)? $start-($end-$limit):$start;//始点再計算

    if($page != 1 ) {
         print '<a href="?page='.$prev.'">&laquo; 前へ</a>';
    }

    //最初のページへのリンク
    if($start >= floor($disp/2)){
        print '<a href="?page=1">1</a>';
        if($start > floor($disp/2)) print "..."; //ドットの表示
    }


    for($i=$start; $i <= $end ; $i++){//ページリンク表示ループ

        $class = ($page == $i) ? ' class="current"':"";//現在地を表すCSSクラス

        if($i <= $limit && $i > 0 )//1以上最大ページ数以下の場合
            print '<a href="?page='.$i.'"'.$class.'>'.$i.'</a>';//ページ番号リンク表示

    }

    //最後のページへのリンク
    if($limit > $end){
        if($limit-1 > $end ) print "...";    //ドットの表示
        print '<a href="?page='.$limit.'">'.$limit.'</a>';
    }

    if($page < $limit){
        print '<a href="?page='.$next.'">次へ &raquo;</a>';
    }

    /*確認用
    print "<p>current:".$page."<br>";
    print "next:".$next."<br>";
    print "prev:".$prev."<br>";
    print "limit:".$limit."<br>";
    print "start:".$start."<br>";
    print "end:".$end."</p>";*/

}

$limit = 10;//最大ページ数
$page = empty($_GET["page"])? 1:$_GET["page"];//ページ番号

paging($limit, $page);
<?php
    if ( isset( $_GET[ 'my_filter' ] ) && preg_match( '![0-9]{5}!', $_GET[ 'my_filter' ] ) ) {
    $area = $_GET[ 'my_filter' ];
    } else {
    $area = '13';
    }
    if ( isset( $_GET[ 'my_page' ] ) && is_numeric( $_GET[ 'my_page' ] ) ) {

    $my_page = absint( $_GET[ 'my_page' ] );
    } else {
    $my_page = 1;   
     }
    $id= '私のid';
    $item_per_page    = 100;
    $ct    = '01';
    $start = ( $my_page - 1) * $item_per_page + 1;
    $url   = 'http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch?appid=' . $id . '&ac=' . $area .'&gc='. $ct.'&results=' . $item_per_page . '&start=' . $start . '&detail=full';
              $xml = simplexml_load_file( $url );
    $total_count = $xml->ResultInfo->Total;

    echo '<table class="left">';
    echo '<caption>' . $start . '件目から' . $item_per_page . '件 表示中 / 総件数 ' . $total_count . '</caption>';
    echo '<style scoped>.paging, table{width:70%;margin:auto;}td{border-bottom:1px solid #ccc;}td{color:#2980b9;}form{text-align:center;padding:2em;}
    .page-link{padding:0em;margin:.2em;display:inline-block;width:3em;border:1px solid #ccc;word-wrap:normal;}h2{text-align:center;margin:1em 0;}</style>';

     $html     = ' <tr><th>店舗名</th><th>読み</th><th>電話番号</th><th>住所</th><th>路線</th><th>最寄駅</th><th>PCUrl</th></tr>
       <tr><td>%1$s</td><td>%2$s</td><td><a href=tel:\"%3$s\"></a></td><td>%4$s</td><td>%5$s</td><td>%6$s</td><td><a href="%7$s">サイトはこちら</a></td><td><a href=\"%8$s\"</td></tr>';
     $i        = 1;
foreach ( $xml->Feature as $key => $item ) {

    printf( $html, $item->Name, $item->Property->Yomi, $item->Property->Tel1, $item->Property->Address, $item->Property->Station->Railway, $item->Property->Station->Name . '駅', $item->Property->Detail->PcUrl1,$item->Property->Detail->Image1);

    $i++;
}
echo '</table>';
?>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Lhankor_Mhy

    2016/05/20 19:36

    とりあえず、正しく動作する小さいコードをまず書いてみるところから始めた方がいいですよ。バグがあるコードに別のコードをつぎはぎしてもバグだらけになるだけです。

    キャンセル

  • 退会済みユーザー

    2016/05/27 21:10

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • kei344

    2016/05/28 21:17

    まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。

    キャンセル

回答 4

checkベストアンサー

+2

コードの最後に以下を追加。

$next = $my_page+1;
$prev = $my_page-1;
if($my_page != 1 ) {
     print '<a href="?my_page='.$prev.'">&laquo; 前へ</a>';
}
print '<a href="?my_page='.$next.'">次へ &raquo;</a>';


コピペだけど動くんじゃないかな、たぶん。
 
 

追記

これで動くかなあ?
あの、ちゃんとコードを理解して書いた方がいいですよ。私も含め、ここの回答者の皆さんがいつまでも面倒見てくれるわけじゃないですからね? 初心者だから優しくしてるだけであって、ここはあなたに代わってコードを書いてくれるサービスなわけじゃないですよ?
このコードも動かなければ、自分で直してくださいね?

<?php
/**
 * Template Name: test1
 *
 */
get_header();
/*
 * 01:北海道
  02:青森県 03:岩手県 04:宮城県 05:秋田県 06:山形県 07:福島県
  08:茨城県 09:栃木県 10:群馬県 11:埼玉県 12:千葉県 13:東京都 14:神奈川県
  15:新潟県 16:富山県 17:石川県 18:福井県 19:山梨県 20:長野県
  21:岐阜県 22:静岡県 23:愛知県 24:三重県
  25:滋賀県 26:京都府 27:大阪府 28:兵庫県 29:奈良県 30:和歌山県
  31:鳥取県 32:島根県 33:岡山県 34:広島県 35:山口県
  36:徳島県 37:香川県 38:愛媛県 39:高知県
  40:福岡県 41:佐賀県 42:長崎県 43:熊本県 44:大分県 45:宮崎県 46:鹿児島県 47:沖縄県
 */
?>
<form method="GET">
    <select name="my_filter" id="my_filter">
        <option value="04100"> 宮城県    仙台市(全体)</option>
        <option value="04101"> 宮城県    仙台市 青葉区</option>
        <option value="04102"> 宮城県    仙台市 宮城野区</option>
        <option value="04103"> 宮城県    仙台市 若林区</option>
        <option value="04104"> 宮城県    仙台市 太白区</option>
        <option value="04105"> 宮城県    仙台市 泉区</option>
        <option value="04202"> 宮城県    石巻市</option>
        <option value="04203"> 宮城県    塩竈市</option>
        <option value="04205"> 宮城県    気仙沼市</option>
        <option value="04206"> 宮城県    白石市</option>
        <option value="04207"> 宮城県    名取市</option>
        <option value="04208"> 宮城県    角田市</option>
        <option value="04209"> 宮城県    多賀城市</option>
        <option value="04211"> 宮城県    岩沼市</option>
        <option value="04212"> 宮城県    登米市</option>
        <option value="04213"> 宮城県    栗原市</option>
        <option value="04214"> 宮城県    東松島市</option>
        <option value="04215"> 宮城県    大崎市</option>
        <option value="04301"> 宮城県    刈田郡 蔵王町</option>
        <option value="04302"> 宮城県    刈田郡 七ヶ宿町</option>
        <option value="04321"> 宮城県    柴田郡 大河原町</option>
        <option value="04322"> 宮城県    柴田郡 村田町</option>
        <option value="04323"> 宮城県    柴田郡 柴田町</option>
        <option value="04324"> 宮城県    柴田郡 川崎町</option>
        <option value="04341"> 宮城県    伊具郡 丸森町</option>
        <option value="04361"> 宮城県    亘理郡 亘理町</option>
        <option value="04362"> 宮城県    亘理郡 山元町</option>
        <option value="04401"> 宮城県    宮城郡 松島町</option>
        <option value="04404"> 宮城県    宮城郡 七ヶ浜町</option>
        <option value="04406"> 宮城県    宮城郡 利府町</option>
        <option value="04421"> 宮城県    黒川郡 大和町</option>
        <option value="04422"> 宮城県    黒川郡 大郷町</option>
        <option value="04423"> 宮城県    黒川郡 富谷町</option>
        <option value="04424"> 宮城県    黒川郡 大衡村</option>
        <option value="04444"> 宮城県    加美郡 色麻町</option>
        <option value="04445"> 宮城県    加美郡 加美町</option>
        <option value="04501"> 宮城県    遠田郡 涌谷町</option>
        <option value="04505"> 宮城県    遠田郡 美里町</option>
        <option value="04581"> 宮城県    牡鹿郡 女川町</option>
        <option value="04606"> 宮城県    本吉郡 南三陸町</option>

        <form method="GET">
    <select name="my_filter" id="my_filter">
    <option value="04100"> 宮城県    仙台市(全体)</option>
    <option value="04581"> 宮城県    牡鹿郡 女川町</option>
       <option value="04606"> 宮城県    本吉郡 南三陸町</option>    </select>
    <input type="submit" value="絞り込み" />
</form>
<?php
if ( isset( $_GET[ 'my_filter' ] ) && preg_match( '![0-9]{5}!', $_GET[ 'my_filter' ] ) ) {
    $area = $_GET[ 'my_filter' ];
} else {
    $area = '04100';
}
if ( isset( $_GET[ 'my_page' ] ) && is_numeric( $_GET[ 'my_page' ] ) ) {

    $my_page = absint( $_GET[ 'my_page' ] );
} else {
    $my_page = 1;
}

$id        = '私のid';
$item_per_page    = 50;
$start        = ( $my_page - 1) * $item_per_page + 1;
$url        = 'http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch?appid=' . $id . '&ac=' . $area .'&results=' . $item_per_page . '&start=' . $start . '&detail=full';
$xml         = simplexml_load_file( $url );
$total_count     = $xml->ResultInfo->Total;

echo '<table class="left">';
echo '<caption>' . $start . '件目から' . $item_per_page . '件 表示中 / 総件数 ' . $total_count . '</caption>';
echo '<style scoped>.paging, table{width:80%;margin:auto;}td{border-bottom:1px solid #ccc;}td{color:#2980b9;}form{text-align:center;padding:2em;}
    .page-link{padding:1em;margin:.3em;display:inline-block;width:3em;border:1px solid #ccc;word-wrap:normal;}h2{text-align:center;margin:2em 0;}</style>';

$html     = '<tr><td>%1$s</td><td>%2$s</td><td>%3$s</td><td>%4$s</td><td>%5$s</td><td>%6$s</td><td>%7$s</td></tr>';
$i         = 1;

 function paging($limit, $page, $disp=5){
    //$dispはページ番号の表示数
    $next = $page+1;
    $prev = $page-1;

    //ページ番号リンク用
    $start =  ($page-floor($disp/2) > 0) ? ($page-floor($disp/2)) : 1;//始点
    $end =  ($start > 1) ? ($page+floor($disp/2)) : $disp;//終点
    $start = ($limit < $end)? $start-($end-$limit):$start;//始点再計算

    if($page != 1 ) {
         print '<a href="?my_page='.$prev.'">&laquo; 前へ</a>';
    }

    //最初のページへのリンク
    if($start >= floor($disp/2)){
        print '<a href="?my_page=1">1</a>';
        if($start > floor($disp/2)) print "..."; //ドットの表示
    }


    for($i=$start; $i <= $end ; $i++){//ページリンク表示ループ

        $class = ($page == $i) ? ' class="current"':"";//現在地を表すCSSクラス

        if($i <= $limit && $i > 0 )//1以上最大ページ数以下の場合
            print '<a href="?my_page='.$i.'"'.$class.'>'.$i.'</a>';//ページ番号リンク表示

    }

    //最後のページへのリンク
    if($limit > $end){
        if($limit-1 > $end ) print "...";    //ドットの表示
        print '<a href="?my_page='.$limit.'">'.$limit.'</a>';
    }

    if($page < $limit){
        print '<a href="?my_page='.$next.'">次へ &raquo;</a>';
    }

    /*確認用
    print "<p>current:".$page."<br>";
    print "next:".$next."<br>";
    print "prev:".$prev."<br>";
    print "limit:".$limit."<br>";
    print "start:".$start."<br>";
    print "end:".$end."</p>";*/

}

paging(ceil($total_count/$item_per_page), $my_page);


foreach ( $xml->Feature as $key => $item ) {

    printf( $html, $item->Name, $item->Property->Yomi, $item->Property->Tel1, $item->Property->Address, $item->Property->Station->Railway, $item->Property->Station->Name . '駅', $item->Property->Detail->OfficialPcUrl1 );

    $i++;
}
echo '</table>';
?>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/21 10:17

    コードの最後とは、echo '</table>'; ?>の後ですか?

    キャンセル

  • 2016/05/21 10:20

    いや、PHPの中に書いてください。

    キャンセル

  • 2016/05/21 10:22

    PHPのコードは<?php ... ?>というPHPのタグの中に書くんです。その中のコードだけ実行される仕組みになっていますので、その外側に書いたものはそのまま出力されます。
     
    覚えておくといいと思いますよ。

    キャンセル

  • 2016/05/21 10:24

    ページングはできるようになりましたが、wordpressには以下のように出ます。
    以下は本文に載せます。<<前へ>><<次へ>>がホームページの上の部分に連続して表示されます。

    キャンセル

  • 2016/05/21 10:30

    ちなみに、wordpressのなんてファイルに書いてるんでしょうか?

    キャンセル

  • 2016/05/21 10:44

    出力数を数えてみたらちょうど100個ありました。APIの取得件数と同じ。
    もしかしてなんですけど、なんかのループの中に書いたりしてます?

    キャンセル

  • 2016/05/21 11:15

    多分そうかもしれません。

    キャンセル

  • 2016/05/21 11:18

    バグが治りました。ただ、一つ気になったのはどうすればGoogleの1 2 3 4 5…10 次へ»というように「現在地がどこか」とページ番号が表示されるぺージングが作れますか?

    キャンセル

  • 2016/05/21 11:26

    function paging をコードの前の方に書いて、コードの最後にpaging(ceil($total_count/$item_per_page), $my_page);って書いてください。

    キャンセル

  • 2016/05/21 12:00

    function pagingの後ろに()や{}を入れる必要はありますか?
    また、paging(ceil($total_count/$item_per_page), $my_page);をコードの最後に書くと回答に書いてありましたが、それはprint '<a href="?my_page='.$next.'">次へ &raquo;</a>';の後ですか?

    キャンセル

  • 2016/05/21 12:03

    function paging は全部書いてください。
    print '<a href="?my_page='.$next.'">次へ &raquo;</a>';の部分はもういらないです。

    キャンセル

  • 2016/05/21 23:56

    わかりました。
    print '<a href="?my_page='.$next.'">次へ &raquo;</a>';の部分はなくてもページ遷移ができるんですね?

    キャンセル

  • 2016/05/22 11:25

    といいますか、回答のコードは捨てていいです。

    キャンセル

  • 2016/05/22 12:36

    分かりました。
    あと、もう一つ疑問があります。
    googleみたいに、キーワードによってはページ数が10ページだったり2ページだったりするにはどうすればいいですか?つまり、よく知られているキーワードは10ページ以上あるとします。逆によく知られていないキーワードは10ページもいかないとします。こういう風にキーワードによって表示するページをコントロールするには、どういうコードを書けばいいですか?

    キャンセル

  • 2016/05/22 13:06

    その内容は現状のコードに含まれてますよ。

    キャンセル

  • 2016/05/22 13:24

    ありがとうございます。
    ページ番号のフォントは編集できますか?

    キャンセル

  • 2016/05/24 16:48

    すみません、ページング処理はできるのですが『次へ』『2ページ』をクリックしても1ページの内容が表示されます。どうすればいいですか?

    キャンセル

  • 2016/05/25 10:25

    現在のソースはhttps://teratail.com/questions/35335に提示されているものですか?

    キャンセル

  • 2016/05/26 18:12

    はい、そうです。

    キャンセル

  • 2016/05/26 20:12

    追記しました。

    キャンセル

  • 2016/05/26 21:34

    すみません、僕の説明不足でした。
    実はページング処理はだいたいできるのですが、以前僕が作成したphpコードと同様にLhankor_Mhyさんが提示したphpコードも例として宮城県仙台市青葉区を絞り込み検索して2ページ目をクリックしても仙台市全体の1ページ目に戻ってしまいます。
    仙台市全体だけはページ遷移ができます。
    この原因はなんですか?

    キャンセル

  • 2016/05/26 21:54

    URLに?my_page=みたいにmy_filter=を埋めておかないといけないです。そうしないと、$_GET[ 'my_filter' ]でフィルタ条件が受け取れないので。

    キャンセル

  • 2016/05/26 22:42

    それはどういう風にコードを書くのですか?

    キャンセル

  • 2016/05/26 22:49

    URLに?my_page=みたいにmy_filter=を埋めておかないとはどういうことですか?

    キャンセル

  • 2016/05/27 13:05

    $_GET[ 'my_filter' ]というコードは何をしているのか分かりますか?

    キャンセル

  • 2016/05/27 13:13

    適当に書いたものなので詳しくわかりません。
    確か、データをフィルタリングするんでしたっけ?

    キャンセル

  • 2016/05/27 15:43

    http://hogehoge.com/?my_page=1&my_filter=04100
    というアクセスがあった時、PHPでは、
    $_GET[ 'my_page' ] の内容が'1'
    $_GET[ 'my_filter' ] の内容が'04100'
    になるんです。
    ここまではいいですか?

    キャンセル

  • 2016/05/27 16:04

    多分この問題が解決できない為、先に進めないんだと思います。

    キャンセル

  • 2016/05/27 16:05

    はい、分かります。
    僕のphpは今、そうなっているんですね。

    キャンセル

  • 2016/05/27 16:15

    ページングのコード部分に書かれているURLは
    http://hogehoge.com/?my_page=1
    のような形で出力されています。
    このURLだと、$_GET[ 'my_filter' ]に値が入らないので、フィルタをかけた状態にならないんです。

    ですので、これを
    http://hogehoge.com/?my_page=1&my_filter=04100
    のような形にしなくてはいけないです。

    これで分かりますか?

    キャンセル

  • 2016/05/27 16:36

    大体分かります。
    というと、$url = 'http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch?appid=' . $id . '&ac=' . $area .'&gc='. $ct.'&results=' . $item_per_page . '&start=' . $start . '&detail=full';にmy_page=1&my_filter=04100
    を付け足すのですか?

    キャンセル

  • 2016/05/27 16:51

    ああ、惜しいです。そっちではなくてページングをしているURLの方です。
    つまり、
    print '<a href="?my_page='.$next.'">次へ &raquo;</a>';

    print '<a href="?my_page='.$next.'&my_filter='.$area.'">次へ &raquo;</a>';
    に変更するんです。
    他のURLについても同様です。

    キャンセル

  • 2016/05/27 17:06

    すみません、知識不足なもので
    というと、<a href=”の部分は全部my_filterを付け足すんですね?

    キャンセル

  • 2016/05/27 17:41

    いくらやっても仙台市全体になってしまいます。
    補足:編集したphpコードを本文に提示します。

    キャンセル

  • 2016/05/27 18:24

    ああ、しまった、スコープが違うのか……
    関数の初めの方に、
    global $area;
    と入れるとどうなりますか。

    キャンセル

  • 2016/05/27 18:40

    関数の初めの方とは何処ですか?

    キャンセル

  • 2016/05/27 18:41

    globalを入れなくてはいけないのですか?

    キャンセル

  • 2016/05/27 19:58

    関数の初めの方とは
    function paging($limit, $page, $disp=5){
    の下あたりです。

    キャンセル

  • 2016/05/27 21:07

    globalのphpコードを教えて下さい。

    キャンセル

  • 2016/05/27 21:12

    コメントに書いた通りなんですが、動作しませんか?

    キャンセル

  • 2016/05/27 21:35

    function paging($limit, $page, $disp=5){
    の下あたりにglobal $area;と書くのですか?

    キャンセル

  • 2016/05/28 13:06

    そうですね。
     
     
     
    いや、あの、これだけのコメントでこの質問を上げるのイヤなんですが…… sage機能の実装をお願いします←

    キャンセル

  • 2016/05/28 15:06

    global $area;のphpコードの書き方がイマイチ分からないのでphpコードを教えて下さい。
    宜しくお願いします。

    キャンセル

  • 2016/05/28 15:06

    また、sage機能の実装の仕方も分からないので教えて下さい。

    キャンセル

  • 2016/05/28 15:07

    function paging($limit, $page, $disp=5){
    の下あたりにglobal $area;と書けばいいのですが、動作しませんか?



    あと、sageの話は忘れてください……

    キャンセル

  • 2016/05/28 15:36

    function paging($limit, $page, $disp=5){global area;と書くのですか?

    キャンセル

  • 2016/05/28 15:38

    上の質問は忘れて下さい。
    最近、質問文に提示したphpコードに誤りはありますか?
    間違っていなかったら、あとはfunction paging($limit, $page, $disp=5){global $area;を付け足すだけですよね?

    キャンセル

  • 2016/05/28 15:53

    > 最近、質問文に提示したphpコードに誤りはありますか?

    デバッグはご自分でやってください。

    キャンセル

  • 2016/05/28 16:08

    すみません、僕が言いたいのは最近質問文に提示したphpコードにglobal $area;を付け足せばいいのですか?

    キャンセル

  • 2016/05/28 16:10

    また、何故最初に仙台市全体区が表示されるのですか?

    キャンセル

  • 2016/05/28 16:13

    えーと、私が言いたいのはとりあえず試してみればいいんじゃないですか?ってことなんですが。
    ローカルに実行環境作ってあるんですよね?
    5秒で書いて試せると思うんですが、この問答意味があるんですかね?

    キャンセル

  • 2016/05/28 16:16

    > 何故最初に仙台市全体区が表示されるのですか?

    知らないですよ、あなたが書いたコードなんでしょ?

    キャンセル

  • 2016/05/28 16:24

    > Lhankor_Mhy さん
    心中お察しします...。

    キャンセル

  • 2016/05/28 20:05

    > Kosuke_Shibuya さん
    よい質問者に成長されることを期待して、がんばります。

    キャンセル

  • 2016/05/28 20:47

    Lhankor_Mhyさん、ありがとうございます。
    問題が解決しました。

    キャンセル

+1

ページング自体は、MySQL 等のデータベースは、関係ないです。データの件数が多いから、データの保存にデータベースを使っているだけと思います。

とりあえず、MySQL を使っていない ページングのサンプルのURLを書いておきます。

http://www.webopixel.net/php/494.html

http://piyopi-yo.info/tori_wp/?p=91

http://tenderfeel.xsrv.jp/php/639/

サンプルを動かして、動作や中身を理解してから、自分のプログラムに組み込むようにしましょう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/21 09:52

    ご回答ありがとうございます。
    上記に記載したphpコードはどこの行に書けばいいのかわかりません。pagingについての知識がないのですみません。

    キャンセル

0

PHPで実装するのなら、フレームワークの利用を検討してみるのも良いかと思います

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/27 21:54

    実はページング処理はだいたいできるのですが、以前僕が作成したphpコードと同様にLhankor_Mhyさんが提示したphpコードも例として宮城県仙台市青葉区を絞り込み検索して2ページ目をクリックしても仙台市全体の1ページ目に戻ってしまいます。
    仙台市全体だけはページ遷移ができます。
    この原因はなんですか?

    キャンセル

-2

クエリ文のlimit句で検索して下さい

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    データベースのレコード抽出を10件ずつページ区切りにする。

    以下の様なコーディングをしたのですが ここから、10レコード区切りでページ分けしていきたいのですが どうしてもうまくいきません。 どうすればページ区切りが可能になるのでしょう

  • 解決済

    次のページに遷移

    このコードの「次へ」のボタンをクリックしても次のページにいけません。同じページを表示します。 しかし、2ページや5ページをクリックすれば、そのページにいけます。コードを見た限り、

  • 解決済

    function pagingがうまく使えない

    再質問をさせていただきます。 ※わかりづらかったので説明します。このコードだと、次へボタンをクリックしても3ページ目に行けないんです。また、1,2,3,4,5,6,7,8,9,1

  • 解決済

    ページネーションの中央揃い

    ページネーションがデフォルトだとなぜか左揃いになっています。 中央揃いにしたいのですが、 text-align: center; や  margin-le

  • 解決済

    ページネーションの数が多くなりすきて分割したい。

    ページネーションを自作して使っておりますデータが大きくなって総件数が1万件を超えてしまいました。 ページネーションの数も増えてしまうので以下のような10件を超えたら「次へ」のよう

  • 解決済

    jQuery ページ遷移で表示する件数を変更したい

    実現したいこと jQueryでリンクを押下した際、表示される項目を変更したいと思っています。 現ページに全件の100件表示している状態から10件のみshow()で表示していて、

  • 解決済

    【PHPmySQL】チェックボックス・フリーワードでの検索条件の絞り込み方法

    PHPmySQLでデータベースの検索結果を出力したいです。 接続はPDOで行いました。テーブル\(適当\)の画像は下に貼っておきます。 下記コードでは、フリーワードで入力した値

  • 解決済

    mySQLで欠番のidを飛ばしたい。

     前提・実現したいこと phpを使ってブログの様なものを作っています。 記事の最後に「次の記事へ」のリンクをつけたいのですが、データベースからの取得が上手くできません。 それぞれの

同じタグがついた質問を見る

  • PHP

    20910questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • HTML

    9325questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • WordPress

    7468questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • CSS

    6040questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

  • API

    1566questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。