1

この StackOverflow ページの単一の質問のように、単一のニュース項目が表示される jsp ページを作成しています。ビュー数をデータベースに保存する必要があります。

この方法で、データベースのビュー カウントを単純に増やすことができます。

`UPDATE table SET views=views+1 WHERE newsId=4458;`

しかし、1 人のユーザーがそのページに何度も何度もアクセスした場合 (たとえば 50 回) はどうなるでしょうか? どうすればこれを回避できますか?

StackOverflow のビュー カウント システムのようなものが欲しいです。

4

3 に答える 3

1

1つの解決策は、誰かがあなたのWebサイトにアクセスするたびに、次の列「viewid」「newsid」「ipaddress」(明らかにnewsidは外部キーです)を持つ新しいテーブル(ビューと呼ばれる)を作成することです。彼のIPがそのニュース項目のそのテーブルに既にあります。

Select count(*) AS count FROM views WHERE newsid=1234 AND ipaddress=123.456.125

カウントが0の場合、このように挿入します

INSERT INTO views('newsid', 'ipaddress') VALUES(1234, 123.146.125)

ビューカウントを取得する場合:

Select count(*) AS count FROM views WHERE newsid=1234

テーブル ビューに「count」および「lastviewed」(datetime 型) という別の列を追加することで、これを強化できます。日が一致しない場合、すべての IP を別の時間にカウントできるようにするとします。このようにして、かなり正確なビューカウントを取得できます:)

新しいビューカウントを取得するには、単純に SUM を使用できます

Select SUM(count) AS count WHERE newsid=1234

幸運を :)

于 2012-07-13T21:25:08.767 に答える
0

私は JavaScript でカウンターを使用すると言います。本体の onclick で変数をインクリメントします。例えば:

<script language=”javascript”&gt;
function pageCounter()
{
var counter = 0;
counter = counter++;

}
</script>

<body onclick = “pageCounter()”&gt;

onclose ..で値を更新できます。

于 2012-07-13T21:24:40.507 に答える