お問い合わせ:データベース(2)

お問い合わせのデータをデータベースに自動保存

  1. データベースに「接続」する
  2. データベースエンジンにSQL文で指令をだす
  3. データベースから「切断」する
データベースに「接続」
$dsn = 'mysql:dbname=データベース名;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>
<link href="style.css" rel="stylesheet" media="all">
</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

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>確認画面</title>
<link href="style.css" rel="stylesheet" media="screen, print">
</head>
<body>
<?php
 $name = $_POST['name'];
 $email = $_POST['email'];
 $message = $_POST['message'];
  print '<ul>'."\n";
  print '<li>';
    if($name=='') {
        print 'お名前が、入力されていません。';
    } else {
        print 'ようこそ、'.$name.'';
    }
  print '</li>'."\n";
  print '<li>';
    if($email=='') {
        print 'メールアドレスが、入力されていません。';
    } else {
        print 'メールアドレス:'.$email;
    }
  print '</li>'."\n";
  print '<li>';		
    if($message=='') {
        print 'お問い合わせの内容が、入力されていません。';
    } else {
        print 'お問い合わせの内容:'.$message;
    }
  print '</li>'."\n";
  print '</ul>'."\n";

if($name=='' || $email=='' || $message=='') {
  print '<form>'."\n";
  print '<input type="button" onClick="history.back()" value="戻る">'."\n";;
  print '</form>'."\n";	
} else {
  print '<form action="thanks.php" method="post">'."\n";
  print '<input type="hidden" name="name" value=" '.$name.' ">';
  print '<input type="hidden" name="email" value=" '.$email.' ">';
  print '<input type="hidden" name="message" value=" '.$message.' ">';
  print '<input type="button" onClick="history.back()" value="戻る">'."\n";
  print '<input type="submit" value="送信">'."\n";
  print '</form>'."\n";
}
?>
</body>
</html>

thanksページに自動保存機能を追加


《thanks.php

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>確認画面</title>
<link href="style.css" rel="stylesheet" media="screen, print">
</head>
<body>
<?php
 $dsn = 'mysql:dbname=データベース名;host=データベースホスト名';
 $user = 'ユーザー名';
 $password = 'パスワード';
 $dbh = new PDO($dsn, $user, $password);
 $dbh -> query('SET NAMES UTF8');

 $name = $_POST['name'];
 $email = $_POST['email'];
 $message = $_POST['message'];
	
 $name = htmlspecialchars($name);
 $email = htmlspecialchars($email);
 $message = htmlspecialchars($message);
	
	print $name.'様<br>'."\n";
	print 'お問い合わせ、ありがとうございました。<br>'."\n";
	print 'お問い合わせ内容『'.$message.'』を<br>'."\n";
	print $email.'にメールで送りましたのでご確認ください。'."\n";
	
 $mail_sub = 'お問い合わせを受け付けました。';
 $mail_body = $name."様、ご協力ありがとうございました。";
 $mail_body = html_entity_decode($mail_body,ENT_QUOTES,"UTF-8");
 $mail_head = 'From:xxx@gmail.com';
 mb_language('Japanese');
 mb_internal_encoding("UTF-8");
 mb_send_mail($email,$mail_sub,$mail_body,$mail_head);
	
 $sql = 'INSERT INTO inquiry(name, email, message) VALUES("'.$name.'","'.$email.'","'.$message.'")';
 $stmt = $dbh -> prepare($sql);
 $stmt -> execute();

 $dbh = null;
?>
</body>
</html>
  • このデータをアップロードした後に、データを記述しphpMyAdminで確認します
入力後のチェック


データが追加されたことがわかります。
テストサーバー内で稼働します。