お問い合わせ:データベース(1)
入力されたデータを保存するためのデータベース
- サーバー上にデータベースを構築する
- SQL文を記述する
- お問い合わせ内容を格納するデータベースを作る
データベース作成
- 有料サーバーの場合、契約内容によってデータベースの作成数が決まっているので注意する
テーブルを作成
- テーブル名「inquiry」、フィールド数「4」
カラム | 種別 | 長さ/値 | デフォルト値 | NULL | インデックス | A_I |
---|---|---|---|---|---|---|
id | INT | なし | × | PRIMARY | チェックを入れる | |
name | VARCHAR | なし | × | |||
VARCHAR | なし | × | ||||
message | VARCHAR | なし | × |
id
- ユニークコード(通し番号)
- 1件1件の問い合わせを識別する為
データ種別 | 意味 | 文字数 | 範囲 |
---|---|---|---|
INT | 整数 | 文字ではないので指定しない | -2147483648〜2147483647 |
VARCHAR | 文字列 | 最大文字数を指定する | 0〜65,535文字 |
インデックス:PRIMARY
- インデックスは「索引」の意味
- これを設定するとデータの検索が早くなる
- PRIMARYは1つのテーブルの中で1つのフィールドにしか設定できないインデックス
- そのテーブルを代表するフィールド
- 「主キー」とも呼ばれる
A_I(AUTO INCREMENT)
- 自動的に通し番号をセットしてくれる
- テーブルの最終レコードのコードを取得する
- その値に1をプラスする
- 新しいレコードのコードフィールドにその値をセットする
SQL文を記述
INSERT INTO inquiry (name, email, message) VALUES ('山田', 'yamada@gamil.com', 'はじめまして。');
- SQLタブをクリック
- 「INSERT INTO」がレコード追加命令
- VALUESの左のフィールドに右の値をセットする
- 実行する
表示で確認
- 表示タブをクリック
お問い合わせデータをデータベースに自動保存
- データベースに「接続」する
- データベースエンジンにSQL文で命令を出す
- データベースから「切断」する
データベースに「接続」
$dsn = 'mysql:dsname=データベース名;host=データベースホスト名'; $user = 'ユーザー名'; $password = 'パスワード'; $dbh = new PDO($dsn, $user, $password); $dbh -> query('SET NAMES UTF8');
- XAMPP内では
$dsn = 'mysql:dbname=contactus;host=localhost'; $user = 'root'; $password = 'root'; $dbh = new PDO($dsn, $user, $password); $dbh -> query('SET NAMES UTF8');
データベースエンジンにSQL文で命令を出す
$sql = 'ここにSQL文を書く'; $stmt = $dbh -> prepare($sql); $stmt -> execute();
データベースから「切断」
$dbh = null;
入力画面の作成
《input.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>お問い合わせフォーム</title> </head> <body> <div id="confirmation"> <form action="check.php" method="post" id="inquiry"> <table> <tr> <th><label for="name">お名前</label></th> <td><input type="text" name="name" size="20" id="name" class="text1"></td> </tr> <tr> <th><label for="email">メールアドレス</label></th> <td><input type="text" name="email" size="50" id="email" class="text2"></td> </tr> <tr> <th><label for="message">ご意見</label></th> <td><textarea name="message" cols="50" rows="5" class="text3" id="message"></textarea></td> </tr> </table> <input type="submit" value="確認画面へ"> </form> </div> </body> </html>
入力されたデータの確認
《check.php》
<?php //フォームデータが空の場合は処理終了 if(empty($_POST)) { echo '処理終了'; exit; } require_once 'Encode.php'; //セッションの開始 session_start(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>確認画面</title> <style> section { width: 500px; margin: auto; text-align: center; } table { text-align: left; border: none; } td { width: 300px; padding: 3px; } td.subButtom { column-span: 2; text-align: right; } </style> </head> <body> <section> <h1>確認画面</h1> <p>内容を確認してください。</p> <?php //入力値のチェック if(empty($_POST['name'])) { echo 'お名前を入力してください。'; exit; } if(empty($_POST['email'])) { echo 'メールアドレスを入力して下さい。'; exit; } if(empty($_POST['message'])) { echo 'メッセージを入力してください。'; exit; } //入力値の取得・加工 $name = e($_POST['name']); $email = e($_POST['email']); $message = e($_POST['message']); $_SESSION['name'] = $name; $_SESSION['email'] = $email; $_SESSION['message'] = $message; ?> <form method="post" action="thanks.php"> <table> <tr> <td>お名前</td> <td><?php echo $name; ?></td> </tr> <tr> <td>メールアドレス</td> <td><?php echo $email; ?></td> </tr> <tr> <td>メッセージ</td> <td><?php echo nl2br($message); ?></td> </tr> <tr> <td class="subButtom"> <input type="submit" name="sub1" value="送信する"> </td> </tr> </table> </form> </section> </body> </html>