■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周りを作っていきたいと思います。