※ ChatGPTを利用し、要約された質問です(原文:PHP PEARのPagerをSmartyで使う)
PHP PEARのPagerをSmartyで使う
このQ&Aのポイント
PEARのPagerを利用してSmartyでページング機能を実装したいが正常に表示されず困っている。
MySQLからデータを取得してPagerのパラメータを設定し、ページデータを取得するが、全てのデータが1行目のデータだけ表示されてしまう。
データベースへの接続は正常に行えていて、ページャー機能も動作しているため、原因が分からない。
初めまして、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行目のデータだけ表示されます。
どなたか原因が分かる方いらっしゃいましたら、是非ともご教授ください。
よろしくお願い致します。
お礼
回答ありがとうございます。 試行錯誤の結果、エラー箇所がわかり、直りました! 助かりました。