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

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

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

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

698閲覧

お問合せフォームから送信したデータを正しくphpmyadminに登録したい

退会済みユーザー

退会済みユーザー

総合スコア0

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2023/06/02 05:33

編集2023/06/02 05:59

実現したいこと

お問合せフォームから送信したデータを正しくphpmyadminに登録したい

前提

お問合せ画面で情報を入力すると、
イメージ説明

phpmyadminに↓登録されますが、メールアドレスとお問い合わせの部分が正しく登録されません
イメージ説明


結果↓のようになってしまいます。4の山田太郎のようにデータが登録されるのが結果的にやりたいことです。
イメージ説明

該当のソースコード

//contact.php <?php session_start(); ?> <!DOCTYPE html> <html lang="en"> <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>Document</title> <link rel="stylesheet" type="text/css" href="contact.css"> <script type="text/javascript" src="https://code.jquery.com/jquery-3.4.1.min.js"></script> </head> <body> <?php include('header.php'); ?> <div class="contact"> <h2>お問い合わせ</h2> <div class="contact-form"> <p>下記の項目をご記入の上送信ボタンを押してください</p> </div> <div class="contact-text"> <p>送信頂いた件につきましては、当社より折り返しご連絡を差し上げます。</p> <p>なお、ご連絡までに、お時間を頂く場合もございますので予めご了承ください。</p> <p><span>*</span>は必須項目となります。</p> </div> <form method="post" action="confirm.php"> <div class="contact-input"> <p>氏名<span>*</span></p><?php if(isset($_SESSION['result_name'])) { echo "<font color=\"red\">{$_SESSION['result_name']}</font>"; }?> <input type="text" name="name" id="mane" placeholder=" 山田太郎" value="<?php if(isset($_SESSION['name_ret'])) { echo "{$_SESSION['name_ret']}"; } ?>"> <p>フリガナ<span>*</span></p><?php if(isset($_SESSION['result_ruby'])) { echo "<font color=\"red\">{$_SESSION['result_ruby']}</font>"; }?> <input type="text" name="ruby" id="ruby" placeholder=" ヤマダタロウ" value="<?php if(isset($_SESSION['ruby_ret'])) { echo "{$_SESSION['ruby_ret']}"; } ?>"> <p>電話番号(ハイフンなし)<span></span></p><?php if(isset($_SESSION['result_phone'])){ echo "<font color=\"red\">{$_SESSION['result_phone']}</font>"; }?> <input type="text" name="phone" id="phone" placeholder=" 09012345678" value="<?php if(isset($_SESSION['phone_ret'])) { echo "{$_SESSION['phone_ret']}"; } ?>"> <p>メールアドレス<span>*</span></p><?php if(isset($_SESSION['result_email'])) { echo "<font color=\"red\">{$_SESSION['result_email']}</font>"; }?> <input type="text" name="email" id="email" placeholder=" test@test.co.jp" value="<?php if(isset($_SESSION['email_ret'])) { echo "{$_SESSION['email_ret']}"; }?>"> </div> <div class="contact-form"> <p>お問い合わせ内容をご記入ください<span>*</span></p> </div> <div class="contact-textarea"><?php if(isset($_SESSION['result_contact'])) { echo "<font color=\"red\">" . htmlspecialchars($_SESSION['result_contact']) . "</font>"; }?> <textarea type="text" name="contact" id="contact"><?php if(isset($_SESSION['contact_ret'])) { echo htmlspecialchars($_SESSION['contact_ret']); }?></textarea> </div> <div class="contact-button"><button onclick="return check()" type="submit" name="submit" class="submit">送 信</button></div> </form> </div> <?php require_once('database.php'); try{ $pdo->beginTransaction(); $sql = "SELECT * FROM contacts"; $stmt = $pdo->query($sql); $pdo->commit(); }catch (PDOException $error) { $pdo->rollBack(); header('Content-Type: text/plain; utf8_general_ci', true, 500); exit($error->getMessage()); } ?> <h3>データ</h3> <table class="db-table"> <tr> <th nowrap class="id">ID</th> <th nowrap class="name">氏名</th> <th nowrap class="ruby">フリガナ</th> <th nowrap class="phone">電話番号</th> <th nowrap class="email">メールアドレス</th> <th nowrap class="contact">お問い合わせ内容</th> <th nowrap class="created_at">送信日時</th> <th nowrap class="edit">編集</th> <th nowrap class="delete">削除</th> </tr> <?php foreach($stmt as $value): ?> <td nowrap class="id"><?= $value['id']."<br>";?></td> <td nowrap class="name"><?= $value['name']."<br>";?></td> <td nowrap class="ruby"><?= $value['ruby']."<br>";?></td> <td nowrap class="phone"><?= $value['phone']."<br>";?></td> <td nowrap class="email"><?= $value['email']."<br>";?></td> <td class="contact"><?= $value['contact']."<br>";?></td> <td class="created_at"><?= $value['created_at']."<br>";?></td> <td class="edit"><a href="edit.php?id=<?= $value["id"];?>">編集</a></td> <td class="delete"><a id='delete' href="delete.php?id=<?= $value["id"];?>" onclick="return confirm('本当に削除しますか?')">削除</a></td> </tr> <?php endforeach ?> </table> <script> function check() { var result = ""; var aaa = document.getElementById("phone"); var phoneValue = aaa.value; var bbb = document.getElementById("email"); var emailvalue = bbb.value; if ($("input[name='name']").val() == '' || $("input[name='name']").val().length >= 10) { var name = "氏名は必須入力事項です。10文字以内で入力してください。\n"; var result = result + name; } if ($("input[name='ruby']").val() == '' || $("input[name='ruby']").val().length >= 10) { var ruby = "フリガナは必須入力事項です。10文字以内で入力してください。\n"; var result = result + ruby; } if ($("input[name='phone']").val() != '' && !phoneValue.match(/^[0-9]+$/)) { var phone = "電話番号は0-9の半角数字でご入力ください(ハイフンなし)\n"; var result = result + phone; } if ($("input[name='email']").val() == '' || !emailvalue.match(/.+@.+\..+/)) { var email = "メールアドレスは正しくご入力ください。\n"; var result = result + email; } if ($("textarea[name='contact']").val() == '') { var contact = "お問い合わせ内容は必須入力事項です。\n"; var result = result + contact; } if (result === "") { return true; } else { alert(result); } }; </script> <?php include 'footer.php'; ?> </body> </html>
//database.php <?php define('DB_HOST', 'localhost'); define('DB_NAME', 'cafe'); define('DB_USER', 'blog_user'); define('DB_PASSWORD', 'ここはPW入力しています'); try { $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD); } catch (PDOException $e) { exit('データベースに接続できませんでした。'.$e->getMessage()); } $pdo->exec('SET NAMES utf8'); ?>

調査したこと、試したこと

メールアドレスとお問い合わせ内容の表示が正しくなるよう、該当の行を入れ替えたー改善なし

<td nowrap class="email"><?= $value['email']."<br>";?></td> <td class="contact"><?= $value['contact']."<br>";?></td>

html

1 2<form method="POST" action="submit.php"> 3 <label for="name">氏名:</label> 4 <input type="text" name="name" required><br> 5 6 <label for="ruby">フリガナ:</label> 7 <input type="text" name="ruby" required><br> 8 9 <label for="phone">電話番号:</label> 10 <input type="text" name="phone" required><br> 11 12 <label for="email">メールアドレス:</label> 13 <input type="email" name="email" required><br> 14 15 <label for="contact">お問い合わせ内容:</label> 16 <textarea name="contact" required></textarea><br> 17 18 <input type="submit" value="送信"> 19</form>

submit.php

1<?php 2require_once('database.php'); 3 4if ($_SERVER['REQUEST_METHOD'] === 'POST') { 5 $name = $_POST['name']; 6 $ruby = $_POST['ruby']; 7 $phone = $_POST['phone']; 8 $email = $_POST['email']; 9 $contact = $_POST['contact']; 10 11 try { 12 $pdo->beginTransaction(); 13 14 $sql = "INSERT INTO contacts (name, ruby, phone, email, contact, created_at) VALUES (:name, :ruby, :phone, :email, :contact, NOW())"; 15 $stmt = $pdo->prepare($sql); 16 $stmt->bindParam(':name', $name); 17 $stmt->bindParam(':ruby', $ruby); 18 $stmt->bindParam(':phone', $phone); 19 $stmt->bindParam(':email', $email); 20 $stmt->bindParam(':contact', $contact); 21 $stmt->execute(); 22 23 $pdo->commit(); 24 25 echo "データの登録が完了しました。"; 26 } catch (PDOException $error) { 27 $pdo->rollBack(); 28 header('Content-Type: text/plain; utf8_general_ci', true, 500); 29 exit($error->getMessage()); 30 } 31} 32?> 33

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

・MAMPを使用
・phpmyadminを使用
• DB名: cafe
• テーブル名:contacts

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

どうでも良いけどphpMyAdminはデータベースをブラウザで管理できるようにするものであってphpMyAdminにデータを保存するわけではない。

confirm.phpの内容が分からんけど、confirm.phpがおかしいんでしょ。
submit.phpで直接送信して正しく保存されるのなら尚更。

投稿2023/06/03 03:32

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問