■mysql側
まず、テーブルを作ります。
1.管理画面側で予約情報をcake.phpで閲覧できるようにしたいので、テーブル名は複数にします。
2.いたずらの予約が複数回あった場合は、そのipアドレスをhtaccessでアクセス制御できるようにしたいので、ipアドレスと、user agentのカラムを作ります。
3.予約送信時間の型は、yyyy-mm-ddではなくyyyy-mm-dd h:i:sなので、dateではなくdatetimeにします。(間違えました)
4.管理者画面で後からメモをinsert出来るようにしたいので、memoのカラムを作ります。
create table reserve.masters(
id int unsigned auto_increment primary key,
day varchar(255),
time1 varchar(41),
time2 varchar(41),
course varchar(41),
charge varchar(41),
name varchar(41),
mail varchar(41),
ip varchar(255),
useragent varchar(255),
created datetime,
memo varchar(255)
);
■php側
普通のpdoです。REMOTE_ADDRとHTTP_USER_AGENTでユーザー情報を取得しています。
$start = $_POST['stime'];
$end = $_POST['etime'];
$ip = $_SERVER['REMOTE_ADDR'];
$useragent = $_SERVER['HTTP_USER_AGENT'];
$date = date('Y-m-d H:i:s');
$dsn = "mysql:dbname=reserve;host=localhost";
$user = "hoge";
$password = "hogehoge";
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e){
print('connection failed:'.$e->getMessage());
}
$stmt = $dbh -> prepare("INSERT INTO masters (day, time1, time2, course, charge, name, mail, ip, useragent, created) VALUES(:day, :time1, :time2, :course, :charge, :name, :mail, :ip, :useragent, :created)");
$stmt->bindParam(':day', $_POST['day'], PDO::PARAM_STR);
$stmt->bindParam(':time1', $_POST['time1'], PDO::PARAM_STR);
$stmt->bindParam(':time2', $_POST['time2'], PDO::PARAM_STR);
$stmt->bindParam(':course', $_POST['course'], PDO::PARAM_STR);
$stmt->bindParam(':charge', $_POST['charge'], PDO::PARAM_STR);
$stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR);
$stmt->bindParam(':mail', $_POST['mail'], PDO::PARAM_STR);
$stmt->bindParam(':ip', $ip, PDO::PARAM_STR);
$stmt->bindParam(':useragent', $useragent, PDO::PARAM_STR);
$stmt->bindParam(':created', $date, PDO::PARAM_STR);
$stmt->execute();
■画面遷移
1.入力フォーム
2.確認画面
3.thankyou画面
4.メール受信
5.mysql
ここまでは特に問題なさそうです。
次はvalidation周りを作っていきたいと思います。