php フォーム作成してデータベースに登録する方法
解決したいこと
例)
現在、phpでお問い合わせフォームを作成して、入力画面、確認画面、完了画面の3つがあります。
入力画面で作成した、名前、ふりがな、電話番号、メールアドレス、問い合わせ内容をデータベースに登録して、入力画面下に表示をさせたい。
しかし、フォームに打ち込んだ内容をデータベースに登録する方法が調べても分かりません。
解決方法を教えて下さい。
下記画像のように表示させたい。
データベースに手打ちで入力したものは表示させる事はできました。
resultに代入させて表示させてます
発生している問題・エラー
なし
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
該当するソースコード
<?php
// require_once('../Models/Db.php');
// $name = $_POST["name"];
// $kana = $_POST["kana"];
// $tel = $_POST["tel"];
// $email = $_POST["email"];
$dsn = 'mysql:host=localhost;dbname=casteria;charset=utf8';
$user = 'root';
$password = '';
try {
$dbh = new PDO($dsn, $user, $password);
// 今あるデータを持ってきてる データは手打ち
$sql = 'SELECT * FROM contacts';
// ↓このコードで作成するものだと思ってる
// $sql = "INSERT INTO contacts(name, kana, tel, email) VALUES('{$name}', '{$kana}', '{$tel}', '{$email}',)";
// ②SQLの実行
$stmt = $dbh->query($sql);
// $stmt = $dbh->prepare($sql);
// ↓このコードで作成するものだと思ってる
// エラー Warning: PDOStatement::execute() expects parameter 1 to be array, string given
// $stmt ->bindValue(':name',[$name], PDO::PARAM_STR);
// $stmt ->bindValue(':kana',[$kana], PDO::PARAM_STR);
// $stmt ->bindValue(':tel',[$tel], PDO::PARAM_STR);
// $stmt ->bindValue(':email',[$email], PDO::PARAM_STR);
// ③SQLの結果を受け取る
// $stmt->execute($sql);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// var_dump($result);
} catch (PDOException $e) {
echo "接続失敗: " . $e->getMessage() . "\n";
exit();
}
$error_message = array();
if( isset($_POST["btn"] ) && $_POST["btn"] ){
//エラー項目の確認
//ニックネームが空の場合
if( !$_POST['name'] ) {
$error_message[] = "名前を入力してください";
} else if( mb_strlen($_POST['name']) > 100 ){
$error_message[] = "名前は10文字以内にしてください";
}
if(!$_POST['kana']) {
$error_message[] = "フリガナを入力してください";
} else if( mb_strlen($_POST['kana']) > 100 ) {
$error_message[] = "カナは10文字以内にしてください";
}
if(! preg_match("/^[0-9]+$/", $tel)){
$error_message[] = "数字を見直してください";
}
if(!$_POST['email']) {
$error_message[] = "メールアドレスを入力してください";
} else if(! filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) {
$error_message[] = "正しく入力してください";
}
if(!$_POST['content']) {
$error_message[] = "問い合わせ内容を記述してください";
}
}
if (!empty($_POST['name']) && ($_POST['kana']) && ($_POST['email']) && ($_POST['content'])){
header("Location: confirm.php", true, 307);
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>お問い合わせ</title>
<link rel="stylesheet" href="../public/css/contact.css">
<link rel="stylesheet" href="../public/css/css/bootstrap.min.css">
<script type="text/javascript" src="contact.js"></script>
</head>
<body>
<div class="container">
<h1 class="company">Company Name</h1>
<div class="row">
<div><h2>お問い合わせ</h2></div>
</div>
<?php
if( $error_message ){
echo '<div style="color:red;">';
echo implode('<br>', $error_message );
echo '</div>';
}
?>
<div class="row mt-5">
<form action="contact.php" method="POST" name="form" onsubmit="return validate()" >
<h1 class="contact-title">お問い合わせ 内容入力</h1>
<p>お問い合わせ内容ご入力の上,「確認画面へ」ボタンをクリックしてください。</p>
</div>
<div class="col-10">
<div class="form-row">
<div class="form-group col-md-7">
<label>名前<span class="btn btn-danger btn-sm">必須</span></label>
<input type="text" name="name" class = "form-control" placeholder="例) 水瀬いのり" value="">
</div>
<div class="form-group col-md-7">
<label>フリガナ<span class="btn btn-danger btn-sm">必須</span></label>
<input type="text" name="kana" class = "form-control" placeholder="例) ミナセイノリ" value="">
</div>
<div class="form-group col-md-7">
<label>電話番号<span class="btn btn-danger btn-sm">必須</span></label>
<input type="text" name="tel" class = "form-control" placeholder="例) 00000000000" value="">
</div>
<div class="form-group col-md-7">
<label>メールアドレス<span class="btn btn-danger btn-sm">必須</span></label>
<input type="text" name="email" class = "form-control" placeholder="例) sample@sample.com" value="">
</div>
<div class="form-group col-7">
<label>お問い合わせ<span class="btn btn-danger btn-sm">必須</span></label>
<textarea name="content" class = "form-control" placeholder="お問合せ内容を入力"></textarea>
</div>
</div>
<!-- <button type="submit" name= "btn" class="btn btn-success">確認画面へ</button> -->
<input type="submit" name="btn" class="btn btn-success"value="確認画面へ">
</form>
<div>
<table class="table table-bordered">
<tr>
<th>id</th>
<th>名前</th>
<th>ふりがな</th>
<th>電話番号</th>
<th>メールアドレス</th>
<th>お問い合わせ内容</th>
</tr>
<?php foreach($result as $column) : ?>
<tr>
<th><?php echo $column['id'] ?></th>
<th><?php echo $column['name'] ?></th>
<th><?php echo $column['kana'] ?></th>
<th><?php echo $column['tel'] ?></th>
<th><?php echo $column['email'] ?></th>
</tr>
<?php endforeach; ?>
</table>
</div>
</body>
</html>
自分で試したこと
いろいろな記事みたり、動画見たりしました。
検索方法があってないのか、理解しなくてはいけない事を理解できてません。
解決策をお願いします。。。
0