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リストを管理することができます。ただし、セキュリティとデータベースへの接続に注意して実装してください。