フォームデータをデータベースに登録します
データベースの準備
MySQLにてデータベース名:mydb、テーブル:formを作成します。
formテーブルのカラムデータを作成
1 id int(11) AUTO_INCREMENT PRIMARYキー
2 name VERCHAR(20)
3 email VERCHAR(50)
4 blood VERCHAR(10)
5 message VERCHAR(400)
ここまで準備したら、実際にデータを登録するプログラムを作成します。
以下がそのソースファイルです。
ソースファイル
======================
フォームへの入力 input.php
======================
<!DOCTYPE HTML>
<html lang ="ja">
<head>
<meta charset="utf-8">
<title>ユーザー登録フォーム</title>
<style>
h1 {
margin-left: 50px;
}
th {
width: 200px;
margin: 10px 0;
}
input#send {
margin-left: 100px;
margin-top: 30px;
}
</style>
</head>
<body>
<h1>ユーザー登録フォーム</h1>
<form action="confirm.php" method="post">
<table>
<tr><th>お名前</th>
<td><input type="text" name="name" size="20" maxlength="10" placeholder="山田太郎" required></td></tr>
<tr><th>メールアドレス</th><td><input type="email" name="email" size="50" maxlength="50" required></td></tr>
<tr><th>血液型</th>
<td>
<input type="radio" name="kata" value="O型" id="o" checked><label for="o">O型</label>
<input type="radio" name="kata" value="A型" id="a"><label for="a">A型</label>
<input type="radio" name="kata" value="B型" id="b"><label for="b">B型</label>
<input type="radio" name="kata" value="AB型" id="ab"><label for="ab">AB型</label>
</td></tr>
<tr><th>お問い合わせ</th><td><textarea name="message" cols="50" rows="4"></textarea></td></tr>
</table>
<input id="send" type="submit" value="送信する">
</form>
</body>
</html>
=======================
入力内容の確認 confirm.php
=======================
<?php
// セッションの開始
session_start();
$name = htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');
$email = htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8');
$blood = $_POST['kata'];
$message = htmlspecialchars($_POST['message'], ENT_QUOTES, 'UTF-8');
// 入力値をセッション変数に格納
$_SESSION['name'] = $name;
$_SESSION['email'] = $email;
$_SESSION['blood'] = $blood;
$_SESSION['message'] = $message;
?>
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>ユーザー登録フォーム(confirm)</title>
<style>
h1 {
margin-left: 50px;
}
th {
width: 200px;
margin: 10px 0;
}
input#send {
margin-left: 100px;
margin-top: 30px;
}
</style>
</head>
<body>
<h1>ユーザー登録フォーム(confirm)</h1>
<form action="submit.php" method="post">
<table>
<tr><th>お名前:</th><td><?php echo $name; ?></td></tr>
<tr><th>メールアドレス:</th><td><?php echo $email; ?></td></tr>
<tr><th>血液型:</th><td><?php echo $blood; ?></td></tr>
<tr><th>お問い合わせ:</th><td><?php echo $message; ?></td></tr>
</table>
<input id="send" type="submit" value="登録">
</form>
</body>
</html>
===========================
データベースへの登録 submit.php
===========================
<?php
// セッションの開始
session_start();
$name = htmlspecialchars($_SESSION['name'], ENT_QUOTES, 'UTF-8');
$email = htmlspecialchars($_SESSION['email'], ENT_QUOTES, 'UTF-8');
$blood = $_SESSION['blood'];
$message = htmlspecialchars($_SESSION['message'], ENT_QUOTES, 'UTF-8');
// 接続設定
$user = 'root';
$pass = '';
// データベースに接続
$dsn = 'mysql:host=localhost;dbname=mydb;charset=utf8';
$conn = new PDO($dsn, $user, $pass); //「$conn」は、任意のオブジェクト名
// データの追加
$sql = 'INSERT INTO form(name, email, blood, message) VALUES("'.$name.'","'.$email.'","'.$blood.'","'.$message.'")';
$stmt = $conn -> prepare($sql);
$stmt -> execute();
?>
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>ユーザー登録フォーム・登録ページ</title>
<style>
p {
margin-left: 50px;
}
</style>
</head>
<body>
<p>ご登録ありがとうございました。</p>
<p><a href="input.php">入力画面に戻る</a></p>
</body>
</html>
実行画面
======================
フォームへの入力 input.php
======================
=======================
入力内容の確認 confirm.php
=======================
===========================
データベースへの登録 submit.php
===========================
データベースへの登録を確認
テーブルformの最後の行に、
id:18 name:山田太郎 email:taro@gmail.com blood:O型 message:はじめまして。よろしくおねがいします。
と登録されていることが確認できます。
セッションとは?
サーバー側に一時的にデータを保存する仕組みのことです。
クッキーと似ていますが、クッキーはブラウザ側、セッションはサーバー側にデータを保存します。
PHP Data Object(PDO)とは?
MySQL、PostgreSQL、SQLiteなどのデータベースの違いを吸収して、共通の関数で複数のデータベースを操作することができます。