html css js / LINE / php

phpとmysqlを使って【続】Lineミニアプリを作ってください

phpとmysqlを使って、このアプリを作ってください。
さらに、lineミニアプリ独自のデータを使った方法のサンプルをお願いします。

Lineミニアプリを作成するために、PHPとMySQLを使用してToDoリストアプリを実装するサンプルを示します。また、Lineミニアプリ独自のデータを保存する方法として、ユーザーごとにToDoリストを管理する方法を採用します。

前提条件:

  • PHPがサーバー上で実行できること。
  • MySQLデータベースが利用可能であること。

データベースのセットアップ: まず、データベースにToDoリストを保存するテーブルを作成します。以下のSQLクエリを実行してテーブルを作成します。

sql

CREATE TABLE todo_list (
  id INT AUTO_INCREMENT PRIMARY KEY,
  user_id VARCHAR(255),
  task TEXT,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

このテーブルには、ユーザーID(user_id)、タスク内容(task)、作成日時(created_at)が保存されます。

PHPファイルの作成: 以下のようなPHPファイルを作成します。

index.php

php

<!DOCTYPE html>
<html>
<head>
  <title>ToDoリスト</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <h1>ToDoリスト</h1>
  <div>
    <input type="text" id="taskInput" placeholder="新しいタスクを入力">
    <button id="addButton">追加</button>
  </div>
  <ul id="taskList">
    <?php include 'get_tasks.php'; ?>
  </ul>
  <script src="script.js"></script>
</body>
</html>
style.css

css

/* 既存のスタイルは省略 */
        
script.js

js


function () {
  const taskInput = document.getElementById("taskInput");
  const addButton = document.getElementById("addButton");
  const taskList = document.getElementById("taskList");

  addButton.addEventListener("click", function () {
    const taskText = taskInput.value;
    if (taskText.trim() === "") {
      alert("タスクを入力してください!");
      return;
    }

    const formData = new FormData();
    formData.append("task", taskText);

    fetch("add_task.php", {
      method: "POST",
      body: formData,
    })
      .then((response) => response.text())
      .then((data) => {
        taskList.innerHTML = data;
        taskInput.value = "";
      })
      .catch((error) => console.error(error));
  });
});

add_task.php

php

<?php
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["task"])) {
  $user_id = "USER_ID_FROM_LINE"; // ユーザーIDを取得する方法は後述します
  $task = $_POST["task"];

  $servername = "YOUR_DB_SERVERNAME";
  $username = "YOUR_DB_USERNAME";
  $password = "YOUR_DB_PASSWORD";
  $dbname = "YOUR_DB_NAME";

  // データベースへの接続
  $conn = new mysqli($servername, $username, $password, $dbname);
  if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
  }

  // データベースにタスクを追加
  $sql = "INSERT INTO todo_list (user_id, task) VALUES ('$user_id', '$task')";
  $conn->query($sql);

  // タスクの一覧を取得して表示
  include 'get_tasks.php';

  $conn->close();
}
?>
get_tasks.php

php


<?php
$user_id = "USER_ID_FROM_LINE"; // ユーザーIDを取得する方法は後述します

$servername = "YOUR_DB_SERVERNAME";
$username = "YOUR_DB_USERNAME";
$password = "YOUR_DB_PASSWORD";
$dbname = "YOUR_DB_NAME";

// データベースへの接続
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

// ユーザーごとのタスク一覧を取得
$sql = "SELECT * FROM todo_list WHERE user_id = '$user_id' ORDER BY created_at DESC";
$result = $conn->query($sql);

// タスク一覧を表示
if ($result->num_rows > 0) {
  while ($row = $result->fetch_assoc()) {
    echo '<li>' . $row["task"] . '</li>';
  }
} else {
  echo '<li>タスクはありません。</li>';
}

$conn->close();
?>
Lineミニアプリ独自のデータの取得:

Lineミニアプリでは、LIFF(Line Front-end Framework)を使用して、ユーザーのLineアカウント情報(ユーザーIDなど)にアクセスできます。上記のコード中の"USER_ID_FROM_LINE"の部分は、実際にはユーザーのLineアカウント情報を取得するために適切なLIFFのAPIを使用する必要があります。

LIFFの使用方法については、公式ドキュメントを参照してください。https://developers.line.biz/ja/docs/liff/overview/

これでToDoリストアプリが完成しました。LineミニアプリのユーザーごとにToDoリストが独立して保存されるため、それぞれのユーザーが個別のToDoリストを管理することができます。ただし、セキュリティとデータベースへの接続に注意して実装してください。

まとめ・感想

追撃。なんとかなんとなくのカタチになったかな。

まだまだ使えるレベルのプログラムではないけれども。

前の関連投稿:lineミニアプリを作ることのメリットをおしえて