Download CounterをWPプラグイン、PHP:Mysql、ファイル 形式で作成する[第六回]

第五回でほぼ全て実装しましたので今回はSql命令文を使って集計させます

(怒)動作を試すならここでやらないで!ソースを確認しましょう!変なログが記録されて迷惑!INSERT INTO count_table (ip,filename,dt) VALUES (:ip,:file,:time)を見ればわかると思いますが先にINSERTする項目を作ってあとで配列で置き換えているのでここにSql文入れてもfilenameにそのまま代入されちゃうのでSql文入れてもDBにそのままINSERTされると思いますよ。よく見て!


(Angry) Don’t do it here if you want to try it! Check the source! A strange log is recorded and annoying!If you look at INSERT INTO count_table (ip,filename,dt) VALUES (:ip,:file,:time), you can see it, but since I made the item to be INSERTed first and replaced it with an array later, insert the Sql statement here However, since it will be assigned to filename as it is, I think that even if you enter a Sql statement, it will be inserted as it is in the DB. Look closely!

おばけが付近にいるか検索するAndroidアプリ「おばけスキャン」
↑別サーバーにジャンプさせてカウントを取るサンプル

<html>
<head>
	<title>JivaGooAR</title>
	<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
	<script>
		location.href = "https://play.google.com/store/apps/details?id=jp.dip.wspri.jivagoo ";
	</script>
</head>
<body>
</body>

SAKURA(楽曲:mp3)
↑カウントテスト用(mp3ファイルをDL)

sql_counterのスクリプト圧縮ファイル
↑からmysqlDLカウンターPHPがDLできます。ダウンロード状況は以下で確認できます。:パスワードはwspri

DL状況

セキュリティの関係でスクリプトが設置されたカレントから上位へ移動できてしまっていたのでファイル名にディレクトリパスを含められない&ディレクトリで上位に移動できないように修正しました。使用にあたっては設置カレントにDLディレクトリを作成してその中にファイルを設置するかもしくはその中にディレクトリを作成してご利用ください。

解説

ダウンロードされたファイルを集計して棒グラフで表示させるために以下のSql命令文を追加して実行させています
                        $count_files = "SELECT filename, COUNT( filename ) FROM $tb_name GROUP BY filename";
                        $count_files=$db->query($count_files);
                        $all="select count(id) from $tb_name";
                        $all=$db->query($all);
                        foreach($all as $all_row){$all = $all_row[0];}

SELECT filename, COUNT( filename ) FROM $tb_name GROUP BY filenameでダウンロードされたファイル名とそのカウント数を得ています。

select count(id) from $tb_nameは全体のカウントを得ています。で、実行結果はオブジェクトで返ってきますのでループでカウントを抜き出しています。オブジェクトなのでそのままでは使えません。
全体のカウントを得たらDLファイル毎のカウントを割って全体の割合を出してグラフに反映させています。このやり方ならDL数が大きくなってもはみ出るようなことはありませんね。

                        //ファイル毎の集計を表示で出力
                        //テーブルタグHEADER
                        echo ("
                            <table cellpadding=\"4\" cellspacing=\"1\" border=\"0\" width=\"800\"
                            align=\"center\" bgcolor=\"#336666\">
                            <tbody>
                            <tr id=\"count_f\" style=\"display:''\">
                            <td valign=\"middle\" align=\"center\" bgcolor=\"#2f4f4f\"><div style=\"font-size:10pt;color:#ffffff;\">ダウウンロードファイル名</div></td>
                            <td valign=\"middle\" align=\"center\" bgcolor=\"#2f4f4f\"><div style=\"font-size:10pt;color:#ffffff;\">DL数</div></td>
                            <td valign=\"middle\" align=\"center\" bgcolor=\"#2f4f4f\"><div style=\"font-size:10pt;color:#ffffff;\">グラフ(全体の割合)</div></td></tr>
                        ");
                        foreach($count_files as $count_row){
                            echo("
                            <tr id=\"count_f\" style=\"display:''\">
                            <td valign=\"middle\" align=\"left\" bgcolor=\"#ffffff\" width=\"200px\"><div style=\"font-size:10pt;\">".$count_row[0]."</div></td>
                            <td valign=\"middle\" align=\"left\" bgcolor=\"#ffffff\" width=\"50px\"><div style=\"font-size:10pt;\">".$count_row[1]."</div></td>
                            <td valign=\"middle\" align=\"left\" bgcolor=\"#ffffff\"><div style=\"background-color: blue; width: ".($count_row[1]/$all*100)."%; font-size: 10px;\">&nbsp;</div></td></tr>
                            ");
                        }
                        echo ("</tbody>
                        </table>");

で、出力ですが、集計結果は消す必要がないのでそのまま一番上に出力しています。ファイル数が何百とかになるならその下の処理同様にCSSで送ることができますね。こんなもんでどうですか。次は最終回、WPプラグイン化しますね。

Download CounterをWPプラグイン、PHP:Mysql、ファイル 形式で作成する[第一回]

ダウンロードカウンターで検索してこられる人が結構いるので今回は①WPプラグイン形式、②PHPスクリプトでMysql形式で記録閲覧、③PHPスクリプトでファイルで記録閲覧という3つのダウンロードカウンターを作ってみることにする

【設計】

①WPプラグイン形式で作成する

まずはワードプレスのPluginで作成してみる事にする

    • ダウンロードリンクにプラグインを指定することでIPとタイムスタンプを記録する
    • Anonymous(匿名)でのダウンロードとアカウント(登録制)を切り替えられる
    • 申請はアカウント登録のない場合は申請可能にする
    • メール登録型で申請メールに認証URLが送られ認証するとアカウントが承認される

※認証はいらねーかな。

といったチョット商用可能な感じのものにします。
WPプラグイン、PHPスクリプトも同じ仕様にします。

【ヘッダ】

<?php
/*
Plugin Name: WSPRI Download Counter
Plugin URI: https://wspri.dip.jp
Description: ダウンロードカウンタープラグイン
Author: j.amano
Version: 1.0
Author URI:https://wspri.dip.jp
*/
//user control
require_once('./wp-load.php');

フォントと段落を設定する

まず、外部*.cssを読み込ませてフォントを設定させる

以下setfont.cssファイル

/*タイトル用*/

p.fonttitle{font-size:36px;font-family:monospace;font-weight:600;line-height: 200%;}

/*小見出し用*/

p.fontmidasi{font-size:24px;font-family:monospace;font-weight:600;line-height: 200%;}

/*本文用*/

p.fontname{font-size:12px;font-family:monospace;font-weight:400;line-height: 200%;}

/*脚注用*/

p.fontnotes{font-size:10px;font-family:monospace;font-weight:600;color:#ff0000;line-height: 200%;}

でHTMLで読む

<html>
  <head>
    <link rel="stylesheet" href="setfont.css" type="text/css">
  </head>
<body>
  <p class="fonttitle">タイトル</p>
  <p class="fontmidasi">見出し</p>
  <p class="fontname">本文</p>
  <p class="fontnotes">脚注</p>
</body>
</html>

こんな感じ

CSS辞書

タイトル

見出し

本文

脚注