■ページの設置
www.example.jp/dir/(サイトのアドレス)内に、以下のWebページファイルを設置します。
db_login.php
ログイン情報を入れるファイルです。
dbnameはデータベース名、usernameはデータベースにアクセスするユーザー名、passwordはそのユーザーのパスワードを記述します。
<?php
$db_host='localhost';
$db_database='dbname';
$db_username='username';
$db_password='password';
?>
IchigoJam+MixJuiceから送られてきた手のデータを、データベースに書き込むWebページです。
「receive.log」にアクセスログが出力されます。もしデータベース接続エラーなどが出た場合は、このログを参照してください。
<?php
// ログイン情報のインクルード
include('db_login.php');
// データ受信
if (isset($_GET['ID'])) {
$strParas = $_GET['ID'];
$strPara = explode(",", $strParas);
$strID = $strPara[0];
$strX = $strPara[1];
$strY = $strPara[2];
// ログファイルの相対パス
$strDataFilePath = 'receive.log';
// ログファイルを追記モードでオープン
$fp = fopen($strDataFilePath, "a");
// 日付、時刻を取得
date_default_timezone_set('Asia/Tokyo');
$dt = new DateTime();
$strDateTime = $dt->format('Y-m-d H:i:s');
// 受信した値をログファイルに書き込み
fwrite($fp, $strDateTime . ',Send,ID=' . $strID . ',X=' . $strX . ',Y=' . $strY . "\r\n");
// データベースサーバーへ接続
$connection = mysqli_connect($db_host, $db_username, $db_password, $db_database);
if (!$connection) {
fwrite($fp, "DB接続エラー\r\n");
}
// === xyテーブルを更新 ===
// データ更新クエリを作成
$query = "INSERT INTO xy SET time='$strDateTime', userid='$strID', x='$strX', y='$strY', readsw='0'";
// クエリを実行
$result = mysqli_query($connection, $query);
if (!$result) {
fwrite($fp, "データ更新エラー\r\n");
}
// === 終了処理 ===
// データベース接続を閉じる
mysqli_close($connection);
// ログファイルポインタをクローズ
fclose($fp);
}
?>
IchigoJamからのリクエストに応じて、データベースから手の文字列を出力するWebページです。
「receive.log」にアクセスログが出力されます。もしデータベース接続エラーなどが出た場合は、このログを参照してください。
<?php
// ログイン情報のインクルード
include('db_login.php');
// データ受信
if (isset($_GET['ID'])) {
$strID = $_GET['ID'];
// ログファイルの相対パス
$strDataFilePath = 'receive.log';
// ログファイルを追記モードでオープン
$fp = fopen($strDataFilePath, "a");
// 日付、時刻を取得
date_default_timezone_set('Asia/Tokyo');
$dt = new DateTime();
$strDateTime = $dt->format('Y-m-d H:i:s');
// 受信した値をログファイルに書き込み
fwrite($fp, $strDateTime . ',Request,ID=' . $strID . "\r\n");
// データベースサーバーへ接続
$connection = mysqli_connect($db_host, $db_username, $db_password, $db_database);
if (!$connection) {
fwrite($fp, "DB接続エラー\r\n");
}
// === xyテーブルから読み取り ===
// データ読み取りクエリを作成
$query = "SELECT * FROM xy WHERE userid='$strID' AND readsw='0' ORDER BY time LIMIT 1";
// クエリを実行
$result = mysqli_query($connection, $query);
if (!$result) {
fwrite($fp, "データ読み取りエラー\r\n");
}
foreach ($result as $row) {
if ($row['readsw'] == "0") {
echo $row['x'] . $row['y'];
$query = "UPDATE xy SET readsw='1' WHERE userid='$strID' AND readsw='0' ORDER BY time LIMIT 1";
$result = mysqli_query($connection, $query);
if (!$result) {
fwrite($fp, "データ変更エラー\r\n");
} else {
fwrite($fp, $strDateTime . ',Update,ID=' . $strID . ',ReadSW=1' . "\r\n");
}
}
}
// === 終了処理 ===
// データベース接続を閉じる
mysqli_close($connection);
// ログファイルをクローズ
fclose($fp);
}
?>
データの一覧表を表示するWebページです。5秒ごとに表示が自動更新されます。動作テストの時に使います。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<title>Ichigo XY</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta http-equiv="refresh" content="5; URL=">
</head>
<body>
<h1>Ichigo XY</h1>
<?php
// ログイン情報のインクルード
include('db_login.php');
// データベースサーバーへ接続
$connection = mysqli_connect($db_host, $db_username, $db_password, $db_database);
if (!$connection) {
die ("DB接続エラー<br />". mysql_error());
}
$strSort = "0";
if (isset($_GET['SORT'])) {
$strSort = $_GET['SORT'];
}
// === xyテーブルから一覧表 ===
// クエリを作成
$query = "SELECT * FROM xy ORDER BY time";
// クエリを実行
$result = mysqli_query($connection, $query);
if (!$result) {
die ("DBクエリエラー<br />". mysql_error());
}
// 結果から一覧表を表示
echo "<table>\r\n";
echo "<tr><th class='time'>Time</th><th class='userid'>UserID</th><th>X</th><th>Y</th><th>ReadSW</th></tr>\r\n";
foreach ($result as $row) {
echo "<tr><td>" . $row['time'] . "</td><td>" . $row['userid'] . "</td><td>" . $row['x'] . "</td><td>" . $row['y'] . "</td>";
if ($row['readsw']=="0") {
echo "<td>未読</td>";
} else {
echo "<td>既読</td>";
}
echo "</tr>\r\n";
}
echo "</table>\r\n";
// === 終了処理 ===
// データベース接続を閉じる
mysqli_close($connection);
?>
</body>
</html>
styles.css
一覧表ページの見栄えを設定するスタイルシートです。お好みで改造してください。
html {
background-color: #FFFFFF;
font-family: sans-serif;
}
body {
margin: 20px auto 10px auto;
width: 920px;
text-align: center;
font-size: middle;
line-height: 1.3em;
color: #000000;
}
h1 {
height: 40px;
margin: 0px;
padding-left: 10px;
font-size: 18pt;
line-height: 40px;
color: #000000;
}
table {
margin: 10px auto 10px auto;
border-style: solid;
border: 2px solid #8888ff;
}
th {
text-align: center;
font-size: 14pt;
padding: 2px;
border: 1px solid #8888ff;
}
td {
font-size: 14pt;
padding: 2px;
border: 1px solid #8888ff;
}
■ページの動作テスト
PCのブラウザで「www.example.jp/dir/index.php」を開くと、一覧表ページが表示されます。
ブラウザの別ウインドウで、書き換えページへ以下のようにアクセスすると、メッセージを送信できます。
www.example.jp/dir/send.php?ID=UEDA01,0,0
「UEDA01」はユーザーID、「0,0」は手のx,y座標です。
データを送信した後、一覧表ページで受信されていることを確認してください。