WordPressプラグインの作成を行なっています。しかし、使用する処理(非同期通信)が原因で、データの登録処理が動きませんでした。
しかし、ちょっとした妥協と共に問題は解決しました(笑)
アンケートを作成したら。。。
なんだかんだと以下のようなところまで、実装することができました。
アンケートの質問と、回答をセットにしてDBに登録します。
そして、登録したデータは下のように投稿した記事に挿入するようになっています。
挿入する場所は、記事の中にあるタグid="XXX"
XXX部分に対応した部分の下にアンケートが追加されます。
上のキャプチャーで行けば、id="main"
のタグの最後部分に追加されます。
画面の一番下に来るわけですね。。。
ここまでの実装に関しては、自作WordPressプラグインの作成を参照下さい。
次の実装
アンケートを記事の中に表示することができました。
なので、アンケートに回答してもらったものをDBに登録、アンケートの集計結果を表示できるような実装が必要です。
どーやるか?
まずは集計するためのデータを登録するDBの設計が必要です。「DB」と記述しましたが、正確には「テーブル」です。
①集計するための項目を考える
アンケートに答えてもらった、時に集計したいことは(現状)以下の通りです。
- アンケートの質問の回答数
- アンケートに答えてもらった日時
少ないけどとりあえずそんなもんで(笑)
②テーブル設計
テーブルを作成する時のポイントとしては以下のようなことです。
- データ(アンケートの質問)と回答を一意に結びつけられるようにする
- 回答してもらった回数と日時を集計できるようにする
これらを加味すると下のようになります。
③テーブルの構成を作る
テーブルは、エクセルの列と行がある状態に似ています。というかほぼ一緒です。下のようなイメージです。
サンプル1(SAMPLE1)
ID | 質問 | 回答 | 回答時間 | 回答回数 |
---|---|---|---|---|
1 | AAAA | BBB | 2020/4/23 | 2 |
2 | 1111 | BBB | 2020/5/23 | 20 |
3 | XXXX | BBB | 2020/6/23 | 30 |
これを実際に使用するために。。。と考えると
「回答時間は、別テーブルに持った方が良い」となりました。
理由としては下のようなものがあります。
テーブルを分ける理由
- 1レコード(行)に対して、1つの質問と回答回数を登録する
- 時間を一緒に登録するとなると、レコード(行)が増えるだけで、不適当なデータが沢山できてしまう
そして、テーブルを分けるのは具体的に以下のようにする。
- アンケートを管理するためのテーブル(サンプル1)
- 回答時間を管理するためのテーブル(サンプル2)
サンプル2(SAMPLE2)
ID | 質問ID | 回答時間 |
---|---|---|
1 | AAAA | BBB |
2 | 1111 | BBB |
3 | XXXX | BBB |
そのあとは?
この2つのテーブルを結合します。
具体的には、サンプル1のテーブルとサンプル2のテーブルを結合します。
どーやるか?正確には、データを取得する時にはSQLを使用して取得します。
具体的なSQLは以下のようなSQLになります。
SELECT * FROM サンプル1 省略名(エイリアス), サンプル2 省略名(エイリアス) WHERE 条件1 AND 条件2 ...
これは、一般化したものでそのまま使用しません。しかし、下のものは実際に使用できるSQLです。
SELECT * FROM SAMPLE1 A, SAMPLE2 B WHERE A.ID = B.質問ID
しかし、今回は時間ごとの集計を行いたいので、日時をそのまま登録するようにはしません。
時間帯の区分けを作る
- 0:00〜7:00
- 7:00〜12:00
- 12:00〜18:00
- 18:00〜24:00
このように分けようと思います。
そして、それぞれのクリック数を計算できるようにカラムを追加してやります。
とまぁこんなところで。。。
プログラムの設計は上の様な形でやろうと思います。あとは、実装とテストですが、テスト環境と本番環境でアクセス権限に違いがあり、呼び出すphpファイルの配置先が決まっていない状況です。
WordPressのテスト環境は下の記事で構築しました。
MAMP Setup
でわでわ。。。
関連ページ
- WordPress プラグイン作成〜DBを使用する〜
- PHP PDO 〜MySQLにアクセスする〜
- PHP Ajax 〜DBに登録したデータを受信する〜
- Google Maps API PHP連携 〜マップ情報をDBに登録する〜
- PHP Image File 〜iPhoneやAndroidでの画像送受信の問題〜
- AngularJS Routing 〜PHPをWeb APIにする〜
- WordPress PHPカスタム〜根本的に見た目を変える〜
- WordPress PHPカスタム〜根本的に見た目を変える2〜
- Eclipse PHPプラグイン 〜ElipseでWordPress環境を構築〜
- WordPress テスト実装 〜heade-test.phpを表示〜
- AngularJS + PHP 〜WordPressと連携する〜
- AngularJS + PHP 〜AngularJSの実装〜
- AngularJS + PHP 〜AngularJSの実装2〜
- WordPress 処理解析 ~index.phpを眺める~
- WordPress Plugin NewStatPress ~アクセス解析プラグインAPIを使う~
- WordPress 処理解析 ~ログイン処理を調べる~
- WordPressカスタム〜アンケートボタンを追加する(設計)〜
- WordPressカスタム〜プラグインの作成〜
- WordPressカスタム〜ダッシュボードのプラグイン画面作成〜
- WordPressカスタム〜ダッシュボードのプラグイン画面作成2〜
- WordPressカスタム〜ダッシュボードのプラグイン画面作成3〜
- WordPress プラグイン作成〜アンケート作成プラグインを作る〜