現在、PHPとMYSQLの勉強をしながらサイトを作成しています。
記事をデータベースに保存して
mysqlを使ってサイトに表示するという事を行っています。
【事前情報】
記事タイトル
記事URL
カテゴリ名(100種類ぐらいあります。)
更新日時
PV数(ページビュー数)
【やりたい事】
トップページにて「記事を表示」する際に「更新日時」と「PV数」を基準にして
並び替えをしたいです。
単純な更新日時の順番だと「PV数」が少ない人気の無い記事が一番最初に表示される事もあるので
20分以内に更新された記事の中から「PV数が多い順番」に並び替えをしたいと考えております。
(すべての記事を表示しつつ、20分以内に更新された記事の中からPV数の多い順番に並び替え)
【例】
すべての記事を表示させつつ
更新日時が20分以内の記事の中からPV数が多い順番に並び替えを行いたいです。
記事A
カテゴリ:日本
PV:100
更新日時:20分以内
記事B
カテゴリ:アメリカ
PV:90
更新日時:20分以内
記事C
カテゴリ:中国
PV:90
更新日時:20分以内
↑は更新日時が20分以内の記事で、PV数の多い順番に並び替えが成功している状態です。
ここから下にはさらに20分間間隔で
その20分間間隔の記事の中からPV数の多い順番に並び替えが成功している状態です。
記事D
カテゴリ:カナダ
PV:500
更新日時:40分以内
記事E
カテゴリ:アメリカ
PV:900
更新日時:80分以内
記事F
カテゴリ:中国
PV:9000
更新日時:100分以内
【試してみた事】
ネットで色々検索してみた所
希望している完成に近付ける事は出来ました。
更新日時:created
PV数:pv
ページナビゲーション機能に利用:. $offset . "," . $pagelimit
PHP
1$stmt = $db->query("select * from bbs 2 order by date_format( created, '%Y-%m-%d %H:%i' ) desc, pv desc limit " . $offset . "," . $pagelimit); 3 $mysqlall = $stmt->fetchAll(\PDO::FETCH_OBJ); 4
これで更新された記事を1分単位でのPV数が多い順番に並び替えをする事が出来ました。
1分単位だと該当する記事の数が少なすぎて
不人気な記事でも先頭に表示されてしまいます。
ですので、これが1分単位ではなくて「20分間」単位になるのが理想とする形です。
色々試してみた所「1時間単位」には設定する事が出来ました。
PHP
1$stmt = $db->query("select * from bbs 2 order by date_format( created, '%Y-%m-%d %H' ) desc, pv desc limit " . $offset . "," . $pagelimit); 3 $mysqlall = $stmt->fetchAll(\PDO::FETCH_OBJ);
該当する記事が増えたのですが
1時間だと時間があまりにも長すぎるので「20分間」を理想としているのですが上手くいきません。
またこちらの方法でも試してみました。
PHP
1$stmt = $db->query("select * from bbs where created > CURRENT_TIMESTAMP + INTERVAL - 20 MINUTE order by pv desc limit " . $offset . "," . $pagelimit); 2 $mysqlall = $stmt->fetchAll(\PDO::FETCH_OBJ);
上のコードですと「20分間間隔」での「pV数」の並び替えを行う事が出来ましたが
「20分以内の記事だけ」しか表示されず、
すべての記事を表示しつつ「20分間間隔」での「pV数」での並び替えを行う事が出来ませんでした。
(20分以内の記事が10件だけなら、その10件だけが表示されて終わってしまいます。)
(総記事数が1000件でも「10件」だけが表示される事になるので、困っています。)
私なりにネットで調べたり書籍で調べても上手くいきません。
すべての記事を表示しつつ「20分間間隔」での「pV数」での並び替えを行う方法をご存知の方や
解決する為の方法に何か心当たりのある方は教えて頂けないでしょうか?
お力をお貸し頂けると嬉しいです。
どうかよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/20 01:59
2017/10/20 02:00
2017/10/20 02:01
2017/10/20 02:01
2017/10/20 02:11 編集
2017/10/20 02:51
2017/10/20 02:56
2017/10/20 03:02
2017/10/20 03:06
2017/10/20 03:09
2017/10/20 03:10