私はPHPでブログシステムを作成しようとしています。過去21日間に最も多く閲覧された投稿を数える方法が必要です。誰かがこれを行う良い方法を知っていますか?最近21日間に最も多く閲覧された投稿
私はPHPで多くの経験がないので、私は正しい方向に私を指す人が必要です。私はGoogleのanlytics APIを調べようとしましたが、少し複雑に思えます。クッキーを使うのは簡単でしょうか?
私はPHPでブログシステムを作成しようとしています。過去21日間に最も多く閲覧された投稿を数える方法が必要です。誰かがこれを行う良い方法を知っていますか?最近21日間に最も多く閲覧された投稿
私はPHPで多くの経験がないので、私は正しい方向に私を指す人が必要です。私はGoogleのanlytics APIを調べようとしましたが、少し複雑に思えます。クッキーを使うのは簡単でしょうか?
は、あなた自身のブログシステムを構築しているので、ここでそれを行うための最も簡単な方法です。 IP記録されたレコードを持っている場合は、ビジネスロジックを調整する必要があります。
今、あなたは次のように問い合わせることができます:あなたは本当にあなたのブログの記事を訪問し、誰かの日時を記憶しているん何
select visits.blogpostid, count(dtpost) as counted from posts
left join posts on posts.id = visits.blogpostid
where dtpost between (NOW() AND <-21 days interval function>)
order by counted DESC group by visits.blogpostid;
。これは自動的にカウントなので、間隔を置いて間に置くとデータ*が取り出されます。 count()関数はカウントを行います。
知っておくべきことは、自分のブラウザの最新表示が訪問回数を加算することです。そのため、ブラウザの更新回数をカウントする方法を提供する必要があります(通常は時間制限またはあなたはすでにそのページを見てきました)。
*編集: これはあいまいなので、希望する期間内にデータを取得するということです。
IDをポストするための外部キーを使用してテーブルviews
を作成し、訪問者情報と日付のエントリを追加します。そして、あなたは(未テスト)は、このような最も見られた記事を取得することができます:
SELECT p.*, COUNT(p.*) count FROM posts p
INNER JOIN views v ON v.post_id = p.id
WHERE DATE_SUB(CURDATE(), INTERVAL 21 DAY) <= p.date_viewed
ORDER BY count DESC
GROUP BY p.id;
テーブルにデータを追加するときは、ボットを除外して、ユニークな投稿ビューや生の投稿ビューを追跡することを忘れないでください。 – Endijs
あなたが起きてからそれを防ぐために、セッションmeganismを使用することができ、同じユーザーが複数回見たときにインクリメントからのカウントを防ぐために。
私はこれがあなたのブログの記事の訪問の匿名のカウントがあることを前提としています
session_start();
if (!isset($_SESSION['posts_viewed'])) {
$_SESSION['posts_viewed'] = array();
}
// some logic to get to relevant post id here
// check that the post_id is not in the array
if (!in_array($post_id, $_SESSION['posts_viewed'])) {
// logic to increment a persistent counter (e.g. in mysql) here
// add post_id to array
array_push($_SESSION['posts_viewed'], $post_id);
}
// finally some logic that display the post here
session_close();
質問をする際にもう少し努力する必要があります。あなたのテーブルの構造は何ですか?何を試しましたか?膨大な数のチュートリアルとこのトピックを扱うブログ記事があります。 – nnichols