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();
?>
動作確認
- form.html をブラウザで開き、フォームに名前とメールアドレスを入力して「送信」ボタンを押します。
- データが正常に保存されると、リンクが表示されるので「ユーザー一覧を見る」をクリックすると、list.php が実行され、保存されたユーザー情報が一覧表示されます。
セキュリティ考慮
このサンプルは学習目的のために基本的なエラーチェックしかしていません。実際のアプリケーションでは、SQLインジェクション攻撃を防ぐためにプリペアドステートメントを使用し、入力データを適切にエスケープする必要があります。また、エラーメッセージの内容を公開しないようにすることも重要です。
参考になりましたらシェアしてください。