Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8925

【第四回】コロナ禍だから何かできることをー 自宅療養者連絡ツール ー

$
0
0
前回までのあらすじ 【第三回】コロナ禍だから何かできることを 実装イメージ図 LINEを利用して保健所の担当者の負担を軽減するとともに、自宅療養者はいつでもつながっている安心感を持たせるためのツールイメージです。 取得したデータをもとに、データベースへの更新までの流れを考えよう 今回は、体温や体調の報告の場合はユーザー状態をDBへ保存する処理を説明します。 データベースはMYSQLを使用します。 エラー時の時は、エラーだったことを返す処理の方が親切なんですが、ひとまず終了としときます。 データベースへの接続方法 // 宣言 define("DATABASE_URL", 'mysql:host=アドレス;dbname=データベース名;charset=utf8'); define("DATABASE_USER", '接続ユーザー名'); define("DATABASE_PASS", '接続パスワード'); try{ // 接続処理 $dbh = new PDO(DATABASE_URL, DATABASE_USER, DATABASE_PASS); // 静的プレースホルダを指定 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // エラー発生時に例外を投げる $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $ex){ exit; } ユーザー情報の取得方法 //LINE IDを利用して、ユーザーが存在するかチェックを行う try{ $SQL = <<<EOM SELECT USER_ID, USER_NAME FROM LINE_USER WHERE LINE_ID = :line_id EOM; $stmt = $dbh->prepare($SQL, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); $stmt->bindParam('line_id', $line_id, PDO::PARAM_STR); $stmt->execute(); }catch(PDOException $ex){ exit; } //ユーザーIDとユーザー名を取得しておく。 if($stmt->rowCount()>=0){ $row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT); $user_id = $row[0]; $user_name = $row[1]; } データの登録方法 LINE_ACCESSのテーブルはLINEでアクションがあったときの履歴保存用(いつ、だれが、どんなメッセージを送ってきたか) LINE_USERは登録ユーザーの情報(ユーザーIDとLINE IDとユーザー名と最後にアクションがあった日時) //トランザクション処理を開始 $dbh->beginTransaction(); try { $SQL = <<<EOM INSERT INTO LINE_ACCESS( USER_ID, ACCESS_DATE, MESSAGE )VALUES( :user_id, NOW(), :message ) EOM; $stmt = $dbh->prepare($SQL, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); $stmt->bindParam(':user_id', $user_id, PDO::PARAM_STR); $stmt->bindParam(':message', $message_text, PDO::PARAM_STR); $stmt->execute(); $SQL = <<<EOM UPDATE LINE_USER SET LAST_ACCESS = NOW() WHERE USER_ID = :user_id EOM; $stmt = $dbh->prepare($SQL, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); $stmt->bindParam(':user_id', $user_id, PDO::PARAM_STR); $stmt->execute(); //コミット $dbh->commit(); }catch(Exception $ex){ //ロールバック $dbh->rollback(); } これを見て2点、気づいたかたもいるかもしれません。 1.LINE IDをユーザーIDになんでしてないの?LINE IDだけでいいんじゃないの? LINEを利用していない自宅療養者もいるため、敢えて別ユーザーIDを作成しています。 2.ユーザー登録はどうやるねん! ということで、次回はユーザー登録の実装(LIFF)について説明します。 コロナ禍だから何かできることをー 自宅療養者連絡ツール ー 【第一回】実装イメージ図と動画 【第二回】LINEからデータを取得して返すまでの流れ 【第三回】LINEからデータベースまでの流れ 【第四回】データベースへの更新までの流れ

Viewing all articles
Browse latest Browse all 8925

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>