0
1

More than 1 year has passed since last update.

「MySQLでデータベース作成」と「PHPでデータベース記録」。(8日目)

Last updated at Posted at 2021-12-30

Kotlinのスマホアプリ(クライアント)が、ほぼ完成したので、サーバ側で受信したデータを記録する為、データベースを作成していきます。

サーバは、契約済みのロリポップを使用。

前回の記事

Kotlinで地図アプリ(ゴミ拾いアプリ)作成。(7日目)

一週間でやった事

  • GoogleMap APIを使い、地図+位置情報を表示
  • 移動に合わせて、マップがスクロール
  • ゴミの種類を「大・中・小」にわけ、ボタンアイコンを作成
  • ボタンにイメージアイコンを作成
  • ボタンタップ後、サーバー側へHTTPS(GET)でデータを送信(BASIC認証)
  • 送信前に確認ダイアログを表示
  • 送信後、地図上にアイコンを表示
  • アイコンタップで、種別/時間を表示
  • サーバー側でBASICに認証
  • サーバー側でPHPを使いGETデータ記録テスト

ロリポップサーバでデータベースを作成

ログインし、会員ページからデータベースを作成
イメージ7454.jpg

ロリポップサーバへSSHでログイン

既に作成済みなの省略。

詳細は公式サイトの情報は、ネットの情報を参照。

希望があれば、PuTTYを使った公開鍵方式でのログイン方法を紹介しますが、ネット情報を見た方が早いかもです…。

自動ログイン設定

MySQLへのログイン時、毎回、コマンドを打つのが面倒なので、.my.cnfを作成。

SSHで接続し、ホームディレクトリに「.my.cnf」を作成

SSH(ssh.lolipop.jp)
$ touch $HOME/.my.cnf
$ chmod 600 $HOME/.my.cnf
$ vi $HOME/.my.cnf

.my.cnfを編集

.my.cnf
[client]
host=(ホスト)
database=(データベース名)
user=(ID)
password=(PASS)

mysql コマンドを叩いてログインテスト

SSH(ssh.lolipop.jp)
$ mysql -u (ID)

上手くいけばmysqlへのログイン

イメージ7453.jpg

テーブル作成

データベースの選択

SSH(ssh.lolipop.jp)
$ mysql > use (データベース名);

テーブル作成(日時、ゴミの種類、緯度、経度)

SSH(ssh.lolipop.jp)
$ mysql >  CREATE TABLE GPS (
  DATE DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  type int(1) DEFAULT 0,
  latitude double DEFAULT 0,
  longitude double DEFAULT 0
);

終了

SSH(ssh.lolipop.jp)
$ mysql > quit;

サーバ側で、HTTP GETで受信したデータをPHPでデータベースへ保存

index.php
<?php
define('HOSTNAME', '(ホスト)');
define('DATABASE', '(データベース名)');
define('USERNAME', '(ID)');
define('PASSWORD', '(PASS)');
if(isset($_GET['DATA']) && $_GET['DATA'] != ''){
    try {
        $db  = new PDO('mysql:host=' . HOSTNAME . ';dbname=' . DATABASE, USERNAME, PASSWORD);
        $db->query('use '.DATABASE);
        $stmt = $db->query('INSERT INTO GPS VALUES ('.$_GET['DATA'].')');
        $databases = $stmt->fetchAll(PDO::FETCH_COLUMN);    
        echo 'OK';
    }
    catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }
}
else{
    echo "NG";
}
?>

スマホアプリから位置情報を送信し、記録できるのを確認して終了。

※スマホ側では、送信したデータが正常に記録されたかどうかチェックコードも追加
※$_GET['DATA']は、スマホ側でMySQLのデータフォーマットに合わせた形式を作成

今後の課題

  • WEB上で、GoogleMapを表示(HTML,CSS,JavaScript)
  • MySQLのデータを読み込み地図上にマーカー表示(JavaScript,php,Node.js)
  • WEBフレームワークのBootstrap上で、GoogleMap表示
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1