質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

解決済

formタグから入力したデータをDBに登録

horohorohoroo
horohorohoroo

総合スコア1

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1回答

-1評価

0クリップ

388閲覧

投稿2022/04/14 07:26

編集2022/04/14 18:56

前提

お問い合わせフォームで入力された情報をデータベースに登録したいのですが、
情報入力後、送信ボタンを押しても作成したテーブルに登録されません。
エラーメッセージ等は出ずデータベースにも接続はできている状態です。
登録処理はcontact.phpのHTML上部に記載しています。
入力画面:contact.php
確認画面:confirm.php
当方、PHP,SQL勉強初めて一か月の初学者です。
知識はまだ足りないことばかりなのでアドバイスいただけると幸いです。

発生している問題・エラーメッセージ

発生なし

該当のソースコード

DBの情報

テーブル名 contacts カラム名: id  name  kana   tel    email       body       created_at パラメータ名:システムID  氏名  フリガナ 電話番号  メールアドレス  お問い合わせ内容   送信日時

contact.php

<?php function db_open() :PDO{ $user = "root"; $password = "sample"; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false, PDO::MYSQL_ATTR_MULTI_STATEMENTS => false, ]; $dbh = new PDO('mysql:host=localhost;dbname=form', $user, $password, $opt); return $dbh; } /* データベースへ登録 */ if(!empty($_POST['name'])){ try{ $sql = ' INSERT INTO contacts( name, kana, tel, email, body ) VALUES( :FULLNAME, :KATAKANA, :TEL, :EMAIL, :TEXTAREA ) '; $stmt = $dbh->prepare($sql); $stmt->bindValue(':FULLNAME', $_POST['name'], PDO::PARAM_STR); $stmt->bindValue(':KATAKANA', $_POST['kana'], PDO::PARAM_STR); $stmt->bindValue(':TEL', $_POST['num'], PDO::PARAM_INT); $stmt->bindValue(':EMAIL', $_POST['mail'], PDO::PARAM_STR); $stmt->bindValue(':TEXTAREA', $_POST['message'], PDO::PARAM_STR); $stmt->execute(); /* ↓一つ前のページのパスを指定し、処理が終わったらそこに戻る */ header('location:'.$_SERVER["HTTP_REFERER"]); } catch (PDOException $e) { echo $e->getMessage(); } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Sample</title> <link rel="stylesheet" type="text/css" href="form.css"> <link rel="stylesheet" type="text/css" href="formHeader.css"> <meta name="viewport" content="width=device-width,initial-scale=1"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <main> <?php include('./header.php'); ?> <div id="contact"> <h1 id="contact_h1">お問い合わせ</h1> <div id="table"> <p class="p_gray">下記の項目をご記入の上送信ボタンを押してください</p> <p>送信頂いた件につきましては、当社より折り返しご連絡を差し上げます。</p> <p>なお、ご連絡までに、お時間を頂く場合もございますので予めご了承ください。</p> <p><span>*</span>は必須項目となります。</p> <div id="contact_form"> <form action="confirm.php" method="post"> <p>氏名<span>*</span></p> <input type="text" id="name" name="name" placeholder="山田太郎"> <p>フリガナ<span>*</span></p> <input type="text" id="kana" name="kana" placeholder="ヤマダタロウ"> <p>電話番号</p> <input type="text" id="num" name="num" placeholder="09012345678"> <p>メールアドレス<span>*</span></p> <input type="text" id="mail" name="mail" placeholder="test@test.co.jp"> <p class="p_gray">お問い合わせ内容をご記入ください<span>*</span></p> <textarea id="message" name="message"></textarea> <input type="submit" class="submit" id="submit" value="送信"> </form> </section> <!-- DBからデータの取得と表示 --> <?php try{ $dbh = db_open(); $sql = 'SELECT id, name, kana, tel, email, body, created_at FROM contacts'; $statement = $dbh -> query($sql); ?> <section class="DB"> <table> <tr> <th>システムID</th> <th>氏名</th> <th>フリガナ</th> <th>電話番号</th> <th>メールアドレス</th> <th>お問い合わせ内容</th> <th>送信日時</th> </tr> <?php while($row = $statement -> fetch()): ?> <tr> <th><?php echo htmlspecialchars($row['id'], ENT_QUOTES, 'UTF-8')?></th> <th><?php echo htmlspecialchars($row['name'], ENT_QUOTES, 'UTF-8')?></th> <th><?php echo htmlspecialchars($row['kana'], ENT_QUOTES, 'UTF-8')?></th> <th><?php echo htmlspecialchars($row['tel'], ENT_QUOTES, 'UTF-8')?></th> <th><?php echo htmlspecialchars($row['email'], ENT_QUOTES, 'UTF-8')?></th> <th><?php echo htmlspecialchars($row['body'], ENT_QUOTES, 'UTF-8')?></th> <th><?php echo htmlspecialchars($row['created_at'], ENT_QUOTES, 'UTF-8')?></th> <th><a href="edit.php?id=<?php echo (int) $row['id'];?>">編集</a></th> <th><a href="delete.php?id=<?php echo (int) $row['id'];?>">削除</a></th> </tr> <?php endwhile;?> </table> <?php } catch(PDOException $e){ echo '接続失敗'. $e-> getMessage(); exit(); } ?> </section> </div> </div> </div> <?php include('./footer.php'); ?> </main> </body> <script> window.onload = function() { const submit = document.getElementById('submit'); const name = document.getElementById('name'); const kana = document.getElementById('kana'); const num = document.getElementById('num'); const mail = document.getElementById('mail'); const message = document.getElementById('message'); const mailSt = /^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}.[A-Za-z0-9]{1,}$/; const numSt = /^\d*$/; const n = name.value; console.log(submit); console.log(n); submit.addEventListener('click', function(event) { let error = []; if (name.value === "") { error.push("氏名は必須入力です。\n"); } if (name.value.length > 10) { error.push("氏名は10文字以内で入力してください。\n"); } if (kana.value === "") { error.push("フリガナは必須入力です。\n"); } if (kana.value.length > 10) { error.push("フリガナは10文字以内で入力してください。\n"); } if (!numSt.test(num.value)) { error.push("半角数字で入力してください。\n"); } if (mail.value === "") { error.push("メールアドレスは必須入力です。\n"); } if ((!mailSt.test(mail.value)) && (mail.value.length > 0)) { error.push("メールアドレスの形式が不正です。\n"); } if (message.value === "") { error.push("お問い合わせ内容は必須入力です。\n"); } if (error.length > 0) { alert(error); return; } }); }; </script> </html>

試したこと

値の受け渡しができていないので登録されていないと思っています、insert文を使用しPOSTで送られてきた情報のキーから受け渡しを図ったが反応しません、、、

補足情報(FW/ツールのバージョンなど)

xamppを使用しlocalhostで表示
phpのバージョンは7.4.28

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yambejp

2022/04/14 08:10

念のため・・・bindParamをbindValueにしてもだめですか?
m.ts10806

2022/04/14 08:13

db_open 呼び出すところも提示してください。 あと、オートコミットをOFFにしてたりしませんか?
horohorohoroo

2022/04/14 08:14

アドバイスありがとうございます! 修正して試したところ、挙動に変化はありませんでした;;
horohorohoroo

2022/04/14 08:45

オートコミットに関してはいじっていないので、SELECT @@session.autocommit;で確認したところ1が出たのでonだと思います。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。