予備知識: group by、MYSQL 関数week()、month()
データベースを設計する際、通常、記事のクリック率を記録するフィールドがあり、1 週間または 1 か月のクリック率ランキングをカウントしたい場合、これに頼って達成することは絶対に不可能です。このフィールドだけ。この時点で、各記事の毎日のクリックスルー率を記録する新しいテーブルが作成されます。
このテーブルにはランキングという名前が付けられ、4 つのフィールドが定義されているとします:rid (テーブル ID)、contentid (記事 ID に関連付けられている)、hits (毎日のクリックスルー率を記録する)、date (時刻、重要度、クエリ中の比較)
ランキングの大まかな構成
ID contentid のヒット日
1 2 12 2010-12-18
2 2 2 23 2010-12-19
3 1 15 2010-12-19
4 2 21 2010-12-20
1.統計
最初のステップは、記事の毎日のクリックスルー率を記録することです。このステップは非常に簡単です。ユーザーが記事を閲覧すると、レコードが存在しない場合は、PHP プログラムがデータベース クエリを実行します。 、これは、記事が表示されるたびにレコードを挿入する必要があることを意味します。後続の訪問者は、クリックスルー率を更新するだけで済みます。これは、その日の特定の記事のクリック率を記録するものです。
PHP:
$date = date("Y-m-d",time());
$contentid = $_GET[id];//現在の記事ID
$query = mysql_query("select * fromranking where contentid=$contentid and date=$date); //データベースをクエリします
if($value = mysql_fetch_array($query)){
mysql_query("updateranking set Hists = Hist+1 where id=$value[id] ");//レコードがある場合はクリック率+1するだけ
}その他{
Mysql_query("insert into ratings (`contentid`,`hits`,`date`)values($contentid,1,$date)");//初めて閲覧する場合は、データの一部を挿入します。クリック率は 1 です
}
2.お問い合わせ
この時点で、統計作業は完了しました。次に、これらの記事を 1 週間または 1 か月の合計クリック率の順にクエリすることは困難です。
1. まず記事をグループ化し、合計クリック率を計算します: ランキング グループから contentid order by sum(hits) desc を選択します
2. 今週のデータを取得してフィルタリングします: ランキングから *,sum(hits) を選択します (week(date)=week(now()) が contentid 順に sum(hits) desc でグループ化されます
これは週間ランキングのクエリ文です。クエリを実行した後、それを配列に入れて順番に表示します。完全な PHP コードは書きません。
http://bbs.2cto.com/mode.php?m=o&q=user&u=53700
http://www.bkjia.com/PHPjc/486038.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/486038.html技術記事予備知識: group by、MYSQL関数week()、month() データベースを設計する際、1週間のクリック率ランキングをカウントしたい場合、通常、記事のクリック率を記録するフィールドがあります。それとも一ヶ月...