前記事の続きになります。今回はサーバに置くPHPファイルの説明です。
前記事を読んでいない方は→こちら
サーバに
- ログデータをInsertするためのPHPファイル
- 最新の水入れ替え時刻を取得するPHPファイル
の2つを置きます。ただ、それより前にDB(MySQL)にテーブルがないと始まりません。
ということで、テーブルから作ります。
1 2 3 4 5 |
mysql -u root -p create database db1; ※なければ作る use db1; create table TimeCheckerLog(id int primary key auto_increment, type text, date datetime); |
以上のテーブルができればOKです。
このテーブルを使用するユーザの権限も与えておきましょう。
1 |
GRANT SELECT, INSERT ON %%テーブル名%% TO %%ユーザ名%%; |
テーブルが出来たのでPHPファイルを作ります。
POSTパラメータを受け取って、これらが不足していたらreturnします。
誰でもinsertできる状態になっているのは少しまずいですかね。識別コードなどをPOSTパラメタに埋め込むと良いかもしれません。
その後DBに接続します。DB接続用ファイルを作っておくと便利です。
そしてSQLを発行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php #ini_set('display_errors', 1); #error_reporting(E_ALL); $type = $_POST['type']; $date = $_POST['date']; if(!$type || !$date) { return; } require_once('%%mysql_connect.php のパス%%'); $pdo = connectDB(); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $stmt=$pdo->prepare("INSERT INTO TimeCheckerLog (type, date) VALUES (:type, :date)"); $stmt->bindParam(":type", $type, PDO::PARAM_STR); $stmt->bindParam(":date", $date, PDO::PARAM_STR); $stmt->execute(); $pdo = null; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php function connectDB(){ $dsn = 'mysql:dbname=%%DB名を入れる%%;host=%%ホストを入れる(IP)%%;charset=utf8'; $username = '%%ユーザ名を入れる%%'; $password = '%%パスワードを入れる%%'; try { $pdo = new PDO($dsn, $username, $password); } catch (PDOException $e) { exit('' . $e->getMessage()); } return $pdo; } |
以上がログをインサートするPHPです。
最新のログを取得するPHPファイルは以下のようになります。
DBに接続し、SELECT文を流し込みます。今回は1件だけ必要なのでLIMIT 1 をつけましょう。
最後に、取得したデータをJSONでエンコードして、出力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php #ini_set('display_errors', 1); #error_reporting(E_ALL); require_once('%%mysql_connect.php のパス%%'); $pdo = connectDB(); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $data; $stmt=$pdo->prepare("SELECT * FROM TimeCheckerLog WHERE type = 'POT' ORDER BY id DESC LIMIT 1"); $stmt->execute(); try { foreach($stmt as $value) { $data['POT'] = $value['date']; } $stmt2=$pdo->prepare("SELECT * FROM TimeCheckerLog WHERE type = 'COFFEE' ORDER BY id DESC LIMIT 1"); $stmt2->execute(); foreach($stmt2 as $value) { $data['COFFEE'] = $value['date']; } } catch (Exception $e) { $data['ERROR'] = $e; } $pdo = null; echo json_encode($data); ?> |
ブラウザから動作確認としてアクセスしてみてもいいでしょう。
以上になります。