• 締切済み

phpのpagerについて

参考サイト http://enjoyjob.blog116.fc2.com/blog-entry-291.html にてpagerを作っているのですが、うまくできません。 DBに接続して、DBないのレコード数を表示させたいのですが、DBを読みこんでからがわかりません。 サンプルコードは以下です。 $bbs_query = mysql_query("SELECT COUNT(*) FROM `bbs` limit 15"); //全アイテム数 $totalItem = $bbs_query; //1ページあたりの上限 $parOnePage = 15; ・ ・ ・ 以下参考サイトの記述をし、表示するページにも http://enjoyjob.blog116.fc2.com/blog-entry-292.htmlにあるものを記入しました。 結果は PREVIOUS 1 NEXT とでるだけでリンクもできずページ数も増えません。 bbsテーブルにはレコード数は30程あります。 お分かりの方がいらっしゃいましたらご教授いただければと思います。 宜しくお願いします。

  • h-h13
  • お礼率24% (37/149)
  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

回答No.1

最初のbbs_queryの所ですが、個々は、すべてのアイテム数を取得したいのですから、 SQL文に、LIMIT句を入れたらダメです。 <?php //クエリ叩いてリザルトセットを取得して $bbs_query = mysql_query("SELECT COUNT(*) as cnt FROM `bbs`"); //返された結果の最初のレコードを取得して $row = mysql_fetch_assoc($bbs_query); $totalItem = $row['cnt']; //「COUNT(*) as cnt」で取得した内容が全アイテム数 ?> こんな感じでしょうか。

関連するQ&A

  • PHP PEARのPagerをSmartyで使う

    初めまして、PEARのPagerを勉強していたのですが、Smartyで実装したいと思い試行錯誤していたらうまく表示されなくて困っています。 【PHP】 //PEARの読み込み、Smartyクラスの読み込み、MySQLクラスの読み込みは省略 //上記は正常に動作しています。 // テーブルの行数を数えます $sql = "SELECT COUNT(*) AS cnt FROM table_name;"; //レコード開始位置指定 $start = 0; //最大レコード数を指定 $limit = 10; // データを取り出すSQLを実行します。 $sql = "select * from table_name ORDER BY no DESC LIMIT $start, $limit"; $result = mysql_query($sql); while($rows = mysql_fetch_array($result)){ $res_data[]=array("title"=>$row['title'],"name"=>$row["name"],"no"=>$row["no"]); } //Pagerのパラメータを指定 $params = array( "itemData" => $res_data, "totalItems" => $limit, "perPage" => 6, "delta" =>5, "mode" =>"Jumping" ); //パラメータの連想配列を受け取る $pager =& Pager::factory($params); // ページデータの割り当て処理 foreach($pager->getPageData() as $item){ $res_data_page[] = $item; } //戻る/次/最初/最後のリンクとページリンクを返す $link = $pager -> getLinks(); //現在のページ番号を返す $currentPageID = $pager -> getCurrentPageID(); // テンプレート用に変数を設定 $smarty->assign('data', $res_data_page); $smarty->assign('pageNavi', $link['all']); $smarty->assign('currentPage', $currentPageID); ■tpl <table border="1"> <tr> <th>名前</th> <th>NO</th> <th>タイトル</th> </tr> {foreach from=$data item=i} <tr> <td>{$i.name}</td> <td>{$i.no}</td> <td>{$i.title}</td> </tr> {/foreach} </table> <p>{$pageNavi}</p> <p>{$currentPage}ページを表示</p> 参考URL http://meerweb.blog7.fc2.com/blog-entry-101.html データベースへの接続は出来ていて、ページャー機能は動いています。 取得しているデータ数もあっているのですが、全部1行目のデータだけ表示されます。 どなたか原因が分かる方いらっしゃいましたら、是非ともご教授ください。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHP Pagerで行き詰っています。

    PHP Pagerの使用で、下記2点で行き詰っています。 (1)1ページ内に10件までしか表示させたくないのに、全件表示される (2)DBからの取得データ数をtotalItemsに格納し、それをもとにナビを作成したい ソースは以下です。 どうかご助力いただけますと幸いです。 よろしくお願いいたします。 ------------------------------------------------------------ hogehoge.php ------------------------------------------------------------ <?php require_once("Smarty.class.php"); require_once("../PHP/PEAR/Pager/Pager.php"); $objSmarty=& new Smarty(); $s=mysql_connect("hoge","hoge","hoge") or die("失敗しました"); mysql_select_db("hoge",$s); $sql = "SET NAMES utf8"; $result = mysql_query($sql); $ra=mysql_query("select * from stylenavi_1 where url4 LIKE '/01.php'and url3 like '/syokuji'"); $rb=mysql_query("select * from stylenavi_1 where url3 LIKE '/syokuji'");//この行で取得したデータ数をitemDataに格納したい。 $rc=mysql_query("select * from stylenavi_1 where url1 LIKE '/diethow'"); while ($ra2 = mysql_fetch_array($ra)) { $objSmarty->append('data1',$ra2); } while ($rb2 = mysql_fetch_array($rb)) { $objSmarty->append('data2',$rb2); } while ($rc2 = mysql_fetch_array($rc)) { $objSmarty->append('data3',$rc2); } $itemData = $hogehoge;//どうやって反映させよう・・ $perPage = 10; $params = array( "itemData" => $itemData, "perPage" => $perPage, "delta" =>5, "mode" =>"Jumping" ); $pager =& Pager::factory($params); $link = $pager -> getLinks(); $currentPageID = $pager -> getCurrentPageID(); $objSmarty->template_dir="../templates/"; $objSmarty->compile_dir="../templates_c/"; $objSmarty->assign('pageNavi', $link['all']); $objSmarty->assign('currentPage', $currentPageID); mysql_close($s); $objSmarty->display("itiran_page.tpl"); ?> ------------------------------------------------------------ hoge.tpl ------------------------------------------------------------ {section name=diet loop=$data2} //ここでPerPageで指定した数だけ繰り返したいのに全件表示される ◇<a href="{$data2[diet].url}">{$data2[diet].title}</a><br /> ダイエットの手軽さ:{$data2[diet].tegarusa}<br /> 危険性:{$data2[diet].kikensei} <br /><br /> {/section}

    • 締切済み
    • PHP
  • PHP+Mysql+Pager続きがわかりません

    PHP+Mysql にPagerをいれたのですが、真っ白のままです。 PHP+Mysql にPagerをいれたのですが、真っ白のままです。 問題のページは下です。 http://nakadora-net.com/user-site/pager-all.php ソースは文字数オーバーになったので、下のURLにまとめました。 http://nakadora-net.com/user-site/pager-all.txt ページを表示させるには、どこを変えればいいのでしょうか。

    • ベストアンサー
    • PHP
  • high slideをFC2ブログで

    http://saruyan.blog61.fc2.com/blog-entry-216.html こちらのサイトさんの記事を参考にして、highslideをFC2ブログに導入して、起動したのですが何枚も続けて画像を貼り付けると画像の右側にマージンが入るのですが、これを無くすためにはhighslideのどこを書き換えれば直るのでしょうか? こちらがサンプルページになります http://sampleyoudesu.blog.fc2.com/blog-entry-1.html 使用しているhighslideのバージョンは3.3.8になります。 回答の方宜しくお願い致します。

  • ブログのページ作成 2

     何回もすみません。    FC2をしていますが、他の方のブログを参考に見ると http://○×.blog.fc2.com/blogというブログのリンクボタンを押すと http://○×.blog.fc2.com/blog-category-7.htmlというページに飛びます。 1 この後者のページはどうやって作るのでしょうか? 2 また、このページはどこに保存しているのでしょうか?    その仕方や仕組みが今イチ分かりません。 詳しい方の初心者向けのアドバイスをお願いします。 なお、前回は間違えてhttp://○×.blog.fc2.com/blog-entry-7.html について質問しましたが、これはご回答下さった方のアドバイスで氷解しました。

  • PEAR Pagerについて

    PHP Pagerのスクリプトを作成したのですが、うまく動きません。 DBに接続、検索、表示、までは動作確認できたのですが、Pagerを作成してからエラーが出るようになってしまいました。検索データ格納らへんがうまくいってないような気がするのですが・・・・。 DB Error: syntax error が出てしまいます。 どなたかアドバイスの程宜しくお願いします。 $result=$conn->query($sql); if(DB::isError($result)){ die($result->getMessage()); } $count=$result->numRows(); print"店舗数は".$count."件です"; while($rs=$result->fetchRow(DB_FETCHMODE_ASSOC)) { require_once('Pager/Pager.php'); $options = array( "totalItems" => $count, "perPage" => 3, "delta" => 5, "urlVar" => "pageNo" ); $pager =& Pager::factory($options); $navi = $pager -> getLinks(); $tenpo_name = $rs['tenpo_name']; print("{$tenpo_name}"); } ?>

    • ベストアンサー
    • PHP
  • ブログでのリンクの仕方

     ブログ初心者です。  FC2をしていますが、他の方のブログを参考に見ると http://○×.blog.fc2.com/というブログのリンクボタンを押すと http://○×.blog.fc2.com/blog-entry-1.htmlというページに飛びます。 1 この後者のページはどうやって作るのでしょうか? 2 また、このページはどこに保存しているのでしょうか?    その仕方や仕組みが今イチ分かりません。 初心者ですので、詳しい方の初心者向けのアドバイスをお願いします。

  • javascriptでURLを取得するには?

    pcafeさん(http://pcafe.blog3.fc2.com/blog-entry-372.html)にあるようなことを、ブログ上でなくてホームページ上で実現したいと思っています。 上記のサイト様を踏まえた上で、どのようなことがしたいかと言いますと、下記のようなことをしたいと思っています。 サンプル図:http://lancerevolution.tuzikaze.com/sampletest.html (1)http://×××.blog×.fc2.com/blog-entry-1.htmlのリンクをクリックし、新規ウィンドウでmenu.htmlを開く (2)http://×××.blog×.fc2.com/blog-entry-1.htmlの「1」をインラインフレームの「src」に代入して、1.htmlのファイルを(3)に表示させる *子のウィンドウのURLではなくて、親のウィンドウのURLを対象にして、その数字に応じたhtmlファイルを(3)に表示させます つまり、 ◆http://×××.blog×.fc2.com/blog-entry-1.htmlと言うページがあった時に、子ウィンドウのインラインフレームに <iframe src="="./file/1.html"></iframe> ◆http://×××.blog×.fc2.com/blog-entry-2.htmlと言うページがあった時に、子ウィンドウのインラインフレームに <iframe src="="./file/2.html"></iframe>         ・         ・ ◆http://×××.blog×.fc2.com/blog-entry-300.htmlと言うページがあった時に、子ウィンドウのインラインフレームに <iframe src="./file/300.html"></iframe> にしたいということです。 *インラインフレームがある部分は、menu.htmlと言うページしか使わないので、ページ1つ1つにsrcは設定できません。設定できるのは、menu.htmlのみです。そのため、pcafeさんのやり方がどうしてもしたいのです。 長くなりましたが、どうぞよろしくお願いします。

  • php ページャー

    php ページャー機能がうまくいきません。 ご教授お願いいたします。 ページリンク2、3と押しても ページが移動しません。 ずっと一ページ目のままです。 解決方法よろしくお願いいたします。 index.php peger.php 書きソースはpeger.phpです。 index.htmlとのソースの違いは if(preg_match('/^[1-9][0-9]*$/', $_GET['page']) ){ $page = (int)$_GET['page']; }else{ $page = 1; } のプログラムががindex.phpにはないだけです。 <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>検索</title> </head> <body> <?php if(preg_match('/^[1-9][0-9]*$/', $_GET['page']) ){ $page = (int)$_GET['page']; }else{ $page = 1; } $page = 1; $limit = 2; $offset = $limit * ($page - 1); $dsn='mysql:dbname=****;host=****'; $user='*****'; $password='*****'; $dbh=new PDO($dsn,$user,$password); $dbh->query('SET NAMES utf8'); $sql='SELECT count(*) FROM `mst_product`'; $stmt=$dbh->prepare($sql); $stmt->execute(); $db=null; $total=$stmt->fetchColumn(); $lastpage= ceil($total/$limit); $sql = 'SELECT * FROM mst_product ORDER BY code DESC LIMIT '.$limit.' OFFSET '.$offset.' ' ; $stmt = $dbh->prepare($sql); $stmt->execute(); $db = null; while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ echo $row['name']; echo'</br>'; echo $row['price']; } echo '<ul class="pager">'; ?> <?php if($page > 1){?> <li><a href="pager.php?page=<?php echo $page-1; ?>"> << </a></li> <?php } for($i = $page; $page-2 < $i && $i <= $page+4 && $i <= $lastpage; $i++){ ?> <?php if($i == $page){ ?> <li><a href="kensaku_pager.php?page=<?php echo $i; ?>"><?php echo '<font color="#FF4DC4">'.$i.'</font></a></li>'; }else{?> <li><a href="pager.php?page=<?php echo $i; ?>"><?php echo $i.'</a>'; ?> <?php echo '</li>'; } } if($page < $lastpage){ ?> <li><a href="pager.php?page=<?php echo $page+1; ?>"> >> </a></li> <?php } ?> </ul> </body> </html>

    • ベストアンサー
    • PHP
  • 秀丸の正規表現置換でこの文字列にしたい

    タイトルの通りですが、秀丸エディタで下記の文字列に置換しようとしています。 目的はFC2ブログでの全記事タイトルリストの作成です。 ↓最終的にこのような形にリスト化したいと思っています。 http://●●.blog21.fc2.com/blog-entry-〇〇.html,<a href="http://●●.blog21.fc2.com/blog-entry-〇〇.html" target="_blank">ブログタイトル1</a> http://●●.blog21.fc2.com/blog-entry-△△.html,<a href="http://●●.blog21.fc2.com/blog-entry-△△.html" target="_blank">ブログタイトル2</a> http://●●.blog21.fc2.com/blog-entry-□□.html,<a href="http://●●.blog21.fc2.com/blog-entry-□□.html" target="_blank">ブログタイトル3</a> : : ※ ●●はブログID,〇〇や□□は記事のナンバーです(順不同) 現時点で、 : <a id="link__inpage_21" href="http://●●.blog21.fc2.com/blog-entry-〇〇.html" title="このリンクのブログ本文の文頭">ブログタイトル1</a> : <a id="link__inpage_23" href="http://●●.blog21.fc2.com/blog-entry-△△.html" title="このリンクのブログ本文の文頭">ブログタイトル2</a> : <a id="link__inpage_25" href="http://●●.blog21.fc2.com/blog-entry-□□.html" title="このリンクのブログ本文の文頭">ブログタイトル2</a> : : ※ ●●はブログID,〇〇や△△や□□は記事のナンバー(1~1500ほど)です(順不同) このような形で、文字列が1500行ほど並んでいます。(つまり1500リンク分です) 何回でも、置換の手順を踏んでも構わないので、 : <a id="link__inpage_21" href="http://●●.blog21.fc2.com/blog-entry-〇〇.html" title="このリンクのブログ本文の文頭">ブログタイトル1</a> ↓ http://●●.blog21.fc2.com/blog-entry-〇〇.html,<a href="http://●●.blog21.fc2.com/blog-entry-〇〇.html" target="_blank">ブログタイトル1</a> : という形に最終的に全行をリスト化したいのですが、どのような正規表現で置換していけばいいでしょうか? 唐突で誠に恐縮ですが、ご存じの方がいらっしゃいましたら御教授のほどよろしくお願い申しあげます。

専門家に質問してみよう