WordPressに追加するプラグインの作成を行なっています。しかし、使用する処理(非同期通信)が原因で、データの登録処理が動きませんでした。
しかし、ちょっとした妥協と共に問題は解決しました(笑)
アンケートを作成したら。。。
なんだかんだと以下のようなところまで、実装することができました。
アンケートの質問と、回答をセットにしてDBに登録します。
そして、登録したデータは下のように投稿した記事に挿入するようになっています。
挿入する場所は、記事の中にあるタグid="XXX"
XXX部分に対応した部分の下にアンケートが追加されます。
上のキャプチャーで行けば、id="main"
のタグの最後部分に追加されます。
画面一番下に来るわけですね。。。
次の実装
アンケートを記事の中に表示することができました。
なので、アンケートに回答してもらったものを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
このように分けようと思います。
そして、それぞれのクリック数を計算できるようにカラムを追加してやります。
とまぁこんなところで。。。
でわでわ。。。
関連ページ
- Java はじめて 1 〜メインメソッド〜
- Java はじめて2 〜メソッドを呼び出す〜
- Java はじめて3 〜コメントの書き方〜
- Java はじめて4〜練習問題をやってみる〜
- Java はじめて5 〜変数について〜
- Java はじめて6 〜変数について2、byte, char, boolean型〜
- Java はじめて7 〜配列とは、配列の使い方〜
- Java はじめて8 〜booleanとif~
- Java はじめて 9 〜switch文〜
- Java はじめて 10 〜ループ処理A: for文1〜
- Java はじめて 11 〜ループ処理A: for文2 拡張for文〜
- Java はじめて12 〜ループ処理B: while文〜
- Java はじめて13 〜ループ処理C: do-while文〜
- Java はじめて14 〜クラスの作り方〜
- Java はじめて15 〜クラス型変数の使い方〜
- Java はじめて16 〜クラス設計から実装〜
- Java はじめて17 〜設計後の部品を実装する1〜
- Java はじめて18 〜設計後の部品を実装する2〜
- Java はじめて19 〜コンストラクタの役割を見る〜
- Java はじめて20 〜チェック処理クラスを作る〜
- Java はじめて21 〜オブジェクト指向的分析、アプリの拡張をする〜
- Java はじめて22 〜オブジェクト指向的分析、アプリ拡張の実装とテスト〜
- Java はじめて23 〜テスト駆動型開発を行う〜
- Java はじめて24 〜JUnitでのテスト駆動型開発1〜
- Java はじめて25 〜JUnitでのテスト駆動型開発2: テストケース作成〜
- Java はじめて26 〜JUnitでのテスト駆動型開発3: クラスの実装〜
- Java はじめて27 〜JUnitでのテスト駆動型開発4: 追加修正と実装〜
- Java はじめて28 〜JUnitでのテスト駆動型開発5: ファイル出力の実装〜
- Java はじめて29 〜JUnitでのテスト駆動型開発6: ファイル読み込みのテスト〜
- Java はじめて30 〜JUnitでのテスト駆動型開発7: テストクラスの実装方法〜
- Java はじめて31 〜JUnitでのテスト駆動型開発8: 処理をつなげたテスト〜
関連ページ
- 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 プラグイン作成〜アンケート作成プラグインを作る〜