お問い合わせ:データベース(2)
お問い合わせのデータをデータベースに自動保存
- データベースに「接続」する
- データベースエンジンにSQL文で指令をだす
- データベースから「切断」する
データベースに「接続」
$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で確認します