スレッド表示 | フラット表示〕 全トピック 920 件中 414 番目 次≫ ≪前

PEARのPagerパッケージとSmartyを利用

created: 2005-07-12 19:47 | modified: 2005-07-13 10:29 | reply: 1

[2364] PEARのPagerパッケージとSmartyを利用

user: へっぽこ | created: 2005-07-12 19:47
PEARのPagerパッケージとSmartyを利用して
ランキングを表示するアプリケーションを作成
していまが、DBからSELECT文で取得した情報を
Pagerに渡し、getPageDate()メソッドでデータを
取得し、Smarty側に受け渡し、foreachでデータを
出力しています。
順位はsmarty側で処理を利用しているため、
iterationで順位をふっていますが、当たり前
ですが、最初のページは良いのですが、2ページ目
からのページも順位が1からになってしまいます。
PagerやSmartyの機能で現在のカラムを数えるもの
は用意されてないのでしょうか?
それとも、パラメータで受け渡す必要があるので
しょうか?
また、この場合DB_Pagerを利用した方が良いので
しょうか?
ご存知の方、ご教授よろしくお願いいたします。
reply: 2366 返信 編集 削除

[2366] 自決しました。

user: へっぽこ | created: 2005-07-13 10:29
おはようございます。
自決いたしました。

複数ページのランキングの出し方を
フォードバックいたします。
(フィードバックするレベルでは、ありませんがいちを・・・)

私の方法は、トラフィックがかかりすぎてしまいます
ので、データベース構造に工夫が必要と思いますが・・・。

解決方法は、SQLを利用しました。
<方法>
?count関数でランキングを、降順のビューを作成しました。
SQL>SELECT log_name,COUNT(log_name) AS log_count
FROM log_table GROUP BY log_name
ORDER BY COUNT(log_name) DESC;

?そのビューを利用して、サブクエリを発行しました。
SQL>SELECT (SELECT COUNT(log_count)+1
FROM log_table
WHERE log_table.log_count > ranking.log_count)
AS rank, ranking.log_name,ranking.log_count
FROM log_table AS ranking;

上記のような方法です。しかし、かなり重くなるのでデータベース構造を工夫するか、
もしくは違う方法を取ってください。
Parent: 2364  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 414 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑