MySQLとPHPを使用してフォームの内容をデータベースに追加し、その内容を一覧表示するサンプルプログラムを紹介します。この例では、ユーザーがフォームに入力したデータをMySQLデータベースに保存し、そのデータをPHPで取得して一覧表示します。

MySQLデータベースの設定

まず、MySQLでデータベースとテーブルを作成します。

CREATE DATABASE sample_db;

USE sample_db;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

フォームを作成するHTMLファイル (form.html)

次に、ユーザーがデータを入力するためのHTMLフォームを作成します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ユーザーフォーム</title>
</head>
<body>
    <h2>ユーザー情報を入力してください</h2>
    <form action="submit.php" method="post">
        <label for="name">名前:</label><br>
        <input type="text" id="name" name="name" required><br><br>
        <label for="email">メールアドレス:</label><br>
        <input type="email" id="email" name="email" required><br><br>
        <input type="submit" value="送信">
    </form>
</body>
</html>

フォームデータを処理してMySQLに保存するPHPファイル (submit.php)

次に、フォームから送信されたデータをMySQLデータベースに保存するためのPHPスクリプトを作成します。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "sample_db";

// MySQL接続を作成
$conn = new mysqli($servername, $username, $password, $dbname);

// 接続チェック
if ($conn->connect_error) {
    die("接続失敗: " . $conn->connect_error);
}

// POSTリクエストのデータを取得
$name = $_POST['name'];
$email = $_POST['email'];

// データベースにデータを挿入
$sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";

if ($conn->query($sql) === TRUE) {
    echo "新しいレコードが正常に作成されました。<br>";
    echo "<a href='list.php'>ユーザー一覧を見る</a>";
} else {
    echo "エラー: " . $sql . "<br>" . $conn->error;
}

// MySQL接続を閉じる
$conn->close();
?>

データを一覧表示するPHPファイル (list.php)

最後に、データベースに保存されたデータを一覧表示するPHPスクリプトを作成します。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "sample_db";

// MySQL接続を作成
$conn = new mysqli($servername, $username, $password, $dbname);

// 接続チェック
if ($conn->connect_error) {
    die("接続失敗: " . $conn->connect_error);
}

// データベースからデータを取得
$sql = "SELECT id, name, email, created_at FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 出力データの各行を表示
    echo "<table border='1'><tr><th>ID</th><th>名前</th><th>メールアドレス</th><th>登録日時</th></tr>";
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>" . $row["id"]. "</td><td>" . $row["name"]. "</td><td>" . $row["email"]. "</td><td>" . $row["created_at"]. "</td></tr>";
    }
    echo "</table>";
} else {
    echo "0 件の結果";
}

// MySQL接続を閉じる
$conn->close();
?>

動作確認

  1. form.html をブラウザで開き、フォームに名前とメールアドレスを入力して「送信」ボタンを押します。
  2. データが正常に保存されると、リンクが表示されるので「ユーザー一覧を見る」をクリックすると、list.php が実行され、保存されたユーザー情報が一覧表示されます。

セキュリティ考慮

このサンプルは学習目的のために基本的なエラーチェックしかしていません。実際のアプリケーションでは、SQLインジェクション攻撃を防ぐためにプリペアドステートメントを使用し、入力データを適切にエスケープする必要があります。また、エラーメッセージの内容を公開しないようにすることも重要です。

参考になりましたらシェアしてください。

Follow me!